<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://tj-encyclopedie.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Henrique</id>
	<title>Tj-encyclopédie - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://tj-encyclopedie.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Henrique"/>
	<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/Sp%C3%A9cial:Contributions/Henrique"/>
	<updated>2026-07-08T11:51:16Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique&amp;diff=4054</id>
		<title>Utilisateur:Henrique</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique&amp;diff=4054"/>
		<updated>2006-10-15T17:05:38Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Mes contributions ici */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ma motivation pour participer à ce site est l&#039;idée que la connaissance libère de l&#039;ignorance et des préjugés qui nous conduisent à des passions qui nous font le plus souvent agir contre notre intérêt, notre bonheur, notre liberté en nous faisant croire tout le contraire. &lt;br /&gt;
&lt;br /&gt;
==Mes contributions ici==&lt;br /&gt;
*[[Special:Contributions/Henrique|Liste complète]]&lt;br /&gt;
&lt;br /&gt;
*[[Utilisateur:Henrique/Bac à sable|Mon espace de tests]]&lt;br /&gt;
&lt;br /&gt;
== A faire [[Image:A faire.png]]== &lt;br /&gt;
* Faire un modèle pour pour &amp;quot;fait&amp;quot;. Il suffit pour s&#039;en servir d&#039;utiliser le code suivant : &amp;lt;nowiki&amp;gt;{{fait}}&amp;lt;/nowiki&amp;gt;. Ce qui donne : {{fait}}&lt;br /&gt;
* Répondre à Coc sur la question de l&#039;avenir de ce site... {{fait}}&lt;br /&gt;
* Finir [[Apostasie]], faire une page de références.&lt;br /&gt;
* Revoir l&#039;article sur l&#039;[[exclusion]], notamment la dernière partie, critique.&lt;br /&gt;
* Ajouter à l&#039;article [[organisation]] un paragraphe - voire une sous-page - sur la question &amp;quot;Dieu a-t-il besoin d&#039;une organisation ?&amp;quot; en tenant compte des arguments de Thierry.&lt;br /&gt;
* Travailler la page d&#039;accueil de &amp;quot;Communauté&amp;quot; en tant que &amp;quot;Projet&amp;quot;, en intégrant notamment une page pour la liste des modèles déjà faits.&lt;br /&gt;
* Revoir le menu de navigation avec Charles. {{fait}}&lt;br /&gt;
* Voir à mettre du contenu dans les pages attachées à TJ-Encyclopedie (conventions de nommage, Avertissements, FAQ etc.) &lt;br /&gt;
* Projets d&#039;articles : [[Utilisateur:Henrique/Manipulation]], et [[Utilisateur:Henrique/Nom de Dieu]] en partant d&#039;un échange actuel avec un futur TJ.&lt;br /&gt;
* Autres projets [[Utilisateur:Henrique/Satan]], [[Utilisateur:Henrique/Pourquoi devient-on Témoin de Jéhovah ?]], [[Utilisateur:Henrique/Que reproche-t-on aux Témoins de Jéhovah ?]], [[Utilisateur:Henrique/Comment aider une personne à sortir de l&#039;organisation des Témoins de Jéhovah ?]], [[Utilisateur:Henrique/Comment sortir de l&#039;organisation des Témoins de Jéhovah ?]]&lt;br /&gt;
&lt;br /&gt;
==Quelques sites à mon actif==&lt;br /&gt;
*http://tjwt.free.fr&lt;br /&gt;
*http://www.tj-liberte.org&lt;br /&gt;
*http://www.spinozaetnous.org&lt;br /&gt;
&lt;br /&gt;
== Outils ==&lt;br /&gt;
* [[Utilisateur:Henrique/monobook.js]]&lt;br /&gt;
* [[Utilisateur:Henrique/monobook.css]]&lt;br /&gt;
* [[Utilisateur:Henrique/popups.js]]&lt;br /&gt;
* [[Utilisateur:Henrique/menu.css]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion:Manipulation_chez_les_T%C3%A9moins_de_J%C3%A9hovah&amp;diff=3969</id>
		<title>Discussion:Manipulation chez les Témoins de Jéhovah</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion:Manipulation_chez_les_T%C3%A9moins_de_J%C3%A9hovah&amp;diff=3969"/>
		<updated>2006-08-27T18:07:33Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Note sur le devenir de l&amp;#039;article */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bien vu pour la partie générale:&lt;br /&gt;
&lt;br /&gt;
Je pense ajouter aussi des idées sur le contrôle de la pensée et le &amp;quot;lavage de cerveau&amp;quot;&lt;br /&gt;
Charles&lt;br /&gt;
&lt;br /&gt;
:J&#039;ai ajouté une redirection sur cet article : [[Manipulation mentale]], plus facile à manier pour les liens internes, d&#039;autant qu&#039;il me semble que certains liens avaient été créés déjà. Mais je pense qu&#039;il serait plus logique que ce soit [[La manipulation chez les Témoins de Jéhovah]] qui redirige vers [[Manipulation mentale]] puisqu&#039;on est sur un site consacré aux TJ : il est évident que c&#039;est traité sous cet angle... [[Utilisateur:Henrique|Henrique]] 11 août 2006 à 16:29 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: C&#039;est en fait une pure tactique de référencement dans les moteurs de recherches qui fait que je préfère qu&#039;on ajoute &amp;quot;chez les Témoins de Jéhovah&amp;quot; dans cet article ;-)&lt;br /&gt;
:: --[[Utilisateur:Tjrecherches|Tjrecherches]] 12 août 2006 à 15:07 (CEST)&lt;br /&gt;
:::&lt;br /&gt;
::: Tu sais comment Google se comporte avec les redirections ? Il me semble que j&#039;ai plusieurs fois tapé des mots clés qui m&#039;ont renvoyé à une page de Wikipédia qui elle-même redirigeait sur une autre page. En ce sens quelqu&#039;un qui taperait &amp;quot;Manipulation Témoins de Jéhovah&amp;quot; pourrait obtenir sans problème un lien vers la page &amp;quot;La manipulation chez les Témoins de Jéhovah&amp;quot; qui elle-même redirigerait sur &amp;quot;Manipulation&amp;quot; ou &amp;quot;Manipulation mentale&amp;quot; qui restent plus faciles à utiliser dans les liens internes que le titre actuel (d&#039;où des statistiques plus justes sur l&#039;utilisation interne de cet article). Mais bon, je n&#039;en fais pas non plus une religion :-) [[Utilisateur:Henrique|Henrique]]&lt;br /&gt;
&lt;br /&gt;
== Note sur le devenir de l&#039;article ==&lt;br /&gt;
Après la sous-partie &amp;quot;bonne ou mauvaise manipulation ?&amp;quot;, une autre sur la question de savoir si on manipule toujours volontairement serait une bonne idée. Je pense aussi qu&#039;après la partie générale sur les différentes formes de manipulation, il serait intéressant et à vrai dire assez facile de voir point par point dans une deuxième partie dans quelle mesure elles s&#039;appliquent ou pas chez les Témoins de Jéhovah. Cette partie pourrait peut-être intégrer la question des différents vecteurs et canaux de manipulation utilisés (par exemple la répétition pavlovienne des mêmes messages aux réunions au sujet desquelles les dirigeants insistent pour rappeler leur importance &amp;quot;spirituelle&amp;quot;). Je verrais alors la question des étapes de la manipulation dans un troisième temps comme une façon de tout remettre en ordre d&#039;une façon chronologique. [[Utilisateur:Henrique|Henrique]] 21 août 2006 à 18:42 (CEST)&lt;br /&gt;
&lt;br /&gt;
: A la lecture de tes contributions intéressantes, il me semble qu&#039;on pourrait mêler &#039;&#039;&#039;ensemble&#039;&#039;&#039; la théorie avec la réalité TJ ? Du style dans &amp;quot;l&#039;amorçage&amp;quot; parler du fait de prendre &#039;&#039;&#039;juste&#039;&#039;&#039; un périodique et par la suite une nouvelle visite qui n&#039;engagent tous deux à rien.&lt;br /&gt;
: --[[Utilisateur:Tjrecherches|Tjrecherches]] 21 août 2006 à 20:53 (CEST)&lt;br /&gt;
::&lt;br /&gt;
::Oui tu as raison car la partie générale commence à être trop longue pour une partie simplement générale. Je vais voir comment on pourrait changer le plan... PS : chez moi les icônes au dessus de la fenêtre d&#039;édition ne marchent plus (alors qu&#039;elles marchent sous d&#039;autres mediawiki)... [[Utilisateur:Henrique|Henrique]] 27 août 2006 à 20:07 (CEST)&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=T%C3%A9moignages_d%27entraide_entre_T%C3%A9moins_de_J%C3%A9hovah&amp;diff=3912</id>
		<title>Témoignages d&#039;entraide entre Témoins de Jéhovah</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=T%C3%A9moignages_d%27entraide_entre_T%C3%A9moins_de_J%C3%A9hovah&amp;diff=3912"/>
		<updated>2006-08-14T11:40:07Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les Témoins de Jéhovah se présentent comme &amp;quot;une famille internationale de frères&amp;quot;, pourtant des témoignages d&#039;ex-membres dépeignent une autre réalité. En classant par date et lieu, quelques exemples seront recensés ici :&lt;br /&gt;
&lt;br /&gt;
===France===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;1993&#039;&#039;&#039; Congrégation Lyon Sud-Est : Un homme témoin de Jéhovah baptisé est licencié pour faute lourde et sans indemnités de chômage (les prud&#039;hommes l&#039;innocenteront). Son père ancien est le seul à subvenir à ses besoins. Alors que l&#039;auteur de ces lignes ne vient qu&#039;avec un sac contenant quelques paquets de pâtes pour lui apporter un peu de soutien, l&#039;homme tombe en sanglot : depuis 6 mois personne de sa congrégation ne l&#039;a aidé.&lt;br /&gt;
&lt;br /&gt;
===États-Unis===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Août 2006&#039;&#039;&#039; Orlando : Une survivante Témoin de Jéhovah du cyclone Katrina, bien que reconnaissant avoir bénéficié d&#039;une certaine aide de la part de son mouvement, se plaint dans un journal de ne pas avoir assez d&#039;amis et de famille pour supporter sa situation précaire un an après le cyclone. [http://www.tj-encyclopedie.org/forum/viewtopic.php?t=22]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Intérieur]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Comment_sortir_de_l%27organisation_des_T%C3%A9moins_de_J%C3%A9hovah_%3F&amp;diff=2945</id>
		<title>Utilisateur:Henrique/Comment sortir de l&#039;organisation des Témoins de Jéhovah ?</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Comment_sortir_de_l%27organisation_des_T%C3%A9moins_de_J%C3%A9hovah_%3F&amp;diff=2945"/>
		<updated>2006-05-06T14:25:43Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Bibliographie */ complétée&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On peut &amp;quot;sortir&amp;quot; &#039;&#039;&#039;physiquement&#039;&#039;&#039; facilement de l&#039;Organisation des Témoins de Jéhovah (OTJ). Il n&#039;y a en effet pas de menaces physiques directes de la part de cette organisation à l&#039;encontre de ses anciens adeptes. Mais il est beaucoup plus difficile d&#039;en sortir &#039;&#039;&#039;mentalement&#039;&#039;&#039; car tout TJ a été manipulé à son insu pendant des années, de sorte qu&#039;il a intégré lui-même les obstacles à sa propre sortie. Ces obstacles comprennent les doctrines concernant sa mort prochaine, à &amp;quot;&#039;&#039;&#039;Armaguédon&#039;&#039;&#039;&amp;quot;, la crainte d&#039;être jugé négativement par ceux qu&#039;il a appris à considérer comme ses frères et même ses aînés (il subira d&#039;ailleurs nombres de pressions psychologiques visant à le culpabiliser ou à réveiller ses peurs), et la crainte de perdre définitivement les bienfaits, réels ou illusoires, dont il jouissait dans l&#039;OTJ.&lt;br /&gt;
&lt;br /&gt;
== Faut-il sortir de cette organisation ? ==&lt;br /&gt;
Le pour et le contre&lt;br /&gt;
&lt;br /&gt;
== Difficultés de sortir de cette organisation ==&lt;br /&gt;
&lt;br /&gt;
On peut ainsi être physiquement hors de l&#039;OTJ tout en étant resté mentalement partie intégrante de cette organisation. Il s&#039;en suit un état d&#039;angoisse ou de morosité tel qu&#039;il devient très facile de rechuter, c&#039;est-à-dire de retourner physiquement dans cette organisation ou une autre secte ou mouvement sectaire qui pourra donner l&#039;illusion de gagner au change. On peut aussi sombrer dans un état d&#039;angoisse permanent qui aboutira soit à une névrose, soit dans le pire des cas au suicide. Une autre possibilité encore est de se reconstruire sa propre secte dans sa tête quitte à la réaliser extérieurement dans la fondation d&#039;une nouvelle organisation sectaire.&lt;br /&gt;
&lt;br /&gt;
=== Quand est-on véritablement sorti de l&#039;OTJ et de tout processus sectaire ? ===&lt;br /&gt;
Une [[secte]] est une organisation sociale particulière &#039;&#039;&#039;en rupture avec la vie sociale en général&#039;&#039;&#039;. Cette rupture est fondée sur le sentiment d&#039;une élection divine qui élèverait l&#039;adepte au-dessus du reste de l&#039;humanité. Le reste de l&#039;humanité est abstraitement accusé de tous les maux qui peuvent exister. Chez les TJ, cette accusation est radicalisée avec l&#039;idée que l&#039;humanité est dirigée en sous-main par [[Satan|Satan le Diable]]. Mais cette rupture implique un sentiment d&#039;anxiété plus ou moins caché, &#039;&#039;&#039;une rupture intérieure&#039;&#039;&#039; : comme pour faire partie du peuple élu, il faut faire preuve extérieurement et intérieurement de qualité quasiment surhumaines, l&#039;adepte vit dans l&#039;inquiétude permanente d&#039;être découvert dans ses &amp;quot;mauvaises&amp;quot; intentions, de ne pas correspondre au modèle uniforme que la secte exige de ses adeptes, et donc d&#039;être rabaissé au rang de l&#039;humanité inférieure, celle qui ne sera pas &amp;quot;sauvée&amp;quot; à Armaguédon&#039;&#039;&#039;. Pour être véritablement sorti de la secte, il faut donc être parvenu à un état dans lequel on vit vraiment en accord avec soi-même&#039;&#039;&#039;, où les moments de doute peuvent aboutir à des évolutions positives de la personnalité et non à l&#039;inhibition et à la frustration. Cet état d&#039;accord avec soi-même dans lequel on peut évoluer réellement, nous pouvons l&#039;appeler &amp;quot;joie de vivre&amp;quot;. Cette joie de vivre se traduit extérieurement par un engagement dans la vie sociale environnante en général : au lieu d&#039;accuser le monde de tous les maux, celui qui est véritablement sorti de l&#039;enfermement sectaire devient un citoyen à part entière, il assume sa responsabilité d&#039;adulte de contribuer au bien commun. Il renonce à l&#039;illusion d&#039;un pseudo nouveau monde parfait dans lequel Dieu prendrait tout en charge et où tel un éternel enfant, il se laisserait en permanence dicter sa conduite par une instance supérieure. Il admet que le monde tel qu&#039;il existe n&#039;est pas que négatif et que chacun peut contribuer individuellement à l&#039;améliorer, même partiellement et progressivement. De plus, ses actions dans ce monde ne sont plus motivées par une volonté prosélyte, il ne cherche plus à donner une image pour séduire, autant que la pression sociale le lui permet, ses actions reflètent sa personnalité.&lt;br /&gt;
&lt;br /&gt;
=== Méthode générale ===&lt;br /&gt;
Pour sortir mentalement de l&#039;OTJ, il faut, comme cela suit des paragraphes précédents, briser les obstacles eux-mêmes mentaux à une libération complète à l&#039;égard de cette organisation. Le mental se compose de deux parties indissolublement liées, mais qu&#039;il faut distinguer pour les besoins de l&#039;analyse : d&#039;une part l&#039;intellect, d&#039;autre part l&#039;affectivité. Il y aura donc deux aspects à une sortie de l&#039;anxiété sectaire. Le premier consiste en une série de prises de conscience intellectuelles, au moyen d&#039;arguments les plus clairs possibles, de l&#039;insuffisance et du caractère erroné des doctrines TJ. Mais ce premier aspect est loin de suffire car il n&#039;a pas été l&#039;élément déterminant dans l&#039;ancienne adhésion à la secte : ce qui a poussé un individu à devenir TJ, ce sont des motivations affectives plus moins refoulées, donc peu ou pas conscientes. Par conséquent, si on ne procède qu&#039;à une approche intellectuelle, on n&#039;opérera qu&#039;à un niveau superficiel ; de nombreuses résistances se manifesteront car l&#039;affectivité ne suivra pas. Il faut donc que cette libération aie un second aspect : une prise de conscience des motivations affectives qui ont déterminé l&#039;individu à adhérer à l&#039;OTJ. Une fois que cette élucidation aura été effectuée, l&#039;ex-adepte pourra découvrir par lui-même comment il a pu se laisser manipuler aussi facilement, il évitera de tomber dans les mêmes pièges ou pièges similaires et il pourra œuvrer à une évolution positive de la structure de son caractère, évolution lui permettant de connaître une joie de vivre durable.&lt;br /&gt;
&lt;br /&gt;
=== Étapes de la libération ===&lt;br /&gt;
Il y aura donc trois étapes à une sortie complète, quoiqu&#039;elles pourront se télescoper dans le temps :&lt;br /&gt;
* Prise de conscience intellectuelle du caractère erroné doctrines TJ. Cette étape est déjà difficile par elle-même car si elles sont une remise en question de la Watch Tower Society (nom officiel de l&#039;organisation des Témoins de Jéhovah), l&#039;adepte s&#039;est tellement laisser manipuler par ces enseignements qu&#039;il s&#039;est totalement identifié à la WTS. Remettre en question cette dernière, c&#039;est donc se remettre en question soi-même. Il semble donc que pour que cette étape puisse être efficace, il faille avoir commencé à prendre conscience par soi-même du caractère faussement satisfaisant de la vie de Témoin de Jéhovah.&lt;br /&gt;
* Prise de conscience affective des motivations morbides qui ont déterminé l&#039;adhésion à la secte. C&#039;est sans doute l&#039;étape la plus difficile car elle remet en cause directement l&#039;intéressé par une mise en évidence de ses contradictions internes. Ces contradictions constituent ce qu&#039;on appelle la culpabilité (état dans lequel on est en rupture avec soi-même). Il ne s&#039;agira plus des fausses culpabilités dont se recouvre ordinairement le TJ, il s&#039;agira de culpabilités refoulées et donc devenues inconscientes et donc bien plus difficiles à mettre au jour. Cette élucidation de ses motivations, c&#039;est l&#039;intéressé lui-même qui doit l&#039;accomplir. Il peut se faire aider par un psychologue ou par des amis capables d&#039;une certaine &amp;quot;neutralité bienveillante&amp;quot;, mais au final, c&#039;est lui qui effectue cette démarche d&#039;élucidation. &lt;br /&gt;
* Construction personnelle d&#039;un idéal de vie qui puisse orienter l&#039;existence de façon vraiment satisfaisante et non plus malsaine et inhibitrice comme auparavant.&lt;br /&gt;
&lt;br /&gt;
== Prise de conscience intellectuelle ==&lt;br /&gt;
&lt;br /&gt;
=== Arguments théologiques ===&lt;br /&gt;
&lt;br /&gt;
Il s&#039;agit ici de voir comment une interprétation méthodique et honnête de la Bible conduit à rejeter ou remettre sérieusement en doute des éléments de doctrines, présentés par la WT comme des vérités absolues. Ces arguments peuvent une bonne façon de commencer en douceur.&lt;br /&gt;
&lt;br /&gt;
Le fondement de la doctrine TJ, selon lequel notre époque est celle de la fin du monde repose sur une date en particulier : 1914. Celle-ci aurait été annoncée dans la Bible comme étant la date du commencement de la fin. Un [[607|article]] est consacré à cette question sur ce site.&lt;br /&gt;
&lt;br /&gt;
===Arguments de bon sens sur la valeur de la Bible ===&lt;br /&gt;
&lt;br /&gt;
La Bible peut être prise comme un précieux recueil contenant beaucoup de sagesse. Mais il est bon de ne pas tout prendre au pied de la lettre («la lettre tue, l&#039;esprit vivifie») contrairement au petit enfant qui ne comprend les contes qu&#039;on lui raconte qu&#039;au premier degré (alors qu&#039;ils ont effectivement une vérité au second degré). La doctrine selon laquelle &amp;quot;toute écriture&amp;quot; doit être prise comme parole divine est malsaine. Elle empêche toute formation d&#039;un jugement personnel et responsable, c&#039;est aussi la porte ouverte à une prise au sérieux extrême et excessive de ce livre qui selon les interprétations peut aboutir à des actes particulièrement dangereux. Ces arguments de bon sens permettent de prendre recul par rapport à une interprétation dogmatique de la Bible.&lt;br /&gt;
&lt;br /&gt;
Passages bibliques qui pris au premier degré peuvent être dangereux :&lt;br /&gt;
:&amp;lt;CiteBible&amp;gt;Luc 9:50&amp;lt;/CiteBible&amp;gt; Mais jésus lui dit :  «Celui qui n&#039;est pas contre vous est pour vous» ou &amp;lt;CiteBible&amp;gt;Mat 12:30&amp;lt;/CiteBible&amp;gt; «Qui n&#039;est pas avec moi est contre moi»&lt;br /&gt;
: Histoire de Jéphté &amp;lt;CiteBible&amp;gt;Juges 11:29-40&amp;lt;/CiteBible&amp;gt;&lt;br /&gt;
: Enfants gloutons&lt;br /&gt;
: Femme à qui on doit couper la main si elle a touché les parties d&#039;un homme pour défendre son mari.&lt;br /&gt;
&lt;br /&gt;
=== Arguments logiques ===&lt;br /&gt;
* Impossibilité logique de parvenir à la fin de &amp;quot;l&#039;œuvre d&#039;évangélisation&amp;quot; en raison de la croissance démographique mondiale, étant donné aussi le &amp;quot;retard&amp;quot; pris en Chine, en Inde et en Russie.&lt;br /&gt;
* L&#039;argument du diable&lt;br /&gt;
* Dieu : un être infini&lt;br /&gt;
&lt;br /&gt;
===Arguments moraux===&lt;br /&gt;
&lt;br /&gt;
* Agir par devoir et non pour obtenir un paradis en récompense&lt;br /&gt;
* L&#039;impossibilité d&#039;être heureux dans un système qui brime l&#039;initiative individuelle, propose un défi simpliste qui conduit à méconnaître les défis réels de la vie d&#039;homme et qui au final est impossible à remporter&lt;br /&gt;
* Injustice d&#039;un système qui doit passer par la destruction de millions d&#039;innocents &lt;br /&gt;
* Préférer la menace de la privation d&#039;une vie éternelle incertaine à la privation certaine de liberté et de bonheur&lt;br /&gt;
&lt;br /&gt;
===Informations concernant la Société Watch Tower===&lt;br /&gt;
* Les origines houleuses de la Société, connexions avec l&#039;adventisme&lt;br /&gt;
* Différents scandales (Prophéties inaccomplies, Hitler, ONU...) &lt;br /&gt;
&lt;br /&gt;
== Prise de conscience affective==&lt;br /&gt;
&lt;br /&gt;
Se poser des questions du type : si les dirigeants de la WT devenaient fous et qu&#039;ils déclarent du jour au lendemain qu&#039;il faut prendre les armes contre le Monde, est-ce que tu les suivrais encore ? (précédents revirements historiques de la WT). S&#039;ils déclaraient qu&#039;il faut brûler soi-même les hommes politiques, que ferais-tu ? L&#039;adepte est alors amené, pour une fois, à devoir prendre une décision entièrement personnelle. En principe, il devrait répondre que de toute façon cela n&#039;arrivera jamais, c&#039;est impossible, Dieu ne permettrait pas cela. Mais Dieu a parfois abandonné son peuple, pourquoi n&#039;abandonnerait-il pas la WT ? Et alors pourquoi les dirigeants de la WT ne pourraient-ils devenir fous ? Si donc ça arrivait, qu&#039;est-ce que tu ferais ? Si il n&#039;est pas trop embrigadé, il devrait finir par dire qu&#039;il laisserait tomber la WT. Il est alors amené à prendre conscience qu&#039;il possède un pouvoir de décision qui peut être réellement indépendant de la WT. C&#039;est un début non négligeable.&lt;br /&gt;
&lt;br /&gt;
=== Comprendre les mécanismes de l&#039;embrigadement ===&lt;br /&gt;
&lt;br /&gt;
Usage de la manipulation&lt;br /&gt;
&lt;br /&gt;
=== Comprendre sa part de responsabilité dans l&#039;embrigadement ===&lt;br /&gt;
&lt;br /&gt;
=== Se débarrasser de la terreur vis-à-vis du diable ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Construction d&#039;un idéal de vie lucide ==&lt;br /&gt;
&lt;br /&gt;
=== Devenir soi-même ===&lt;br /&gt;
Le sens de la vie : développer ses capacités humaines (comprendre, faire comprendre, agir en vue de valeurs universelles, aimer) et ses talents personnels plutôt que d&#039;espérer jouir de résultats qui n&#039;en dépendent pas ou trop peu. Vivre ses rêves plutôt que rêver sa vie.&lt;br /&gt;
&lt;br /&gt;
=== Cultiver une liberté authentique de pensée ===&lt;br /&gt;
Le sens du recul critique vis-à-vis de ses propres opinions et désirs n&#039;est pas une tristesse mais une joie plus subtile que vivre dans un rêve. Le sens de l&#039;humour - savoir se moquer de ses propres démons comme de ses tabous sacrés - est beaucoup plus réjouissant que se prendre au sérieux.&lt;br /&gt;
&lt;br /&gt;
=== S&#039;entourer de personnes compréhensives ===&lt;br /&gt;
Apprendre à parler de ses difficultés avec les siens ou avec des personnes ayant connu une situation similaire. Savoir demander de l&#039;aide en cas de besoin.&lt;br /&gt;
&lt;br /&gt;
=== Chercher une forme de spiritualité non-sectaire ===&lt;br /&gt;
Distinguer spiritualité et religiosité.&lt;br /&gt;
* La science et la philosophie comme formes de spiritualité.&lt;br /&gt;
* Ne pas ignorer l&#039;existence de spiritualités laïques : http://www.unisson06.org/spiritualite_homepage.htm&lt;br /&gt;
* En ce qui concerne la peur de la mort physique, comprendre qu&#039;il est biologiquement impossible de l&#039;éviter, sauf clonage mais est-ce vraiment ce qui est souhaité ?&lt;br /&gt;
* Si besoin de trouver un groupe dans lequel vivre une spiritualité religieuse, savoir reconnaître un groupe religieux authentiquement respectueux de la liberté individuel et de la famille d&#039;un groupe sectaire qui n&#039;en donne que les apparences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bibliographie ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour comprendre le phénomène sectaire, afin de mieux s&#039;en libérer.&#039;&#039;&#039;&lt;br /&gt;
*  &#039;&#039;La mécanique des sectes&#039;&#039;, de Jean-Marie ABGRALL, Payot. L&#039;auteur décrit la stratégie des sectes et le processus de mise sous dépendance de l’adepte à son gourou et à son groupe. La manipulation mentale pratiquée lors du recrutement et au cours du processus d’aliénation des adeptes emprunte aux techniques modernes de communication, de marketing, de persuasion et de conditionnement.  &lt;br /&gt;
* &#039;&#039;Les sectes mangeuses d&#039;homme : comprendre le phénomène sectaire totalitaire&#039;&#039;, de Max Bourdelique, L&#039;Atelier de l&#039;archer. L’auteur s’attache tout particulièrement à mettre en lumière le jeu des deux logiques dont dispose le fonctionnement psychique et montre comment «la logique sectaire est une forme pervertie et plus ou moins régressive de la logique primaire».  &lt;br /&gt;
* &#039;&#039;Echec d&#039;une prophétie annoncée&#039;&#039; de Festinger Léon et d&#039;autres auteurs, PUF. Sur la base de l&#039;étude d&#039;une petite secte soucoupiste, les auteurs se proposent d&#039;expliquer comment les membres d’un groupe croyant fermement en une prophétie annoncée par leur leader, sont renforcés dans leur foi, alors que les événements prédits ne se manifestent pas. Parallèles intéressants à faire avec les Témoins de Jéhovah.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour aider à une reconstruction psychologique saine de soi-même.&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Psychologie de la motivation&#039;&#039;, de Paul Diel. Petite bibliothèque Payot. Pour comprendre en profondeur les fondements de la personnalité humaine et son besoin de s&#039;illusionner.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour découvrir d&#039;autres formes de spiritualité&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Traité du désespoir et de la Béatitude&#039;&#039;, d&#039;André Comte-Sponville. Une philosophie et en même temps une spiritualité matérialiste et athée de l&#039;existence humaine.&lt;br /&gt;
* &#039;&#039;Initiation à la vie bienheureuse - Doctrine de la religion&#039;&#039;, de Fichte. Approche philosophique se voulant également chrétienne de l&#039;existence humaine.&lt;br /&gt;
* &#039;&#039;Conversations avec Dieu&#039;&#039; de Neale Donald Walsch. Ariane. Propose une vision ouverte de Dieu et de la relation de l&#039;homme avec lui. Certains y voient une inspiration assez &amp;quot;new age&amp;quot;, bien que l&#039;auteur s&#039;en défende. A l&#039;avantage d&#039;inviter chacun à vérifier en lui-même la véracité de ce qui est dit et à ne rien croire sur parole. On espère du moins que ceux qui semblent s&#039;organiser autour des écrits de cet auteur ne vont pas en faire le prophète d&#039;un message indiscutable. Dieu est présenté de façon relativement logique : non un Dieu haineux et vengeur, mais acceptant toute l&#039;humanité comme sa responsabilité et invitant chacun à assumer sa pleine et entière liberté.&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Que_reproche-t-on_aux_T%C3%A9moins_de_J%C3%A9hovah_%3F&amp;diff=2937</id>
		<title>Utilisateur:Henrique/Que reproche-t-on aux Témoins de Jéhovah ?</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Que_reproche-t-on_aux_T%C3%A9moins_de_J%C3%A9hovah_%3F&amp;diff=2937"/>
		<updated>2006-05-05T13:39:47Z</updated>

		<summary type="html">&lt;p&gt;Henrique : points à compléter...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Les reproches qui leur sont adressés en général.&lt;br /&gt;
Ces reproches sont formulés par des &amp;quot;opposants&amp;quot; qui ont été TJ ou bien par des journalistes (cf. par ex. le Canard enchaîné), des hommes politiques, des associations pour les droits de l&#039;homme...&lt;br /&gt;
&lt;br /&gt;
# Être dangereux pour eux-mêmes : sang, retrait de la vie sociale etc.&lt;br /&gt;
# Être inutiles à eux-mêmes, puisqu&#039;ils consacrent l&#039;essentiel de leur vie au service d&#039;une Société d&#039;édition multinationale qui exploite leur désir de sécurité absolue.&lt;br /&gt;
# Être dangereux pour la société humaine en général dans la mesure où ils poussent d&#039;autres personnes, de façon manipulatoire, à devenir aussi dangereux pour eux-mêmes.&lt;br /&gt;
# Être inutiles à la société des hommes en général dans la mesure où au lieu d&#039;oeuvrer à des actions collectives porteuses de sens, ils passent l&#039;essentiel leur temps et de leur énergie à chercher à sortir autrui du monde tel qu&#039;il est, et que par leur vision négative du &amp;quot;monde&amp;quot; ils peuvent décourager ceux qui veulent oeuvrer à l&#039;amélioration de notre société.&lt;br /&gt;
&lt;br /&gt;
Voici une liste (à compléter et à ordonner) des faits particuliers qui doivent en fait surtout être reprochés à la [[Watch Tower]] et qui pourront être intégrés dans une des rubriques précédentes ou qui nécessiteront une nouvelle rubrique (on pourra aussi envisager le système de défense des TJ sur ces sujets, sachant que des articles spécifiques seront le plus souvent nécessaires pour compléter ces points) :&lt;br /&gt;
* Leur doctrine et la pratique qui s&#039;en suit en ce qui concerne les transfusions sanguines.&lt;br /&gt;
* L&#039;embrigadement des enfants, leur difficulté de bien s&#039;intégrer au système scolaire et à travailler pour leur avenir à long terme dans la mesure où Jéhovah est censé résoudre tous les problèmes dans un futur proche. Leurs difficultés à s&#039;adapter à la vie sociale réelle.&lt;br /&gt;
* Les pressions exercées sur les jeunes TJ ayant de bonnes potentialités pour qu&#039;ils ne fassent pas d&#039;études longues.&lt;br /&gt;
* Destructuration de la personnalité : l&#039;adepte apprend à tout faire passer après son obéissance aux doctrines parfois changeantes de la Tour de Garde, de ses goûts vestimentaires à l&#039;attachement qu&#039;il peut éprouver pour ses proches non-TJ, plus d&#039;autonomie de jugement et d&#039;action.&lt;br /&gt;
* Familles brisées à cause de l&#039;intransigeance de la WT en matière doctrinale et morale. Faits d&#039;encouragement au divorce vis-à-vis d&#039;un conjoint ne souhaitant pas se convertir et à la dénonciation calomnieuse pour faciliter l&#039;obtention de la garde d&#039;enfants.&lt;br /&gt;
* Pratiques manipulatoires, par des moyens comportementaux, verbaux et iconographiques, pour obtenir l&#039;adhésion et le maintenir la soumission à la WT.&lt;br /&gt;
* Exploitation des adeptes : Béthel, pionniers, proclamateurs, esclaves volontaires au service d&#039;une société d&#039;édition internationnale, et payant pour pouvoir l&#039;être.&lt;br /&gt;
* Exploitation de la faiblesse de personnes âgées pour qu&#039;elles permettent à la WT d&#039;hériter de leurs biens, au détriment des enfants non-TJ.&lt;br /&gt;
* La prétention des congrégations à être un havre de paix, de justice et d&#039;honnêteté au sein du monde alors qu&#039;il s&#039;y trouve, dès qu&#039;on gratte le vernis des apparences, autant d&#039;injustice ou de malhonnêteté que dans le reste du monde. Double langage à ce sujet : a) vis-à-vis du monde : &amp;quot;nous avons nos brebis galeuses comme toutes les religions&amp;quot; ; b) vis-à-vis des adeptes : &amp;quot;nous sommes un avant-goût du paradis et Jéhovah ne permet jamais longtemps que se maintienne l&#039;injustice dans ses congrégations&amp;quot;.&lt;br /&gt;
* Le fait pour la WT de réclamer le respect des droits de l&#039;homme quand cela les arrange mais de ne pas les respecter pour ses adeptes : double langage en ce qui concerne les droits de l&#039;homme.&lt;br /&gt;
* Le service militaire : interdiction absolue pendant des années puis revirement.&lt;br /&gt;
* La culture du secret voire du mensonge dans des affaires de pédophilie ou de l&#039;ONU.&lt;br /&gt;
* Tendance à cacher, à effacer tout ce qui dans son passé peut être gênant : livres contenant des fausses prophéties indubitables, jugements aujourd&#039;hui trop incorrects politiquement (propos antisémites de Rutherfort)...&lt;br /&gt;
* La prétention à être les seuls à détenir la vérité religieuse indiscutable, malgré les &amp;quot;nouvelles lumières&amp;quot;, entraînant une attitude sectaire vis-à-vis des autres religions et du monde en général.&lt;br /&gt;
* Le fait de couper les adeptes de toute source de culture et de réflexion extérieure au mouvement lui-même.&lt;br /&gt;
* Attachement à une théorie créationniste fondées sur de nombreux mensonges et falsifications. Double langage : a) vis-à-vis du monde, &amp;quot;c&#039;est surtout une question de foi&amp;quot; ; b) vis-à-vis des adeptes, &amp;quot;c&#039;est une vérité scientifique&amp;quot;.&lt;br /&gt;
* Les fausses prophéties (1879, 1914, 1925, 1975...).&lt;br /&gt;
* Une traduction partiale et idéologique de la Bible.&lt;br /&gt;
* L&#039;attitude de provocation vis-à-vis de régimes peu respectueux des libertés religieuses ayant entraîné des persécutions contre les adeptes locaux, persécutions instrumentalisées ensuite par la WT (Allemagne nazie, Haïti...)&lt;br /&gt;
&lt;br /&gt;
Cf. http://tjwt.free.fr/lutter.htm&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=%C3%89tudes_perspicaces&amp;diff=2917</id>
		<title>Études perspicaces</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=%C3%89tudes_perspicaces&amp;diff=2917"/>
		<updated>2006-05-03T22:55:53Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Correction de la double redirection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Étude perspicace des Écritures]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Actualit%C3%A9s_du_site&amp;diff=2916</id>
		<title>Actualités du site</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Actualit%C3%A9s_du_site&amp;diff=2916"/>
		<updated>2006-05-03T22:49:15Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[Nouvelles du site]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Pourquoi_devient-on_T%C3%A9moin_de_J%C3%A9hovah_%3F&amp;diff=2909</id>
		<title>Utilisateur:Henrique/Pourquoi devient-on Témoin de Jéhovah ?</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Pourquoi_devient-on_T%C3%A9moin_de_J%C3%A9hovah_%3F&amp;diff=2909"/>
		<updated>2006-05-03T16:31:23Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Examen des raisons spirituelles, psychologiques, sociologiques et historiques.&lt;br /&gt;
&lt;br /&gt;
== Critique ==&lt;br /&gt;
L&#039;adhésion au jéhovisme se fait sur la base d&#039;un rêve de [[paradis]] terrestre retrouvé dont le fondement n&#039;est qu&#039;une interprétation très discutable de certains passages de la Bible, coupés de leur contexte littéraire et historique. Cela ne constitue donc pas une alternative au monde réel, c&#039;est une façon de se condamner soi-même à ne pas vivre réellement. C&#039;est comme si une personne voulait se suicider, non parce qu&#039;elle n&#039;aime pas la vie en général, mais parce qu&#039;elle n&#039;aime pas cette vie, en espérant par exemple renaître dans une autre vie, meilleure à son idée. Au fond, un TJ est pareil : il préfère un rêve de vie à la vie réelle. Cette dernière impliquant d&#039;assumer le monde tel qu&#039;il est pour y agir. Au lieu de résoudre ses problèmes personnels qui font qu&#039;il n&#039;est pas heureux de vivre, il cherche un moyen de résoudre d&#039;un coup tous ses problèmes en général sans avoir quoi que ce soit à faire pour affronter directement ses difficultés. Pour le TJ, cette solution générale sera le paradis &amp;quot;promis&amp;quot; par Jéhovah et se contenter d&#039;annoncer au monde que ce monde va bientôt être détruit. Il croit ainsi qu&#039;on peut vivre toute la vie comme un petit enfant, alors que le but de l&#039;existence d&#039;un homme, c&#039;est de grandir et d&#039;assumer à son tour virilement les difficultés de la vie en essayant de les résoudre dans la mesure de ses moyens.&lt;br /&gt;
&lt;br /&gt;
Et prenons un peu son rêve. Dieu aurait d&#039;abord fait un monde, mais ce monde n&#039;étant pas celui qu&#039;il voulait, il aurait à le refaire ? Mais comment un Dieu parfait pourrait-il créer quelque chose d&#039;imparfait ? Et si comme le disent les TJ, c&#039;est à cause des mauvais choix de Lucifer et d&#039;Adam qu&#039;il y a du mal dans le monde, ce serait au fond la liberté qui serait une mauvaise chose : ayant pu choisir entre le bien et le mal, Lucifer devenant par la suite Satan, ou Adam ont pu introduire dans le monde de l&#039;imperfection ? Mais dans le paradis dont il rêve, suffira-t-il que Satan soit détruit pour qu&#039;il n&#039;y ait plus de liberté, c&#039;est-à-dire de possibilité d&#039;introduire du mal dans le monde ? Puisque les anges comme Lucifer avaient manifestement un libre arbitre, rien n&#039;empêche qu&#039;il n&#039;y en ait d&#039;autres par la suite et que toute l&#039;histoire recommence à nouveau... Belle sécurité définitive que voilà ! &lt;br /&gt;
&lt;br /&gt;
Ou alors les TJ espèrent que dans leur paradis il n&#039;y aura plus de liberté. Mais au fond, n&#039;est-ce pas ce qui définit le Témoin de Jéhovah en général : une personne qui a peur de la liberté et qui souhaite vivre en esclave, au service d&#039;une volonté extérieure pour ne pas avoir à faire l&#039;effort de prendre des décisions par soi-même ? Un esclave, c&#039;est-à-dire au fond quelqu&#039;un d&#039;inutile à soi-même et d&#039;inutile au monde mais qui n&#039;a au moins pas à souffrir de faire l&#039;effort de vouloir par soi-même ?&lt;br /&gt;
&lt;br /&gt;
Aiment-ils la liberté avec toutes les difficultés qu&#039;elle implique en fait ? Ils croient manifestement qu&#039;on peut être heureux en n&#039;assumant pas sa condition d&#039;être libre, en choisissant de ne plus choisir. C&#039;est comme croire qu&#039;un léopard peut être heureux dans une cage où pourtant on lui apporte de la nourriture et des soins tous les jours.&lt;br /&gt;
&lt;br /&gt;
Pareil au poussin, le Témoin de Jéhovah est quelqu&#039;un qui a besoin d&#039;être enfermé dans une coquille le protégeant d&#039;un monde pour lequel il ne se sent pas fait. La liberté est un danger pour lui. Mais s&#039;il ne vient pas un moment où le poussin brise sa coquille pour aller dans le monde, il meure. A terme l&#039;absence de liberté est un danger pour l&#039;être qui vit.&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Satan&amp;diff=2905</id>
		<title>Utilisateur:Henrique/Satan</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Satan&amp;diff=2905"/>
		<updated>2006-05-03T16:00:45Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Partir d&#039;une description des doctrines propres de la WT à ce sujet.&lt;br /&gt;
&lt;br /&gt;
== Critique d&#039;un point de vue exégétique ==&lt;br /&gt;
&lt;br /&gt;
Dans la Bible, le serpent qui tente Adam et Eve n&#039;est pas appelé Satan, ce n&#039;est que plus tard (la Bible a été écrite sur une période couvrant quelques centaines d&#039;années) que ce serpent sera identifié au diable, par Paul notamment. Textuellement, le &#039;&#039;shatan&#039;&#039; désigne d&#039;abord un adversaire humain dans un conflit (livres de Samuel et des Rois), puis un accusateur ayant pour rôle de servir la justice, autrement dit un procureur. Ainsi le psalmiste demande à Dieu de lui envoyer un &#039;&#039;shatan&#039;&#039; pour traduire ses ennemis en justice !&lt;br /&gt;
&lt;br /&gt;
Puis le nom commun &#039;&#039;shatan&#039;&#039; devient un nom propre dans Job et Zacharie. Dans Zacharie, Satan est l&#039;ange qui accuse Josué d&#039;avoir commis le péché mais il joue uniquement son rôle de procureur, Dieu pardonne à Josué et Satan ne s&#039;y oppose pas. Dans Job, il accuse l&#039;homme de n&#039;être juste que par intérêt, Job est en effet le plus juste et pieux des hommes mais aussi le plus riche, c&#039;est uniquement pour obtenir les bénédictions de Dieu qu&#039;il pratique la justice et la piété : Dieu autorise alors Satan à le priver de tout, y compris de ses enfants que Satan fait mourir, pour voir si Job est toujours juste dans cette condition. Il joue alors le rôle de celui qui met à l&#039;épreuve pour voir si l&#039;homme est avec Dieu ou non. Ainsi quand, dans le nouveau testament, Pierre propose à Jésus de s&#039;échapper pour éviter le supplice de la crucifixion, il est Satan : &#039;passe derrière Satan, cause de chute, tes vues ne sont pas de Dieu mais des hommes&#039;... En testant l&#039;homme, Satan le tente par de belles évocations, d&#039;où son nom aussi de Lucifer (porteur de lumière).&lt;br /&gt;
&lt;br /&gt;
Satan est ainsi au service de Dieu en tant qu&#039;instrument de vérification de la profondeur de la foi des hommes, voire exécuteur de sa justice. *Parfois, il finit par être identifié à Dieu lui-même* : en &amp;lt;CiteBible&amp;gt;II Samuel 24:1&amp;lt;/CiteBible&amp;gt; Dieu se met en colère contre les israëlites et ordonne à David de faire un recensement de la population alors qu&#039;en &amp;lt;CiteBible&amp;gt;I Chroniques 21:1&amp;lt;/CiteBible&amp;gt; c&#039;est Satan qui est dit être en colère contre les israëlites et qui incite David à recenser la population ! Mais alors qu&#039;il servait souvent à blanchir opportunément Dieu dans les malheurs du juste : c&#039;est pas Dieu, c&#039;est Satan. Ce n&#039;est guère que dans le dernier livre du nouveau testament, l&#039;Apocalypse, que Satan devient clairement celui qui du haut de son orgueil accuse Dieu lui-même d&#039;être injuste et devient ainsi l&#039;ennemi de Dieu, chassé du ciel et précipité sur la Terre pour y apporter le désordre.&lt;br /&gt;
&lt;br /&gt;
== Autres interprétations de la Bible quant à la nature de Satan ==&lt;br /&gt;
&lt;br /&gt;
Mais comme le montre l&#039;épisode de Pierre étant appelé Satan, pour qui a des yeux pour lire, c&#039;est finalement l&#039;homme lui-même qui est Satan, quand il divise et brise l&#039;identité avec le divin, notamment en essayant de détourner le fils de l&#039;homme de ses choix profonds en voulant le pousser à faire ce qu&#039;il n&#039;aurait pas fait par lui-même, en essayant ainsi de le couper de ses sentiments véritables d&#039;amour.&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Manipulation&amp;diff=2868</id>
		<title>Utilisateur:Henrique/Manipulation</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Manipulation&amp;diff=2868"/>
		<updated>2006-05-01T17:54:03Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Projet d&#039;article sur la manipulation&lt;br /&gt;
&lt;br /&gt;
Echange avec un futur TJ pour servir de point de départ. (Il est aussi question ici de l&#039;essence du jéhovisme, ce qui fait fondamentalement qu&#039;il est ce qu&#039;il est).&lt;br /&gt;
 &lt;br /&gt;
: Mais sachez par exemple que les témoins ne vendent pas leurs revues, il les donnent à ceux qui le veulent bien, je crois que ceci vous à échappé.&lt;br /&gt;
&lt;br /&gt;
Les TJ ne vendent plus leurs revues (ce qui était le cas il y a quelques années), mais est-ce également vrai pour tous les livres qui sont utilisés pour leurs &amp;quot;étude la Bible&amp;quot; ?&lt;br /&gt;
&lt;br /&gt;
Quoiqu&#039;il en soit, la Watch Tower s&#039;y retrouve tout de même dans la mesure où ce sont les TJ proclamateurs qui commandent et achètent lesdites revues en fonction de ce qu&#039;ils pensent &amp;quot;placer&amp;quot; en prédication et qui les &amp;quot;donnent&amp;quot; ensuite aux personnes intéressées. Et même si finalement il y a moins de personnes qui ont accepté des revues que prévu, c&#039;est - à ma connaissance - le proclamateur qui paye finalement l&#039;addition. Il faut savoir aussi que cette mesure a été prise en France pour limiter les problèmes de cette organisation avec le Fisc. De cette façon, la Watch Tower est probablement la seule société d&#039;édition, ce qu&#039;elle est essentiellement, dans le monde qui ne connaît aucun invendu tout en s&#039;assurant une large diffusion par des canaux purement bénévoles, sans pour autant que son matériel soit distribué à perte (et même si cette Société ne gagne qu&#039;un centime d&#039;euro par publication, c&#039;est au niveau mondial énorme).&lt;br /&gt;
&lt;br /&gt;
Enfin, vous devriez vous procurer le livre &#039;&#039;Petit traité de manipulation&#039;&#039; à l&#039;usage des honnêtes gens de Joule et Beauvois, vous verriez que le fait de distribuer des publications en porte à porte de façon gratuite est une façon d&#039;engager plus facilement les gens qui les acceptent à aller plus loin. C&#039;est en effet une technique de marketing courante qu&#039;on trouve aussi à l&#039;entrée des grands magazins quand on vous offre des échantillons gratuits : le &amp;quot;client&amp;quot; potentiel qui a accepté le produit a alors tendance à se sentir un minimum redevable vis-à-vis du geste qu&#039;on a accompli pour lui, il va donc beaucoup plus facilement aller vers les produits de la marque dont on lui a donné un échantillon. En l&#039;occurrence, la personne qui a accepté une revue TJ va beaucoup plus facilement accepter que les TJ reviennent pour leur fournir une étude &amp;quot;gratuite&amp;quot; de la Bible, même si cela présente pour elle un investissement de temps plus important que jeter un coup d&#039;oeil à la revue initiale. Ensuite, d&#039;engagements en engagements personnels, (venir une fois à une réunion, puis régulièrement, puis trois fois par semaines, puis aux assemblées, puis en prédication etc.) cette personne va finalement devenir elle-même TJ, c&#039;est-à-dire non seulement un VRP bénévole au service de la société d&#039;édition Watch Tower mais en même temps le client de cette société puisque c&#039;est lui qui achète les produits qu&#039;il &amp;quot;place&amp;quot; en prédication.&lt;br /&gt;
&lt;br /&gt;
C&#039;est comme si des personnes venaient chez vous pour vous &amp;quot;donner&amp;quot; du Coca-cola. Mais ici ce ne serait pas la firme Coca-cola qui engagerait des salariés pour distribuer des échantillons, non Cocal-Cola recruterait des distributeurs volontaires qui en plus payeraient pour pouvoir distribuer ces échantillons. Vous ne voyez pas l&#039;arnaque ?&lt;br /&gt;
&lt;br /&gt;
Alors effectivement, ce n&#039;est pas vous qui pour l&#039;instant êtes exploité, mais en ayant mis un pieds dans l&#039;engrenage conçu par la Watch Tower, vous vous apprêtez gentiment à l&#039;être bientôt et à amener par la suite d&#039;autres personnes à mettre le pieds dans le même engrenage, tout en croyant sincèrement servir Dieu de cette façon.&lt;br /&gt;
&lt;br /&gt;
: Et sachez que ce n&#039;est pas bien de vouloir &amp;quot;démonter&amp;quot; la foi, de personnes qui croient en Jéhovah&lt;br /&gt;
&lt;br /&gt;
Je n&#039;ai rien contre la foi en soi de qui que ce soit. Je pense que toute foi peut être discutée et que c&#039;est ce qui fait la richesse de l&#039;humanité, la possibilité du dialogue. Mais quand une foi prétend se faire passer pour un savoir, c&#039;est en effet plus de dénonciation que de discussion qu&#039;il s&#039;agit. Or, pour ce qui est par exemple de la théorie de l&#039;évolution, les TJ présentent leur créationnisme comme une alternative authentiquement scientifique, ce qui est une manipulation énorme, comme cela est démontré dans l&#039;article sur ce sujet de mon site.&lt;br /&gt;
Et plus encore, quand on exploite le besoin de croire des gens pour les amener amène devenir des esclaves volontaires au service d&#039;une société d&#039;édition en leur faisant croire qu&#039;en fait ils servent non pas cette société d&#039;édition mais Dieu lui-même, il y a une atteinte à la liberté que je ne peux que dénoncer.&lt;br /&gt;
&lt;br /&gt;
Note : comme cela est décrit dans le livre de Joule et Beauvois, ce genre de techniques de manipulation par l&#039;engagement progressif sont souvent utilisées pour susciter l&#039;adhésion à des partis politiques ou des associations de bienfaisance. Pour susciter l&#039;adhésion à un parti ou à une association, on invite d&#039;abord à des actions peu coûteuses en termes de temps et d&#039;investissement personnel (accepter un tract, signer une pétition, donner un peu d&#039;argent... pour finir par devenir soi-même un colporteur bénévole des objectifs de l&#039;association qui parfois donnera de son argent en plus du prix de son adhésion pour faire fonctionner son parti ou association). Les militants associatifs qui tentent de recruter des adhérents de cette façon  pensent comme les TJ oeuvrer en fait à une cause juste. D&#039;où d&#039;ailleurs le titre de l&#039;ouvrage des auteurs manipulation &amp;quot;à l&#039;usage des honnêtes gens&amp;quot;, qui n&#039;hésitent pas à dire que si c&#039;est pour le bien de l&#039;humanité, il n&#039;est pas moralement répréhensible d&#039;user un peu de manipulation. &lt;br /&gt;
&lt;br /&gt;
La différence est que le militant d&#039;un parti ou d&#039;une association œuvre à une action collective concrète qui ne se réduit pas aux activités de recrutement en tant que telles (mais on ne saurait en dire autant de partis d&#039;essence totalitaires qui en refusant toute responsabilité concrète n&#039;existent que pour rêver collectivement du grand soir, non pour s&#039;efforcer de vivre concrètement ce rêve). Il recrute (éventuellement) des adhérents pour être plus nombreux à lutter contre la pollution dans la ville ou dans le monde, contre le capitalisme néo-libéral ou contre le danger rouge qui menace nos libertés, pour faire connaître les bienfaits sur la santé du yoga ou bien pour partager les bienfaits sociaux du football etc. De cette façon, l&#039;activité de recrutement a une signification qui la déborde. Au contraire, le TJ recrute des TJ sans qu&#039;il soit question de changer ou d&#039;améliorer le monde tel qu&#039;il est : il ne vise à recruter d&#039;autres TJ et ne se forme à cela lors des réunions que pour que ces recrues puissent à leur tour recruter d&#039;autres TJ qui en recruteront ensuite, sans projet d&#039;action collective débordant de l&#039;activité de recrutement en tant que telle. Certes, il s&#039;agit théoriquement de sauver le plus de monde possible de la destruction à Har-Maguédon, mais cela reste du domaine du discours tant qu&#039;Har-Maguédon ne s&#039;est pas produit. Concrètement, la seule «œuvre» d&#039;un TJ, susceptible de justifier son salut, est de recruter d&#039;autres TJ. &lt;br /&gt;
&lt;br /&gt;
Et la seule œuvre de la Watch Tower est de recruter des TJ qui l&#039;alimenteront financièrement en étant à la fois et seulement ses clients et ses employés. Le militant d&#039;une association, lui, est aussi en quelques sortes l&#039;employeur : en tant que membre de l&#039;association, il a voix au chapitre en ce qui concerne les choix d&#039;actions collectives et les débats doctrinaires. Le TJ ne fait qu&#039;avoir à s&#039;adapter à un mécanisme déjà parfaitement ajusté, et qui n&#039;a effectivement pas besoin d&#039;être beaucoup réajusté avec le temps, puisque la seule réalité à laquelle il a effectivement affaire est la résistance plus ou moins grande des recrues potentielles, qui de fait s&#039;appuie sur des ressorts psychologiques peu perméables au temps qui passe. Il n&#039;est jamais appelé à participer aux décisions importantes concernant l&#039;existence de son groupe, tout étant piloté depuis Brooklynn, et encore moins à débattre de certains points de docrine. &lt;br /&gt;
&lt;br /&gt;
Autre note : si le TJ devait seulement payer le prix d&#039;une adhésion pour recevoir l&#039;enseignement religieux, il serait beaucoup moins motivé pour recruter d&#039;autres adhérents, il pourrait se dire que Dieu œuvre à cela de toutes façons. En devant payer plutôt le prix des périodiques qu&#039;il se propose de placer en prédication, il s&#039;engage vis-à-vis de lui-même à les placer et il peut venir aux réunions avec l&#039;idée qu&#039;il se forme pour être toujours plus efficace dans cette activité de recrutement. C&#039;est le mythe de Sysiphe.&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Nom_de_Dieu&amp;diff=2866</id>
		<title>Utilisateur:Henrique/Nom de Dieu</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/Nom_de_Dieu&amp;diff=2866"/>
		<updated>2006-05-01T16:44:32Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: Essayez d&#039;analyser les autres religions, et vous verrez que la seule religion qui dit la vérité, par exemple le nom de Dieu Yahvé, dont la traduction française est Jéhovah, sont les Témoins de Jéhovah. Alors que dans le coran, la bible des catholique, et dans la bible des juif, le nom de Dieu Yahvé apparait, mais demandais leur , quel ai le nom de Dieu, il ne seront pas vous répondre, pourtant c&#039;est écris... Ces religions essaient de cacher le nom de Dieu, la vérité, devinez pourquoi...&lt;br /&gt;
&lt;br /&gt;
Votre discours démontre bien que le cœur de cible des TJ sont des gens peu cultivés en matière religieuse, susceptibles donc de se laisser plus facilement impressionner par des &amp;quot;révélations&amp;quot; qui leur paraissent uniques alors qu&#039;elles sont en fait relativement banales. Je pourrais vous citer nombre d&#039;écrits de catholiques, de juifs et on doit en trouver facilement de musulmans où le nom de Yahvé ou de Jéhovah est employé, ce qui démontre que ce nom est bel et bien connu et employé en dehors des Témoins des Jéhovah.&lt;br /&gt;
&lt;br /&gt;
D&#039;autre part, croyez vous qu&#039;un son utilisé pour désigner un être soit aussi important que l&#039;idée de cet être même ? La preuve que non est que vous admettez également la prononciation &amp;quot;orientale&amp;quot; et &amp;quot;francisée&amp;quot; de ce nom. Or que signifie ce nom ? &amp;quot;Je serai ce que je serai&amp;quot; dans la traduction TJ (cf. Exode 3:13) (quoique cette traduction soit discutable sur le plan philologique, la plupart des autres traduction rendant &amp;quot;eyeh asher eyeh&amp;quot; par &amp;quot;je suis ce que je suis&amp;quot;, sachant que ce présent (qui correspond au présent imparfait de l&#039;hébreu) enveloppe à la fois, le passé, le présent et le futur, comme quand il est dit aussi dans la Bible &amp;quot;je suis l&#039;alpha et l&#039;oméga&amp;quot; ou encore quand il est question de celui qui a été, est et sera de toute éternité)  ce qui signifie &amp;quot;Celui qui fait exister&amp;quot;. N&#039;est-ce pas au fond la même chose que ce qu&#039;entendent les monothéistes du monde entier par le son &amp;quot;Dieu, God, Allah&amp;quot; etc. Dieu, c&#039;est l&#039;être par lequel toutes choses viennent à l&#039;existence, et même continuent d&#039;exister : qu&#039;on l&#039;appelle &amp;quot;Dieu&amp;quot;, &amp;quot;Théos&amp;quot;, &amp;quot;Elohim&amp;quot;, &amp;quot;El Chaddaï&amp;quot;, &amp;quot;Allah&amp;quot;, &amp;quot;Brahman&amp;quot;, &amp;quot;Yahvé&amp;quot;, &amp;quot;Jéhovah&amp;quot; etc. Puisque c&#039;est la même idée qui est désignée à chaque fois par ces différentes sonorités, ces sonorités importent peu en elles-mêmes.&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, le fait d&#039;employer un nom propre suppose qu&#039;il y ait plusieurs exemplaires d&#039;un même genre : il est important d&#039;employer un prénom pour distinguer Paul de Pierre parce qu&#039;ils sont tous les deux des hommes. Mais à moins d&#039;être polythéiste, il n&#039;y a pas à distinguer Dieu d&#039;autres dieux puisqu&#039;Il est unique. Dieu, Allah, Elohim ou Yahvé sont donc strictement équivalents si on en reste à l&#039;idée d&#039;un créateur universel et tout-puissant. Avoir besoin d&#039;insister sur l&#039;emploi d&#039;un nom en particulier pour désigner Dieu revient soit à supposer qu&#039;il existerait en fait plusieurs dieux, soit à avoir en fait surtout besoin de trouver le moyen de se distinguer des autres religions sur un point extérieur, pour pouvoir justifier de se croire la seule et unique vraie religion.&lt;br /&gt;
&lt;br /&gt;
Voir aussi http://www.info-sectes.org/tj/tmn.htm#p11&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=-607&amp;diff=2743</id>
		<title>-607</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=-607&amp;diff=2743"/>
		<updated>2006-04-25T14:40:26Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Lien externe défavorable aux TJ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La date de début du décompte des [[Temps des Gentils]] serait selon la doctrine officielle des Témoins de Jéhovah l&#039;année &#039;&#039;&#039;607 avant notre ère&#039;&#039;&#039;.&amp;lt;br /&amp;gt;&lt;br /&gt;
C&#039;est à cette date, selon leur chronologie, que Jérusalem serait tombée entre les mains de Nebucadnezzar, roi de Babylone.&lt;br /&gt;
Le problème est qu&#039;ils sont les seuls à soutenir cette date et que les historiens sont d&#039;un tout autre avis.&lt;br /&gt;
&lt;br /&gt;
La succession des rois babyloniens est bien connue et bien documentée et tous les témoignages concordent : Jérusalem est tombée entre les mains des Babyloniens en 587 avant notre ère.&lt;br /&gt;
Cette différence de quelque 20 ans pourrait sembler insignifiante, mais elle suffit à reléguer l&#039;année 1914, date ultime des 2520 années de la construction prophétique, aux oubliettes.&lt;br /&gt;
Et si 1914 tombe, alors c&#039;est le dernier héritage adventiste de Charles Taze Russell qui disparait aussi, c&#039;est la conviction d&#039;avoir appartenu à une époque au cours de laquelle Jésus aurait choisi sa véritable église qui est mise à mal.&lt;br /&gt;
&lt;br /&gt;
Pourtant les preuves pour infirmer 607 avant notre ère ne manquent pas.&lt;br /&gt;
&#039;&#039;Carl Olof Jonsson&#039;&#039;, ancien Témoin de Jéhovah suédois, en a fait depuis 1977, première année de ses recherches à ce sujet, son cheval de bataille.&lt;br /&gt;
Dans son livre en anglais &#039;&#039;&amp;quot;The Gentile Times Reconsidered&amp;quot; (édition Commentary Press - Atlanta - 2004)&#039;&#039;, il démontre avec force l&#039;inévitable conclusion : 607 avant notre ère est un voeu pieu sans fondement.&lt;br /&gt;
&lt;br /&gt;
Faisant la synthèse des inscriptions anciennes disponibles, l&#039;auteur présente la chronologie néo-babylonienne.&amp;lt;br /&amp;gt;&lt;br /&gt;
Citant &#039;&#039;les chroniques néo-babyloniennes&#039;&#039; (&#039;&#039;la Chronique babylonienne BM 21946&#039;&#039;, &#039;&#039;la Chronique de Nabonide BM 35382&#039;&#039;), l&#039;&#039;a Liste des rois d&#039;Uruk&#039;&#039;, &#039;&#039;Les Inscriptions Royales&#039;&#039; plus connu sous le nom de &#039;&#039;Canon de Ptolémée&#039;&#039;, les durées de règnes des rois sont les suivantes :&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|bgcolor=&amp;quot;#CCFFCC&amp;quot;|Nom royal&lt;br /&gt;
|bgcolor=&amp;quot;#CCFFCC&amp;quot;|Chroniques néo-babyloniennes&lt;br /&gt;
|bgcolor=&amp;quot;#CCFFCC&amp;quot;|Liste des rois d&#039;Uruk&lt;br /&gt;
|bgcolor=&amp;quot;#CCFFCC&amp;quot;|Inscriptions Royales&lt;br /&gt;
|bgcolor=&amp;quot;#CCFFCC&amp;quot;|Dates av. n.e.&lt;br /&gt;
|-&lt;br /&gt;
|Nabopolassar&lt;br /&gt;
|21 ans&lt;br /&gt;
|21 ans&lt;br /&gt;
|21 ans&lt;br /&gt;
|625-605&lt;br /&gt;
|-&lt;br /&gt;
|Nebuchadnezzar&lt;br /&gt;
|43 ans&lt;br /&gt;
|43 ans&lt;br /&gt;
|43 ans&lt;br /&gt;
|604-562&lt;br /&gt;
|-&lt;br /&gt;
|Evil-Mardouk&lt;br /&gt;
|2 ans&lt;br /&gt;
|2 ans&lt;br /&gt;
|2 ans&lt;br /&gt;
|561-560&lt;br /&gt;
|-&lt;br /&gt;
|Neriglissar&lt;br /&gt;
|4 ans&lt;br /&gt;
|3 ans 8 mois&lt;br /&gt;
|4 ans&lt;br /&gt;
|559-556&lt;br /&gt;
|-&lt;br /&gt;
|Labashi-Marduk&lt;br /&gt;
|Quelques mois&lt;br /&gt;
|3 mois&lt;br /&gt;
|&lt;br /&gt;
|556&lt;br /&gt;
|-&lt;br /&gt;
|Nabonide&lt;br /&gt;
|17 ans&lt;br /&gt;
|17? ans&lt;br /&gt;
|17 ans&lt;br /&gt;
|555-539&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Ces dates sont adoptées par les historiens car supportées par les anciennes sources cunéiformes, certaines datant de l&#039;époque néo-babylonienne même.&lt;br /&gt;
Ces dates sont constamment recoupées par la chronologie égyptienne, par les annales commerciales, par les relevés astronomiques de l&#039;époque. Tous les documents accessibles et publiés sont unanimes et univoques.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
La 19ème année du règne de Nebucadnezzar (prise de Jérusalem, &amp;lt;CiteBible&amp;gt;2 Rois 25:8&amp;lt;/CiteBible&amp;gt;) correspond bien à 587/586 avant notre ère et non 607 avant notre ère. Le plus extraordinaire est que la date-pivot (anciennement dénommée date absolue) qui permet aux Témoins de Jéhovah de calculer 607 avant notre ère est 539 avant notre ère, date établie par les mêmes documents qu&#039;ils reconnaissent ou récusent selon les besoins.&lt;br /&gt;
==Voir aussi==&lt;br /&gt;
===Lien externe favorable aux TJ===&lt;br /&gt;
*[http://www.euaggelion2414.com/datesTJ.htm#607 607]&lt;br /&gt;
&lt;br /&gt;
===Lien externe défavorable aux TJ===&lt;br /&gt;
*[http://www.brooklyntower.com/page6.htm 607...]&lt;br /&gt;
* [http://tjwt.free.fr/chron607.htm 607, la fondation branlante de la doctrine de 1914]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Histoire]]&lt;br /&gt;
[[Catégorie:Prophéties]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=L%C3%A9gendes_urbaines&amp;diff=2742</id>
		<title>Légendes urbaines</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=L%C3%A9gendes_urbaines&amp;diff=2742"/>
		<updated>2006-04-25T14:25:02Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Les artistes spirites */ ajout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Une légende urbaine est une histoire fantastique qui se répand au sein d&#039;une communauté, une sorte de rumeur, nous ferons ici l&#039;inventaire de certaines de celles-ci entendues chez les Témoins de Jéhovah.&lt;br /&gt;
&lt;br /&gt;
Cette liste de rumeurs permettra de mettre en relief, la façon dont les Témoins de Jéhovah appréhendent la vie: La présence forte du merveilleux et du divin dans le quotidien du Témoin de Jéhovah.&lt;br /&gt;
&lt;br /&gt;
Etant donné que sur le principe du jeu de notre enfance, &amp;quot;le téléphone arabe&amp;quot;, une légende urbaine varie dans le temps et l&#039;espace, les histoires racontées ici et qu&#039;on a couramment entendu chez les Témoins de Jéhovah devront être approximativement datées et localisées.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Les légendes urbaines sur le spiritisme ====&lt;br /&gt;
&lt;br /&gt;
===== Les artistes spirites =====&lt;br /&gt;
&lt;br /&gt;
* 1985 - Limousin : Dans sa chanson, Tristanna, Mylène Farmer invoque le diable de façon subliminale : en écoutant bien, on entendrait dans le refrain &amp;quot;Tristannasss&amp;quot;, ce qui passé à l&#039;envers donnerait &amp;quot;Satan&amp;quot;...&lt;br /&gt;
* 1986 - Région lyonnaise (noter que Jean-Michel Jarre a donné un concert pour le Pape à Lyon cette même année). Jean-Michel Jarre lors d&#039;un de ses concerts aurait demandé aux spectateurs Témoins de Jéhovah de quitter la salle de concert, car celà l&#039;empêchait de se concentrer.&lt;br /&gt;
&lt;br /&gt;
===== Les apparitions démoniaques =====&lt;br /&gt;
&lt;br /&gt;
* 1998 - Charente-Maritime : des démons auraient perturbés les nuits d&#039;un couple de Témoins de Jéhovah. En ouvrant leur oreiller, ils auraient découvert une sorte de sculpture, en forme de serpent, faite avec les plumes d&#039;oreiller, qu&#039;ils auraient brûlé comme venant des démons. Ils auraient mieux dormi après.&lt;br /&gt;
Selon cette croyance répandue au sein de la communauté des Témoins de Jéhovah, dont les premiers échos remontent au moins aux années 70, la mort brutale du dormeur serait provoquée à l&#039;instant où le serpent ainsi formé de plumes se serait mordu la queue. Selon cette rumeur qui circule encore parmi les Témoins de Jéhovah, la plume serait le vecteur préféré des démons pour agresser les hommes. Aussi est-il rare de trouver des oreillers constitués de plumes chez les Témoins.&lt;br /&gt;
&lt;br /&gt;
===== Cas de Possession démoniaque =====&lt;br /&gt;
&lt;br /&gt;
* 1997 - Charente-Maritime: Une jeune femme prétendant entendre des voix, aurait été exorcisée dans la &amp;quot;petite salle&amp;quot; d&#039;une Salle du Royaume d&#039;une congrégation de Charente-Maritime, telle que la rumeur a été véhiculée par une femme d&#039;ancien. Au cours de l&#039;exorcisme, la jeune femme aurait lévité et des démons seraient sortis de son corps en chantant des chansons de Mylène Farmer. Il s&#039;est avéré par la suite que la jeune femme souffrait de graves troubles psychiques, les voix ont disparu avec le traitement.&lt;br /&gt;
&lt;br /&gt;
==== Les interventions divines ou angéliques ====&lt;br /&gt;
&lt;br /&gt;
Ne seront notées ici que les rumeurs locales et non celles officielles, véhiculées par les journaux du mouvement.&lt;br /&gt;
&lt;br /&gt;
===== Interventions pour l&#039;Organisation =====&lt;br /&gt;
&lt;br /&gt;
* 1985- Région Lyonnaise - Construction Salle d&#039;Assemblée de Vienne. L&#039;incendie d&#039;un garage situé à côté de la Salle d&#039;Assemblée et qui était un terrain convoité par les Témoins de Jéhovah a été interprété par la rumeur comme une intervention de &amp;quot;Jéhovah&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== Interventions en prédication =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Intérieur]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/monobook.js&amp;diff=2696</id>
		<title>Utilisateur:Henrique/monobook.js</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/monobook.js&amp;diff=2696"/>
		<updated>2006-04-24T13:26:06Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;// [[User:Lupin/popups.js]]&lt;br /&gt;
&lt;br /&gt;
//============================================================&lt;br /&gt;
// &lt;br /&gt;
// Info-bulle sur liens internes&lt;br /&gt;
// &lt;br /&gt;
//============================================================&lt;br /&gt;
&lt;br /&gt;
document.write(&#039;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&#039; &lt;br /&gt;
             + &#039;http://www.tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/popups.js&#039; &lt;br /&gt;
             + &#039;&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;amp;dontcountme=s&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&#039;);&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/popups.js&amp;diff=2617</id>
		<title>Utilisateur:Henrique/popups.js</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/popups.js&amp;diff=2617"/>
		<updated>2006-04-24T00:32:40Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var popupVersion=&amp;quot;Sun Apr 23 12:16:20 EDT 2006&amp;quot;;&lt;br /&gt;
// STARTFILE: main.js&lt;br /&gt;
// Source : http://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups&lt;br /&gt;
// **********************************************************************&lt;br /&gt;
// **                                                                  **&lt;br /&gt;
// **             changes to this file affect many users.              **&lt;br /&gt;
// **           please discuss on the talk page before editing         **&lt;br /&gt;
// **                                                                  **&lt;br /&gt;
// **********************************************************************&lt;br /&gt;
// **                                                                  **&lt;br /&gt;
// ** if you do edit this file, be sure that your editor recognizes it **&lt;br /&gt;
// ** as utf8, or the weird and wonderful characters in the namespaces **&lt;br /&gt;
// **   below will be completely broken. You can check with the show   **&lt;br /&gt;
// **            changes button before submitting the edit.            **&lt;br /&gt;
// **                      test: مدیا מיוחד Мэдыя                      **&lt;br /&gt;
// **                                                                  **&lt;br /&gt;
// **********************************************************************&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Import stylesheet(s)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if ( window.localCSS ) {&lt;br /&gt;
	document.write(&#039;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;http://localhost:8080/js/navpop.css&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
} else {&lt;br /&gt;
	document.write(&#039;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&#039; +&lt;br /&gt;
		       &#039;http://en.wikipedia.org/w/index.php?title=User:Lupin/navpopdev.css&#039; +&lt;br /&gt;
		       &#039;&amp;amp;action=raw&amp;amp;ctype=text/css&amp;amp;dontcountme=s&amp;quot;&amp;gt;&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// Globals&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Trying to shove as many of these as possible into the pg (popup globals) object&lt;br /&gt;
window.pg = {&lt;br /&gt;
	re: {},               // regexps&lt;br /&gt;
	ns: {},               // namespaces&lt;br /&gt;
	string: {},           // translatable strings&lt;br /&gt;
	wiki: {},             // local site info&lt;br /&gt;
	misc: {},             // YUCK PHOOEY&lt;br /&gt;
	option: {},           // options, see newOption etc&lt;br /&gt;
	optionDefault: {},    // default option values&lt;br /&gt;
	flag: {},             // misc flags&lt;br /&gt;
	cache: {},            // page and image cache&lt;br /&gt;
	diffData: {},         // support for diff previews&lt;br /&gt;
	structures: {},       // navlink structures&lt;br /&gt;
	timer: {},            // all sorts of timers (too damn many)&lt;br /&gt;
	counter: {},          // .. and all sorts of counters&lt;br /&gt;
	current: {},          // state info&lt;br /&gt;
	endoflist: null&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
window.pop = {          // wrap various functions in here&lt;br /&gt;
	init: {},&lt;br /&gt;
	util: {},&lt;br /&gt;
	endoflist: null&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Run things&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
addOnloadHook(setupPopups);&lt;br /&gt;
&lt;br /&gt;
/// Local Variables: ///&lt;br /&gt;
/// mode:c ///&lt;br /&gt;
/// End: ///&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: main.js&lt;br /&gt;
// STARTFILE: actions.js&lt;br /&gt;
function setupTooltips(container) {&lt;br /&gt;
	if (!container) {&lt;br /&gt;
		// the main initial call&lt;br /&gt;
		if (getValueOf(&#039;popupOnEditSelection&#039;)) {&lt;br /&gt;
			try {&lt;br /&gt;
				document.editform.wpTextbox1.onmouseup=function() { doSelectionPopup(); };&lt;br /&gt;
			} catch (neverMind) {}&lt;br /&gt;
		}&lt;br /&gt;
		// article/content is a structure-dependent thing&lt;br /&gt;
		if (getValueOf(&#039;popupOnlyArticleLinks&#039;)) {&lt;br /&gt;
			container = document.getElementById(&#039;article&#039;) || document.getElementById(&#039;content&#039;) || document;&lt;br /&gt;
		} else {&lt;br /&gt;
			container = document;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (container.ranSetupTooltipsAlready) { return; }&lt;br /&gt;
	container.ranSetupTooltipsAlready=true;&lt;br /&gt;
&lt;br /&gt;
	var anchors;&lt;br /&gt;
	anchors=container.getElementsByTagName(&#039;A&#039;);&lt;br /&gt;
	setupTooltipsLoop(anchors, 0, 250, 100);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setupTooltipsLoop(anchors,begin,howmany,sleep) {&lt;br /&gt;
	var finish=begin+howmany;&lt;br /&gt;
	var loopend = min(finish, anchors.length);&lt;br /&gt;
	var remTitles = getValueOf(&#039;removeTitles&#039;);&lt;br /&gt;
	var j=loopend - begin;&lt;br /&gt;
	log (&#039;setupTooltips: anchors.length=&#039; + anchors.length + &#039;, begin=&#039; + begin +&lt;br /&gt;
	     &#039;, howmany=&#039; + howmany + &#039;, loopend=&#039; + loopend);&lt;br /&gt;
	// try a faster (?) loop construct&lt;br /&gt;
	if (j &amp;gt; 0) {&lt;br /&gt;
		do {&lt;br /&gt;
			var a=anchors[loopend - j];&lt;br /&gt;
			if (!a || !a.href) {&lt;br /&gt;
				log(&#039;got null anchor at index &#039; + loopend - j);&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
			if ( isPopupLink(a) ) {&lt;br /&gt;
				a.onmouseover=mouseOverWikiLink;&lt;br /&gt;
				a.onmouseout= mouseOutWikiLink;&lt;br /&gt;
				a.onclick= killPopup;&lt;br /&gt;
				if (remTitles &amp;amp;&amp;amp; typeof a.originalTitle==&#039;undefined&#039;) {&lt;br /&gt;
					a.originalTitle=a.title;&lt;br /&gt;
					a.title=&#039;&#039;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		} while (--j);&lt;br /&gt;
	}&lt;br /&gt;
	if (finish &amp;lt; anchors.length) {&lt;br /&gt;
		pop.runOnce(function() {setupTooltipsLoop(anchors,finish,howmany,sleep);}, sleep);&lt;br /&gt;
	} else {&lt;br /&gt;
		// now eliminate popups from the TOC&lt;br /&gt;
		if (! getValueOf(&#039;popupTocLinks&#039;)) {&lt;br /&gt;
			var toc=document.getElementById(&#039;toc&#039;);&lt;br /&gt;
			if (toc) {&lt;br /&gt;
				var tocLinks=toc.getElementsByTagName(&#039;A&#039;);&lt;br /&gt;
				var tocLen = tocLinks.length;&lt;br /&gt;
				for (j=0; j&amp;lt;tocLen; ++j) {&lt;br /&gt;
					log (&#039;killing popup for toclinks[&#039; + j + &#039;]&#039;);&lt;br /&gt;
					a=tocLinks[j];&lt;br /&gt;
					a.onmouseover=null; a.onmouseout=null; a.onclick=null;&lt;br /&gt;
					if (a.originalTitle) { a.title=a.originalTitle; }&lt;br /&gt;
				}&lt;br /&gt;
				// looks like we just killed any onclick stuff that used to be going on in the toc&lt;br /&gt;
				// life is hard&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		pg.flag.finishedLoading=true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// add CSS class to table&lt;br /&gt;
&lt;br /&gt;
function addPopupStylesheetClasses () {&lt;br /&gt;
	var tables=over.getElementsByTagName(&#039;table&#039;);&lt;br /&gt;
	tables[0].className=&#039;popupBorderTable&#039;;&lt;br /&gt;
	tables[1].className=&#039;popupTable&#039;;&lt;br /&gt;
	var fonts=over.getElementsByTagName(&#039;font&#039;);&lt;br /&gt;
	fonts[0].className=&#039;popupFont&#039;;&lt;br /&gt;
	fonts[0].id=&#039;overFontWrapper&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function registerHooks(np) {&lt;br /&gt;
	var popupMaxWidth=getValueOf(&#039;popupMaxWidth&#039;);&lt;br /&gt;
&lt;br /&gt;
	if (typeof popupMaxWidth == &#039;number&#039;) {&lt;br /&gt;
		var setMaxWidth = function () {&lt;br /&gt;
			np.mainDiv.style.maxWidth = popupMaxWidth + &#039;px&#039;;&lt;br /&gt;
			np.maxWidth = popupMaxWidth;&lt;br /&gt;
&lt;br /&gt;
			// hack for IE&lt;br /&gt;
			// see http://www.svendtofte.com/code/max_width_in_ie/&lt;br /&gt;
			// use setExpression as documented here on msdn: http://tinyurl dot com/dqljn&lt;br /&gt;
&lt;br /&gt;
			if (np.mainDiv.style.setExpression) {&lt;br /&gt;
				np.mainDiv.style.setExpression(&#039;width&#039;, &#039;document.body.clientWidth &amp;gt; &#039; +&lt;br /&gt;
							       popupMaxWidth + &#039; ? &amp;quot;&#039; +popupMaxWidth + &#039;px&amp;quot;: &amp;quot;auto&amp;quot;&#039;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		np.addHook(setMaxWidth, &#039;unhide&#039;, &#039;before&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	np.addHook(addPopupShortcuts, &#039;unhide&#039;, &#039;after&#039;);&lt;br /&gt;
	np.addHook(rmPopupShortcuts, &#039;hide&#039;, &#039;before&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function mouseOverWikiLink() {&lt;br /&gt;
	if (!pg.flag.finishedLoading) { return; }&lt;br /&gt;
	return mouseOverWikiLink2(this);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function footnoteTarget(a) {&lt;br /&gt;
	var aTitle=Title.fromAnchor(a);&lt;br /&gt;
	var anch = aTitle.urlAnchor();&lt;br /&gt;
	if ( ! /^(_note-|endnote)/.test(anch) ) {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var lTitle=Title.fromURL(location.href);&lt;br /&gt;
	if ( lTitle.toString(true) != aTitle.toString(true) ) {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	var el=document.getElementById(anch);&lt;br /&gt;
	while ( el &amp;amp;&amp;amp; typeof el.nodeName == &#039;string&#039;) {&lt;br /&gt;
		var nt = el.nodeName.toLowerCase();&lt;br /&gt;
		if ( nt == &#039;li&#039; ) { return el; }&lt;br /&gt;
		else if ( nt == &#039;body&#039; ) { return false; }&lt;br /&gt;
		else if ( el.parentNode ) { el=el.parentNode; }&lt;br /&gt;
		else { return false; }&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function footnotePreview(x) {&lt;br /&gt;
        setPopupHTML(&#039;&amp;lt;hr&amp;gt;&#039; + x.innerHTML, &#039;popupPreview&#039;,  pg.idNumber,&lt;br /&gt;
		getValueOf(&#039;popupSubpopups&#039;) ? function() {&lt;br /&gt;
		setupTooltips(document.getElementById(&#039;popupPreview&#039; + pg.idNumber)); &lt;br /&gt;
	} : null);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function mouseOverWikiLink2(a) {&lt;br /&gt;
	// FIXME: should not generate the HTML until the delay has elapsed,&lt;br /&gt;
	//        and then popup immediately. Can be a CPU hog otherwise.&lt;br /&gt;
&lt;br /&gt;
	//log(&#039;mouseOverWikiLink: a=&#039;+a+&#039;, pg.current.link=&#039;+pg.current.link);&lt;br /&gt;
&lt;br /&gt;
	// try not to duplicate effort&lt;br /&gt;
	if ( a==pg.current.link &amp;amp;&amp;amp; a.navpopup &amp;amp;&amp;amp; a.navpopup.isVisible() ) { return; }&lt;br /&gt;
	pg.current.link=a;&lt;br /&gt;
&lt;br /&gt;
	if (getValueOf(&#039;simplePopups&#039;) &amp;amp;&amp;amp; pg.option.popupStructure===null) {&lt;br /&gt;
		// reset *default value* of popupStructure&lt;br /&gt;
		//log (&#039;simplePopups is true and no popupStructure selected. Defaulting to &amp;quot;original&amp;quot;&#039;);&lt;br /&gt;
		setDefault(&#039;popupStructure&#039;, &#039;original&#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var article=(new Title()).fromAnchor(a);&lt;br /&gt;
	// set global variable (ugh) to hold article (wikipage)&lt;br /&gt;
	pg.current.article = article;&lt;br /&gt;
	var diff=null;&lt;br /&gt;
	var oldid=oldidFromAnchor(a);&lt;br /&gt;
	if (getValueOf(&#039;popupPreviewDiffs&#039;)) {&lt;br /&gt;
		diff=diffFromAnchor(a);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (pg.timer.image !== null) {&lt;br /&gt;
		clearInterval(pg.timer.image);&lt;br /&gt;
		pg.timer.image=null;&lt;br /&gt;
		pg.counter.checkImages=0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (!a.navpopup) {&lt;br /&gt;
		log (&#039;mouseoverwikilink2: creating new Navpopup&#039;);&lt;br /&gt;
		a.navpopup = new Navpopup();&lt;br /&gt;
		a.navpopup.fuzz=5;&lt;br /&gt;
		a.navpopup.delay=getValueOf(&#039;popupDelay&#039;)*1000;&lt;br /&gt;
		// increment global counter now&lt;br /&gt;
		a.navpopup.popupIdNumber = ++pg.idNumber;&lt;br /&gt;
		registerHooks(a.navpopup);&lt;br /&gt;
	}&lt;br /&gt;
	if (a.navpopup.pending===null || a.navpopup.pending!==0) {&lt;br /&gt;
		// either fresh popups or those with unfinshed business are redone from scratch&lt;br /&gt;
		log (&#039;doing popup content from scratch; a.navpopup.pending=&#039;+a.navpopup.pending);&lt;br /&gt;
		a.navpopup.setInnerHTML(popupHTML(a));&lt;br /&gt;
		fillEmptySpans();&lt;br /&gt;
	} else {&lt;br /&gt;
		log (&#039;using existing popup content - just showing&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	a.navpopup.showSoonIfStable(a.navpopup.delay);&lt;br /&gt;
&lt;br /&gt;
	getValueOf(&#039;popupInitialWidth&#039;);&lt;br /&gt;
&lt;br /&gt;
	if (typeof pg.timer.checkPopupPosition==typeof 1) { clearInterval(pg.timer.checkPopupPosition); }&lt;br /&gt;
	pg.timer.checkPopupPosition=setInterval(checkPopupPosition, 600);&lt;br /&gt;
&lt;br /&gt;
	if (getValueOf(&#039;popupLiveOptions&#039;)) {&lt;br /&gt;
		setPopupHTML(popupLiveOptionsHTML(), &#039;popupLiveOptions&#039;, pg.idNumber,&lt;br /&gt;
			     function () { popupToggleShowOptions(true); } );&lt;br /&gt;
	}&lt;br /&gt;
	if (getValueOf(&#039;popupRedlinkRemoval&#039;) &amp;amp;&amp;amp; a.className==&#039;new&#039;) {&lt;br /&gt;
		setPopupHTML(&#039;&amp;lt;br&amp;gt;&#039;+popupRedlinkHTML(), &#039;popupRedlink&#039;, pg.idNumber);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if(getValueOf(&#039;simplePopups&#039;)) { return; }&lt;br /&gt;
&lt;br /&gt;
	// We&#039;re creating a closure with all our data in it because... we&#039;re lazy&lt;br /&gt;
	// is this a bad idea?&lt;br /&gt;
	pop.unsimplify = function () {&lt;br /&gt;
		log(&#039;pop.unsimplify&#039;);&lt;br /&gt;
		a.navpopup.unsimplified=true;&lt;br /&gt;
		var previewImage=true;&lt;br /&gt;
&lt;br /&gt;
		pg.misc.gImage=null;&lt;br /&gt;
		//alert(diff+&#039;\n&#039;+oldid);&lt;br /&gt;
		if ( diff===null ) {&lt;br /&gt;
                        var x=footnoteTarget(a);&lt;br /&gt;
                        if (x) {&lt;br /&gt;
                                footnotePreview(x);&lt;br /&gt;
                        }&lt;br /&gt;
			else if (isImage(article) &amp;amp;&amp;amp; ( getValueOf(&#039;imagePopupsForImages&#039;) || ! anchorContainsImage(a) )) {&lt;br /&gt;
				loadImages(article);&lt;br /&gt;
			}&lt;br /&gt;
			else if (!isImage(article) &amp;amp;&amp;amp; previewImage ) {&lt;br /&gt;
				pg.counter.redir=0;&lt;br /&gt;
				loadPreview(article, oldid, diff, a.navpopup);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			loadDiff(article, oldid, diff);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var s=document.getElementById(&#039;popupUnsimplify&#039; + pg.idNumber);&lt;br /&gt;
		if (s &amp;amp;&amp;amp; s.style) {&lt;br /&gt;
			s.style.display=&#039;none&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}; /* pop.unsimplify */&lt;br /&gt;
&lt;br /&gt;
	if (getValueOf(&#039;popupUnsimplifyLink&#039;)) { return; }&lt;br /&gt;
	if (!a.navpopup.unsimplified || a.navpopup.pending!==0 ) {&lt;br /&gt;
		log (&#039;running pop.unsimplify(), unsimplified=&#039;+a.navpopup.unsimplified +&lt;br /&gt;
		     &#039;, pending=&#039;+a.navpopup.pending);&lt;br /&gt;
		a.navpopup.pending=0;&lt;br /&gt;
		pop.unsimplify();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function loadPreview(article, oldid, diff, navpop) {&lt;br /&gt;
	log(&#039;loadPreview(&#039; + article + &#039;, &#039; + oldid + &#039;, &#039; + navpop + &#039;)&#039;);&lt;br /&gt;
	if (navpop &amp;amp;&amp;amp; navpop.pending===null) { navpop.pending=0; }&lt;br /&gt;
	++navpop.pending;&lt;br /&gt;
	getWiki(article, insertPreview, oldid, navpop);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function loadPreviewFromRedir(redirMatch, navpop) {&lt;br /&gt;
	// redirMatch is a regex match&lt;br /&gt;
	//log(&#039;loadPreviewFromRedir, pg.counter.redir=&#039;+pg.counter.redir);&lt;br /&gt;
	var target = new Title().fromWikiText(redirMatch[2]);&lt;br /&gt;
	var trailingRubbish=redirMatch[4];&lt;br /&gt;
	pg.counter.redir++;&lt;br /&gt;
	var warnRedir = redirLink(target);&lt;br /&gt;
&lt;br /&gt;
	setPopupHTML(warnRedir, &#039;popupWarnRedir&#039;);&lt;br /&gt;
	fillEmptySpans({redir: true, redirTarget: target});&lt;br /&gt;
&lt;br /&gt;
	return loadPreview(target, null, null, navpop);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function insertPreview(download) {&lt;br /&gt;
	//log(&#039;insertPreview, pg.counter.redir=&#039;+pg.counter.redir);&lt;br /&gt;
	if (download.id != pg.idNumber) {&lt;br /&gt;
		//log (&#039;insertPreview: download.id=&#039;+download.id+&#039; but pg.idNumber=&#039;+pg.idNumber+&#039;. Bailing...&#039;);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var wikiText=download.data;&lt;br /&gt;
	var navpop=download.owner;&lt;br /&gt;
	if (navpop &amp;amp;&amp;amp; navpop.pending) { --navpop.pending; }&lt;br /&gt;
	var redirMatch = pg.re.redirect.exec(wikiText);&lt;br /&gt;
&lt;br /&gt;
	var art=pg.current.article;&lt;br /&gt;
&lt;br /&gt;
	if (pg.counter.redir===0 &amp;amp;&amp;amp; redirMatch) {&lt;br /&gt;
		pg.current.redirSource=pg.current.article;&lt;br /&gt;
		loadPreviewFromRedir(redirMatch, navpop);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var redirSource=pg.current.redirSource||&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	if (pg.counter.redir===0) { // not a redir, so we don&#039;t have to specify an oldTarget&lt;br /&gt;
		makeFixDabs(wikiText);&lt;br /&gt;
	} else {&lt;br /&gt;
		makeFixDabs(wikiText, redirSource);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	pg.current.redirSource=null;&lt;br /&gt;
	pg.counter.redir=0;&lt;br /&gt;
&lt;br /&gt;
	if (getValueOf(&#039;popupSummaryData&#039;)) {&lt;br /&gt;
		var pgInfo=getPageInfo(wikiText, download);&lt;br /&gt;
		setPopupTrailer(/* &#039;&amp;lt;br&amp;gt;&#039; + */ pgInfo);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var imagePage=getValidImageFromWikiText(wikiText);&lt;br /&gt;
	if(imagePage) {&lt;br /&gt;
		// loadThisImage expects an &amp;quot;address fragment&amp;quot;&lt;br /&gt;
		imagePage = wikiMarkupToAddressFragment(imagePage);&lt;br /&gt;
		loadThisImage(imagePage);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (getValueOf(&#039;popupPreviews&#039;)) {&lt;br /&gt;
		if (download &amp;amp;&amp;amp; typeof download.data == typeof &#039;&#039;){&lt;br /&gt;
			if (isInNamespace(pg.current.article, &#039;Template&#039;) &amp;amp;&amp;amp; getValueOf(&#039;popupPreviewRawTemplates&#039;)) {&lt;br /&gt;
				// FIXME compare/consolidate with diff escaping code for wikitext&lt;br /&gt;
				var h=&#039;&amp;lt;hr&amp;gt;&amp;lt;tt&amp;gt;&#039; + download.data.entify().split(&#039;\\n&#039;).join(&#039;&amp;lt;br&amp;gt;\\n&#039;) + &#039;&amp;lt;/tt&amp;gt;&#039;;&lt;br /&gt;
				setPopupHTML(h, &#039;popupPreview&#039;);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				// deal with tricksy anchors&lt;br /&gt;
				var anch=decodeAnchor(pg.current.article);&lt;br /&gt;
				var d=anchorize(download.data, anch);&lt;br /&gt;
				var p=new Previewmaker(d.substring(0,10000));&lt;br /&gt;
				p.showPreview();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function anchorize(d, anch) {&lt;br /&gt;
	if (!anch) { return d; }&lt;br /&gt;
	var anchRe=RegExp(&#039;=+\\s*&#039; + literalizeRegex(anch).replace(/[_ ]/g, &#039;[_ ]&#039;) + &#039;\\s*=+&#039;);&lt;br /&gt;
	var match=d.match(anchRe);&lt;br /&gt;
	if(match &amp;amp;&amp;amp; match.length &amp;gt; 0 &amp;amp;&amp;amp; match[0]) { return d.substring(d.indexOf(match[0])); }&lt;br /&gt;
&lt;br /&gt;
	// now try to deal with == foo [[bar|baz]] boom == -&amp;gt; #foo_baz_boom&lt;br /&gt;
	var lines=d.split(&#039;\n&#039;);&lt;br /&gt;
	for (var i=0; i&amp;lt;lines.length; ++i) {&lt;br /&gt;
		lines[i]=lines[i].replace(RegExp(&#039;[[]{2}([^|\\]]*?[|])?(.*?)[\\]]{2}&#039;, &#039;g&#039;), &#039;$2&#039;);&lt;br /&gt;
		if (lines[i].match(anchRe)) {&lt;br /&gt;
			return d.split(&#039;\n&#039;).slice(i).join(&#039;\n&#039;).replace(RegExp(&#039;^[^=]*&#039;), &#039;&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return d;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function killPopup() {&lt;br /&gt;
	if (getValueOf(&#039;popupShortcutKeys&#039;)) { rmPopupShortcuts(); }&lt;br /&gt;
	pg.current.link.navpopup.banish();&lt;br /&gt;
	pg.current.link=null;&lt;br /&gt;
	abortAllDownloads();&lt;br /&gt;
	stopImagesDownloading();&lt;br /&gt;
	if (pg.timer.checkPopupPosition !== null) {&lt;br /&gt;
		clearInterval(pg.timer.checkPopupPosition);&lt;br /&gt;
		pg.timer.checkPopupPosition=null;&lt;br /&gt;
	}&lt;br /&gt;
	if (pg.timer.checkImages !== null) { clearInterval(pg.timer.checkImages); pg.timer.checkImages=null; }&lt;br /&gt;
	if (pg.timer.image !== null) { clearInterval(pg.timer.image); pg.timer.image=null; }&lt;br /&gt;
	return true; // preserve default action (eg from &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: actions.js&lt;br /&gt;
// STARTFILE: domdrag.js&lt;br /&gt;
/**&lt;br /&gt;
   @fileoverview&lt;br /&gt;
   The {@link Drag} object, which enables objects to be dragged around.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
   *************************************************&lt;br /&gt;
   dom-drag.js&lt;br /&gt;
   09.25.2001&lt;br /&gt;
   www.youngpup.net&lt;br /&gt;
   **************************************************&lt;br /&gt;
   10.28.2001 - fixed minor bug where events&lt;br /&gt;
   sometimes fired off the handle, not the root.&lt;br /&gt;
   *************************************************&lt;br /&gt;
   Pared down, some hooks added by [[User:Lupin]]&lt;br /&gt;
&lt;br /&gt;
   Copyright Aaron Boodman.&lt;br /&gt;
   Saying stupid things daily since March 2001.&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates a new Drag object. This is used to make various DOM elements draggable.&lt;br /&gt;
   @constructor&lt;br /&gt;
*/&lt;br /&gt;
function Drag () {&lt;br /&gt;
	/**&lt;br /&gt;
	   Condition to determine whether or not to drag. This function should take one parameter, an Event.&lt;br /&gt;
	   To disable this, set it to &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
	   @type Function&lt;br /&gt;
	*/&lt;br /&gt;
	this.startCondition = null;&lt;br /&gt;
	/**&lt;br /&gt;
	   Hook to be run when the drag finishes. This is passed the final coordinates of&lt;br /&gt;
	   the dragged object (two integers, x and y). To disables this, set it to &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
	   @type Function&lt;br /&gt;
	*/&lt;br /&gt;
	this.endHook = null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Gets an event in a cross-browser manner.&lt;br /&gt;
   @param {Event} e&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Drag.prototype.fixE = function(e) {&lt;br /&gt;
	if (typeof e == &#039;undefined&#039;) { e = window.event; }&lt;br /&gt;
	if (typeof e.layerX == &#039;undefined&#039;) { e.layerX = e.offsetX; }&lt;br /&gt;
	if (typeof e.layerY == &#039;undefined&#039;) { e.layerY = e.offsetY; }&lt;br /&gt;
	return e;&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
   Initialises the Drag instance by telling it which object you want to be draggable, and what you want to drag it by.&lt;br /&gt;
   @param {DOMElement} o The &amp;quot;handle&amp;quot; by which &amp;lt;code&amp;gt;oRoot&amp;lt;/code&amp;gt; is dragged.&lt;br /&gt;
   @param {DOMElement} oRoot The object which moves when &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; is dragged, or &amp;lt;code&amp;gt;o&amp;lt;/code&amp;gt; if omitted.&lt;br /&gt;
*/&lt;br /&gt;
Drag.prototype.init = function(o, oRoot) {&lt;br /&gt;
	var dragObj      = this;&lt;br /&gt;
	this.obj = o;&lt;br /&gt;
	o.onmousedown    = function(e) { dragObj.start.apply( dragObj, [e]); };&lt;br /&gt;
	o.dragging       = false;&lt;br /&gt;
	o.draggable      = true;&lt;br /&gt;
	o.hmode          = true ;&lt;br /&gt;
	o.vmode          = true ;&lt;br /&gt;
&lt;br /&gt;
	o.root = oRoot &amp;amp;&amp;amp; oRoot !== null ? oRoot : o ;&lt;br /&gt;
&lt;br /&gt;
	if (isNaN(parseInt(o.root.style.left, 10))) { o.root.style.left   = &amp;quot;0px&amp;quot;; }&lt;br /&gt;
	if (isNaN(parseInt(o.root.style.top,  10))) { o.root.style.top    = &amp;quot;0px&amp;quot;; }&lt;br /&gt;
&lt;br /&gt;
	o.root.onthisStart  = function(){};&lt;br /&gt;
	o.root.onthisEnd    = function(){};&lt;br /&gt;
	o.root.onthis       = function(){};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Starts the drag.&lt;br /&gt;
   @private&lt;br /&gt;
   @param {Event} e&lt;br /&gt;
*/&lt;br /&gt;
Drag.prototype.start = function(e) {&lt;br /&gt;
	var o = this.obj; // = this;&lt;br /&gt;
	e = this.fixE(e);&lt;br /&gt;
	if (this.startCondition &amp;amp;&amp;amp; !this.startCondition(e)) { return; }&lt;br /&gt;
	var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom, 10);&lt;br /&gt;
	var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right,  10);&lt;br /&gt;
	o.root.onthisStart(x, y);&lt;br /&gt;
&lt;br /&gt;
	o.lastMouseX    = e.clientX;&lt;br /&gt;
	o.lastMouseY    = e.clientY;&lt;br /&gt;
&lt;br /&gt;
	var dragObj      = this;&lt;br /&gt;
	o.onmousemoveDefault    = document.onmousemove;&lt;br /&gt;
	o.dragging              = true;&lt;br /&gt;
	document.onmousemove    = function(e) { dragObj.drag.apply( dragObj, [e] ); };&lt;br /&gt;
	document.onmouseup      = function(e) { dragObj.end.apply( dragObj, [e] ); };&lt;br /&gt;
	return false;&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
   Does the drag.&lt;br /&gt;
   @param {Event} e&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Drag.prototype.drag = function(e) {&lt;br /&gt;
	e = this.fixE(e);&lt;br /&gt;
	var o = this.obj;&lt;br /&gt;
&lt;br /&gt;
	var ey    = e.clientY;&lt;br /&gt;
	var ex    = e.clientX;&lt;br /&gt;
	var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom, 10);&lt;br /&gt;
	var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right,  10 );&lt;br /&gt;
	var nx, ny;&lt;br /&gt;
&lt;br /&gt;
	nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));&lt;br /&gt;
	ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));&lt;br /&gt;
&lt;br /&gt;
	if (o.xMapper)        { nx = o.xMapper(y); }&lt;br /&gt;
	else if (o.yMapper)   { ny = o.yMapper(x); }&lt;br /&gt;
&lt;br /&gt;
	this.obj.root.style[o.hmode ? &amp;quot;left&amp;quot; : &amp;quot;right&amp;quot;] = nx + &amp;quot;px&amp;quot;;&lt;br /&gt;
	this.obj.root.style[o.vmode ? &amp;quot;top&amp;quot; : &amp;quot;bottom&amp;quot;] = ny + &amp;quot;px&amp;quot;;&lt;br /&gt;
	this.obj.lastMouseX    = ex;&lt;br /&gt;
	this.obj.lastMouseY    = ey;&lt;br /&gt;
&lt;br /&gt;
	this.obj.root.onthis(nx, ny);&lt;br /&gt;
	return false;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Ends the drag.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Drag.prototype.end = function()  {&lt;br /&gt;
	document.onmousemove=this.obj.onmousemoveDefault;&lt;br /&gt;
	document.onmouseup   = null;&lt;br /&gt;
	this.obj.dragging    = false;&lt;br /&gt;
	if (this.endHook) {&lt;br /&gt;
		this.endHook( parseInt(this.obj.root.style[this.obj.hmode ? &amp;quot;left&amp;quot; : &amp;quot;right&amp;quot;], 10),&lt;br /&gt;
			      parseInt(this.obj.root.style[this.obj.vmode ? &amp;quot;top&amp;quot; : &amp;quot;bottom&amp;quot;], 10));&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: domdrag.js&lt;br /&gt;
// STARTFILE: liveoptions.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// live options nonsense&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
function popupToggleVar(varstring) {&lt;br /&gt;
	pg.option[varstring] = ! getValueOf(varstring);&lt;br /&gt;
	if (getValueOf(&#039;popupCookies&#039;)) {&lt;br /&gt;
		Cookie.create(pg.option[varstring], String(pg.option[varstring]));&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupToggleShowOptions (dummy) {&lt;br /&gt;
	// just update state if dummy is true&lt;br /&gt;
	getValueOf(&#039;popupLiveOptionsExpanded&#039;);&lt;br /&gt;
	if (!dummy) { pg.option.popupLiveOptionsExpanded=!pg.option.popupLiveOptionsExpanded; }&lt;br /&gt;
	setPopupHTML((pg.option.popupLiveOptionsExpanded) ? &#039;&amp;amp;lt;&amp;amp;lt;&#039; : &#039;&amp;amp;gt;&amp;amp;gt;&#039;,&lt;br /&gt;
		     &#039;optionPopped&#039;);&lt;br /&gt;
	var s=document.getElementById(&#039;popupOptionsDiv&#039;);&lt;br /&gt;
	// if (!s) return;&lt;br /&gt;
	if (pg.option.popupLiveOptionsExpanded) { s.style.display=&#039;inline&#039;; }&lt;br /&gt;
	else { s.style.display=&#039;none&#039;; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupOptionsCheckboxHTML(varstring, label, title) {&lt;br /&gt;
	var html=&#039;&amp;lt;br&amp;gt;&#039;;&lt;br /&gt;
	html += &#039;&amp;lt;span title=&amp;quot;&#039;+title+&#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	html += &#039;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;&#039;+varstring+&#039;Checkbox&amp;quot; &#039;;&lt;br /&gt;
	html += (window[varstring]) ? &#039;checked=&amp;quot;checked&amp;quot; &#039; : &#039;&#039;;&lt;br /&gt;
	html += &#039;onClick=&amp;quot;javascript:popupToggleVar(&#039; + &amp;quot;&#039;&amp;quot; + varstring + &amp;quot;&#039;&amp;quot; +&lt;br /&gt;
		&#039;)&amp;quot;&amp;gt;&#039; + label + &#039;&amp;lt;/input&amp;gt;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	return html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupLiveOptionsHTML() {&lt;br /&gt;
	var html = &#039;&#039;;&lt;br /&gt;
	html += &#039;&amp;lt;br&amp;gt;&#039;;&lt;br /&gt;
	html += &#039;&amp;lt;span title=&amp;quot;&#039; + popupString(&#039;Show/hide options&#039;) + &#039;&amp;quot; &#039;;&lt;br /&gt;
	html += &#039;style=&amp;quot;border: thin dotted black; cursor: pointer&amp;quot; &#039;;&lt;br /&gt;
	html += &#039;onClick=&amp;quot;javascript:popupToggleShowOptions()&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	html += &#039;Options &amp;lt;span id=&amp;quot;optionPopped&#039; + pg.idNumber + &#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	html += &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	html += &#039;&amp;lt;div style=&amp;quot;display: none&amp;quot; id=&amp;quot;popupOptionsDiv&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	html += popupOptionsCheckboxHTML(&#039;simplePopups&#039;, popupString(&#039;Simple popups&#039;),&lt;br /&gt;
					 popupString(&#039;Never download extra stuff for images/previews&#039;));&lt;br /&gt;
	html += popupOptionsCheckboxHTML(&#039;popupUnsimplifyLink&#039;, popupString(&#039;Preview only on click&#039;),&lt;br /&gt;
					 popupString(&#039;Only start downloading when told to do so&#039;));&lt;br /&gt;
	html += popupOptionsCheckboxHTML(&#039;popupNavLinks&#039;, popupString(&#039;Show navigation links&#039;),&lt;br /&gt;
					 popupString(&#039;Display navigation links at the top of the popup&#039;));&lt;br /&gt;
	html += popupOptionsCheckboxHTML(&#039;popupImages&#039;, popupString(&#039;Show image previews&#039;),&lt;br /&gt;
					 popupString(&#039;Load images&#039;));&lt;br /&gt;
	html += popupOptionsCheckboxHTML(&#039;popupSummaryData&#039;, popupString(&#039;Show summary data&#039;),&lt;br /&gt;
					 popupString(&#039;Show page summary data&#039;));&lt;br /&gt;
	html += popupOptionsCheckboxHTML(&#039;popupPreviews&#039;, popupString(&#039;Show text previews&#039;),&lt;br /&gt;
					 popupString(&#039;Show previews&#039;));&lt;br /&gt;
&lt;br /&gt;
	var extraOptions=[&lt;br /&gt;
		&#039;imagePopupsForImages&#039;,&lt;br /&gt;
		&#039;popupAdminLinks&#039;,&lt;br /&gt;
		&#039;popupAppendRedirNavLinks&#039;,&lt;br /&gt;
		&#039;popupCookies&#039;,&lt;br /&gt;
		&#039;popupFixDabs&#039;,&lt;br /&gt;
		&#039;popupFixRedirs&#039;,&lt;br /&gt;
		&#039;popupHistoricalLinks&#039;,&lt;br /&gt;
		&#039;popupImagesFromThisWikiOnly&#039;,&lt;br /&gt;
		&#039;popupImagesToggleSize&#039;,&lt;br /&gt;
		&#039;popupLastEditLink&#039;,&lt;br /&gt;
		&#039;popupLiveOptions&#039;,&lt;br /&gt;
		&#039;popupLoadImagesSequentially&#039;,&lt;br /&gt;
		&#039;popupNeverGetThumbs&#039;,&lt;br /&gt;
		&#039;popupOnlyArticleLinks&#039;,&lt;br /&gt;
		&#039;popupPreviewKillTemplates&#039;,&lt;br /&gt;
		&#039;popupPreviewFirstParOnly&#039;,&lt;br /&gt;
		&#039;popupShortcutKeys&#039;,&lt;br /&gt;
		&#039;popupSimplifyMainLink&#039;,&lt;br /&gt;
		&#039;removeTitles&#039; // no ,&lt;br /&gt;
		];&lt;br /&gt;
	for (var i=0; i&amp;lt;extraOptions.length; ++i) {&lt;br /&gt;
		html += popupOptionsCheckboxHTML(extraOptions[i], extraOptions[i], popupString(&#039;Toggle this option&#039;));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	html += &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
	return html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: liveoptions.js&lt;br /&gt;
// STARTFILE: structures.js&lt;br /&gt;
pg.structures.original={};&lt;br /&gt;
pg.structures.original.popupLayout=function () {&lt;br /&gt;
	return [&#039;popupBar&#039;, &#039;popupError&#039;, &#039;popupImage&#039;, &#039;popupTopLinks&#039;, &#039;popupTitle&#039;, &#039;popupData&#039;, &#039;popupOtherLinks&#039;,&lt;br /&gt;
		&#039;popupRedir&#039;, [&#039;popupWarnRedir&#039;, &#039;popupRedirTopLinks&#039;, &#039;popupRedirTitle&#039;, &#039;popupRedirData&#039;, &#039;popupRedirOtherLinks&#039;],&lt;br /&gt;
		&#039;popupMiscTools&#039;, [&#039;popupRedlink&#039;, &#039;popupLiveOptions&#039;, &#039;popupUnsimplify&#039;],&lt;br /&gt;
		&#039;popupPreview&#039;, &#039;popupFixDab&#039;];&lt;br /&gt;
};&lt;br /&gt;
pg.structures.original.popupRedirSpans=function () {&lt;br /&gt;
	return [&#039;popupRedir&#039;, &#039;popupWarnRedir&#039;, &#039;popupRedirTopLinks&#039;, &#039;popupRedirTitle&#039;, &#039;popupRedirData&#039;, &#039;popupRedirOtherLinks&#039;];&lt;br /&gt;
};&lt;br /&gt;
pg.structures.original.popupTitle=function (x) {&lt;br /&gt;
	log (&#039;defaultstructure.popupTitle&#039;);&lt;br /&gt;
	if (!getValueOf(&#039;popupNavLinks&#039;)) { return navlinkStringToHTML(&#039;&amp;lt;b&amp;gt;&amp;lt;&amp;lt;mainlink&amp;gt;&amp;gt;&amp;lt;/b&amp;gt;&#039;,x.article,x.oldid); }&lt;br /&gt;
	return &#039;&#039;;&lt;br /&gt;
};&lt;br /&gt;
pg.structures.original.popupTopLinks=function (x) {&lt;br /&gt;
	log (&#039;defaultstructure.popupTopLinks&#039;);&lt;br /&gt;
	if (getValueOf(&#039;popupNavLinks&#039;)) { return navLinksHTML(x.article, x.hint, x.oldid); }&lt;br /&gt;
	return &#039;&#039;;&lt;br /&gt;
};&lt;br /&gt;
pg.structures.original.popupImage=function(x) {&lt;br /&gt;
	log (&#039;original.popupImage, x.article=&#039;+x.article+&#039;, pg.idNumber=&#039;+pg.idNumber);&lt;br /&gt;
	return imageHTML(x.article);&lt;br /&gt;
};&lt;br /&gt;
pg.structures.original.popupUnsimplify=function(x) {&lt;br /&gt;
	if (getValueOf(&#039;popupUnsimplifyLink&#039;)) {&lt;br /&gt;
		return &#039;&amp;lt;br&amp;gt;&amp;lt;span onClick=&amp;quot;javascript:pop.unsimplify()&amp;quot; &#039; +&lt;br /&gt;
		&#039;style=&amp;quot;cursor:pointer; border: thin dotted black&amp;quot; &#039;  +&lt;br /&gt;
		&#039;title=&amp;quot;&#039; +popupString(&#039;Download preview data&#039;) + &#039;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
		&#039;Get preview data&#039; + &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	return &#039;&#039;;&lt;br /&gt;
};&lt;br /&gt;
pg.structures.original.popupRedirTitle=pg.structures.original.popupTitle;&lt;br /&gt;
pg.structures.original.popupRedirTopLinks=pg.structures.original.popupTopLinks;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function copyStructure(oldStructure, newStructure) {&lt;br /&gt;
	pg.structures[newStructure]={};&lt;br /&gt;
	for (var prop in pg.structures[oldStructure]) {&lt;br /&gt;
		pg.structures[newStructure][prop]=pg.structures[oldStructure][prop];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** -- fancy -- **/&lt;br /&gt;
copyStructure(&#039;original&#039;, &#039;fancy&#039;);&lt;br /&gt;
pg.structures.fancy.popupTitle=function (x) {&lt;br /&gt;
	return navlinkStringToHTML(&#039;&amp;lt;font size=+0&amp;gt;&amp;lt;&amp;lt;mainlink&amp;gt;&amp;gt;&amp;lt;/font&amp;gt;&#039;,x.article,x.oldid);&lt;br /&gt;
};&lt;br /&gt;
pg.structures.fancy.popupTopLinks=function(x) {&lt;br /&gt;
	var hist=&#039;&amp;lt;&amp;lt;history|shortcut=h|hist&amp;gt;&amp;gt;|&amp;lt;&amp;lt;lastEdit|shortcut=/|last&amp;gt;&amp;gt;if(mainspace_en){|&amp;lt;&amp;lt;editors|shortcut=E|eds&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
	var watch=&#039;&amp;lt;&amp;lt;unwatch|unwatchShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;watch|shortcut=w|watchThingy&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var move=&#039;&amp;lt;&amp;lt;move|shortcut=m|move&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	return navlinkStringToHTML(&#039;if(talk){&#039; +&lt;br /&gt;
				   &#039;&amp;lt;&amp;lt;edit|shortcut=e&amp;gt;&amp;gt;|&amp;lt;&amp;lt;new|shortcut=+|+&amp;gt;&amp;gt;*&#039; + hist + &#039;*&#039; +&lt;br /&gt;
				   &#039;&amp;lt;&amp;lt;article|shortcut=a&amp;gt;&amp;gt;|&amp;lt;&amp;lt;editArticle|edit&amp;gt;&amp;gt;&#039; + &#039;*&#039; + watch + &#039;*&#039; + move +&lt;br /&gt;
				   &#039;}else{&amp;lt;&amp;lt;edit|shortcut=e&amp;gt;&amp;gt;*&#039; + hist +&lt;br /&gt;
				   &#039;*&amp;lt;&amp;lt;talk|shortcut=t|&amp;gt;&amp;gt;|&amp;lt;&amp;lt;editTalk|edit&amp;gt;&amp;gt;|&amp;lt;&amp;lt;newTalk|shortcut=+|new&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
				   &#039;*&#039; + watch + &#039;*&#039; + move+&#039;}&amp;lt;br&amp;gt;&#039;, x.article, x.oldid);&lt;br /&gt;
};&lt;br /&gt;
pg.structures.fancy.popupOtherLinks=function(x) {&lt;br /&gt;
	var admin=&#039;&amp;lt;&amp;lt;unprotect|unprotectShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;protect|shortcut=p&amp;gt;&amp;gt;*&amp;lt;&amp;lt;undelete|undeleteShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;delete|shortcut=d|del&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var user=&#039;&amp;lt;&amp;lt;contribs|shortcut=c&amp;gt;&amp;gt;if(wikimedia){|&amp;lt;&amp;lt;count|shortcut=#|#&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
	user+=&#039;if(ipuser){|&amp;lt;&amp;lt;arin&amp;gt;&amp;gt;}else{*&amp;lt;&amp;lt;email|shortcut=E|&#039;+&lt;br /&gt;
	popupString(&#039;email&#039;)+&#039;&amp;gt;&amp;gt;}if(admin){*&amp;lt;&amp;lt;block|shortcut=b&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
&lt;br /&gt;
	var normal=&#039;&amp;lt;&amp;lt;whatLinksHere|shortcut=l|links here&amp;gt;&amp;gt;*&amp;lt;&amp;lt;relatedChanges|shortcut=r|related&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	return navlinkStringToHTML(&#039;&amp;lt;br&amp;gt;if(user){&#039; + user + &#039;*}if(admin){&#039;+admin+&#039;if(user){&amp;lt;br&amp;gt;}else{*}}&#039; + normal,&lt;br /&gt;
				   x.article, x.oldid);&lt;br /&gt;
};&lt;br /&gt;
pg.structures.fancy.popupRedirTitle=pg.structures.fancy.popupTitle;&lt;br /&gt;
pg.structures.fancy.popupRedirTopLinks=pg.structures.fancy.popupTopLinks;&lt;br /&gt;
pg.structures.fancy.popupRedirOtherLinks=pg.structures.fancy.popupOtherLinks;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/** -- fancy2 -- **/&lt;br /&gt;
// hack for [[User:MacGyverMagic]]&lt;br /&gt;
copyStructure(&#039;fancy&#039;, &#039;fancy2&#039;);&lt;br /&gt;
pg.structures.fancy2.popupTopLinks=function(x) { // hack out the &amp;lt;br&amp;gt; at the end and put one at the beginning&lt;br /&gt;
	return &#039;&amp;lt;br&amp;gt;&#039;+pg.structures.fancy.popupTopLinks(x).replace(RegExp(&#039;&amp;lt;br&amp;gt;$&#039;,&#039;i&#039;),&#039;&#039;);&lt;br /&gt;
};&lt;br /&gt;
pg.structures.fancy2.popupLayout=function () { // move toplinks to after the title&lt;br /&gt;
	return [&#039;popupBar&#039;, &#039;popupError&#039;, &#039;popupImage&#039;, &#039;popupTitle&#039;, &#039;popupData&#039;, &#039;popupTopLinks&#039;, &#039;popupOtherLinks&#039;,&lt;br /&gt;
		&#039;popupRedir&#039;, [&#039;popupWarnRedir&#039;, &#039;popupRedirTopLinks&#039;, &#039;popupRedirTitle&#039;, &#039;popupRedirData&#039;, &#039;popupRedirOtherLinks&#039;],&lt;br /&gt;
		&#039;popupMiscTools&#039;, [&#039;popupRedlink&#039;, &#039;popupLiveOptions&#039;, &#039;popupUnsimplify&#039;],&lt;br /&gt;
		&#039;popupPreview&#039;, &#039;popupFixDab&#039;];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/** -- menus -- **/&lt;br /&gt;
copyStructure(&#039;original&#039;, &#039;menus&#039;);&lt;br /&gt;
pg.structures.menus.popupLayout=function () {&lt;br /&gt;
	return [&#039;popupBar&#039;, &#039;popupError&#039;, &#039;popupImage&#039;, &#039;popupTopLinks&#039;, &#039;popupTitle&#039;, &#039;popupOtherLinks&#039;,&lt;br /&gt;
		&#039;popupRedir&#039;, [&#039;popupWarnRedir&#039;, &#039;popupRedirTopLinks&#039;, &#039;popupRedirTitle&#039;, &#039;popupRedirData&#039;, &#039;popupRedirOtherLinks&#039;],&lt;br /&gt;
		&#039;popupData&#039;, &#039;popupMiscTools&#039;, [&#039;popupRedlink&#039;, &#039;popupLiveOptions&#039;, &#039;popupUnsimplify&#039;],&lt;br /&gt;
		&#039;popupPreview&#039;, &#039;popupFixDab&#039;];&lt;br /&gt;
};&lt;br /&gt;
pg.structures.menus.popupBar = function (x) {&lt;br /&gt;
	// return &amp;lt;a href=&amp;quot;javascript:toggleSticky(&#039; + pg.current.link.navpopup.uid + &#039;)&amp;quot;&amp;gt;(un)stick&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
	return &#039;&#039;;&lt;br /&gt;
};&lt;br /&gt;
function toggleSticky(uid) {&lt;br /&gt;
	var popDiv=document.getElementById(&#039;navpopup_maindiv&#039;+uid);&lt;br /&gt;
	if (!popDiv) { return; }&lt;br /&gt;
	if (!popDiv.navpopup.sticky) { popDiv.navpopup.stick(); }&lt;br /&gt;
	else {&lt;br /&gt;
		popDiv.navpopup.unstick();&lt;br /&gt;
		popDiv.navpopup.hide();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
pg.structures.menus.popupTopLinks = function (x) {&lt;br /&gt;
	var s=&#039;&#039;;&lt;br /&gt;
	var dropdiv=&#039;&amp;lt;div class=&amp;quot;popup_drop&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	//var menuul=&#039;&amp;lt;ul class=&amp;quot;popup_menu&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	var endul = &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
	var enddiv=&#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
	var endspan=&#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	var hist=&#039;if(mainspace_en){&amp;lt;menurow&amp;gt;}&amp;lt;&amp;lt;history|shortcut=h&amp;gt;&amp;gt;if(mainspace_en){|&amp;lt;&amp;lt;editors|shortcut=E&amp;gt;&amp;gt;&amp;lt;/menurow&amp;gt;}&#039;;&lt;br /&gt;
	var lastedit=&#039;&amp;lt;&amp;lt;lastEdit|shortcut=/|show last edit&amp;gt;&amp;gt;&amp;lt;&amp;lt;lastContrib|last set of edits&amp;gt;&amp;gt;&amp;lt;&amp;lt;sinceMe|changes since mine&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var linkshere=&#039;&amp;lt;&amp;lt;whatLinksHere|shortcut=l|what links here&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var related=&#039;&amp;lt;&amp;lt;relatedChanges|shortcut=r|related changes&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var search=&#039;&amp;lt;&amp;lt;search|shortcut=s&amp;gt;&amp;gt;if(wikimedia){|&amp;lt;&amp;lt;globalsearch|shortcut=g|global&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
	search += &#039;|&amp;lt;&amp;lt;google|shortcut=G|web&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var watch=&#039;&amp;lt;&amp;lt;unwatch|unwatchShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;watch|shortcut=w|watchThingy&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var protect=&#039;&amp;lt;&amp;lt;unprotect|unprotectShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;protect|shortcut=p&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var del=&#039;&amp;lt;&amp;lt;undelete|undeleteShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;delete|shortcut=d&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var move=&#039;&amp;lt;&amp;lt;move|shortcut=m|move page&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	if (getValueOf(&#039;popupActionsMenu&#039;)) {&lt;br /&gt;
		s += &#039;&amp;lt;&amp;lt;mainlink&amp;gt;&amp;gt;*&#039; + dropdiv + &#039;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&#039;+popupString(&#039;actions&#039;) + &#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
	} else { s+= dropdiv + &#039;&amp;lt;&amp;lt;mainlink&amp;gt;&amp;gt;&#039;; }&lt;br /&gt;
	s+= &#039;&amp;lt;menu&amp;gt;&#039; +&lt;br /&gt;
	&#039;if(oldid){&amp;lt;menurow&amp;gt;&amp;lt;&amp;lt;edit|shortcut=e&amp;gt;&amp;gt;|&amp;lt;&amp;lt;editOld|shortcut=e|this&amp;amp;nbsp;revision&amp;gt;&amp;gt;&amp;lt;/menurow&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;revert|shortcut=v&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;}else{&amp;lt;&amp;lt;edit|shortcut=e&amp;gt;&amp;gt;}&#039; +&lt;br /&gt;
	&#039;if(talk){&amp;lt;&amp;lt;new|shortcut=+|new topic&amp;gt;&amp;gt;}&#039; +&lt;br /&gt;
	hist + lastedit + move + linkshere + related +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;nullEdit|shortcut=n|null edit&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;menurow&amp;gt;&#039; + search + &#039;&amp;lt;/menurow&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;hr&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;menurow&amp;gt;&#039; + watch + &#039;&amp;lt;/menurow&amp;gt;&#039; +&lt;br /&gt;
	&#039;if(admin){&amp;lt;menurow&amp;gt;&#039; + protect + &#039;&amp;lt;/menurow&amp;gt;&amp;lt;menurow&amp;gt;&#039; + del + &#039;&amp;lt;/menurow&amp;gt;}&#039; +&lt;br /&gt;
	&#039;if(talk){&#039; +&lt;br /&gt;
	&#039;&amp;lt;hr&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;article|shortcut=a|view article&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;editArticle|edit article&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;}else{&#039; +&lt;br /&gt;
	&#039;&amp;lt;hr&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;talk|shortcut=t|talk page&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;editTalk|edit talk&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;newTalk|shortcut=+|new topic&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;}&#039; +&lt;br /&gt;
	&#039;&amp;lt;/menu&amp;gt;&#039; + enddiv;&lt;br /&gt;
	s+=&#039;if(user){*&#039; + dropdiv + &#039;&amp;lt;a href=&amp;quot;#&amp;quot;&amp;gt;&#039;+popupString(&#039;user&#039;)+&#039;&amp;lt;/a&amp;gt;&#039; + &lt;br /&gt;
	&#039;&amp;lt;menu&amp;gt;&#039; + &lt;br /&gt;
	&#039;&amp;lt;menurow&amp;gt;&amp;lt;&amp;lt;userPage|shortcut=u|user&amp;amp;nbsp;page&amp;gt;&amp;gt;|&amp;lt;&amp;lt;userSpace|space&amp;gt;&amp;gt;&amp;lt;/menurow&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;userTalk|shortcut=t|user talk&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;editUserTalk|edit user talk&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;newUserTalk|shortcut=+|leave comment&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;if(ipuser){&amp;lt;&amp;lt;arin&amp;gt;&amp;gt;}else{&amp;lt;&amp;lt;email|shortcut=E|email user&amp;gt;&amp;gt;}&#039; +&lt;br /&gt;
	&#039;&amp;lt;hr&amp;gt;&#039; +&lt;br /&gt;
	&#039;if(wikimedia){&amp;lt;menurow&amp;gt;}&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;contribs|shortcut=c|contributions&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;if(wikimedia){|&amp;lt;&amp;lt;contribsTree|tree&amp;gt;&amp;gt;&amp;lt;/menurow&amp;gt;}&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;userlog|shortcut=L|user log&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	&#039;if(wikimedia){&amp;lt;&amp;lt;count|shortcut=#|edit counter&amp;gt;&amp;gt;}&#039; +&lt;br /&gt;
	&#039;if(admin){&amp;lt;menurow&amp;gt;&amp;lt;&amp;lt;unblock|unblockShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;block|shortcut=b|block user&amp;gt;&amp;gt;&amp;lt;/menurow&amp;gt;}&#039; +&lt;br /&gt;
	&#039;&amp;lt;&amp;lt;blocklog|shortcut=B|block log&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
	getValueOf(&#039;popupExtraUserMenu&#039;) +&lt;br /&gt;
	&#039;&amp;lt;/menu&amp;gt;&#039;  + enddiv + &#039;}&#039;;&lt;br /&gt;
	return navlinkStringToHTML(s, x.article, x.oldid);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
pg.structures.menus.popupRedirTitle=pg.structures.menus.popupTitle;&lt;br /&gt;
pg.structures.menus.popupRedirTopLinks=pg.structures.menus.popupTopLinks;&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: structures.js&lt;br /&gt;
// STARTFILE: autoedit.js&lt;br /&gt;
function getParamValue(paramName, h) {&lt;br /&gt;
	if (typeof h == &#039;undefined&#039; ) { h = document.location.href; }&lt;br /&gt;
	var cmdRe=RegExp(&#039;[&amp;amp;?]&#039;+paramName+&#039;=([^&amp;amp;]*)&#039;);&lt;br /&gt;
	var m=cmdRe.exec(h);&lt;br /&gt;
	if (m) {&lt;br /&gt;
		try {&lt;br /&gt;
			return decodeURI(m[1]);&lt;br /&gt;
		} catch (someError) {}&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function substitute(data,cmdBody) {&lt;br /&gt;
	// alert(&#039;sub\nfrom: &#039;+cmdBody.from+&#039;\nto: &#039;+cmdBody.to+&#039;\nflags: &#039;+cmdBody.flags);&lt;br /&gt;
	var fromRe=RegExp(cmdBody.from, cmdBody.flags);&lt;br /&gt;
	return data.replace(fromRe, cmdBody.to);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function execCmds(data, cmdList) {&lt;br /&gt;
	for (var i=0; i&amp;lt;cmdList.length; ++i) {&lt;br /&gt;
		data=cmdList[i].action(data, cmdList[i]);&lt;br /&gt;
	}&lt;br /&gt;
	return data;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function parseCmd(str) {&lt;br /&gt;
	// returns a list of commands&lt;br /&gt;
	if (!str.length) { return []; }&lt;br /&gt;
	var p=false;&lt;br /&gt;
	switch (str.charAt(0)) {&lt;br /&gt;
	case &#039;s&#039;:&lt;br /&gt;
		p=parseSubstitute(str);&lt;br /&gt;
		break;&lt;br /&gt;
	case &#039;j&#039;:&lt;br /&gt;
		p=parseJavascript(str);&lt;br /&gt;
		break;&lt;br /&gt;
	default:&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	if (p) { return [p].concat(parseCmd(p.remainder)); }&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function unEscape(str, sep) {&lt;br /&gt;
	return str.split(&#039;\\\\&#039;).join(&#039;\\&#039;).split(&#039;\\&#039;+sep).join(sep).split(&#039;\\n&#039;).join(&#039;\n&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function runJavascript(data, argWrapper) {&lt;br /&gt;
	// flags aren&#039;t used (yet)&lt;br /&gt;
&lt;br /&gt;
	// from the user&#039;s viewpoint,&lt;br /&gt;
	// data is a special variable may appear inside code&lt;br /&gt;
	// and gets assigned the text in the edit box&lt;br /&gt;
&lt;br /&gt;
	// alert(&#039;eval-ing &#039;+argWrapper.code);&lt;br /&gt;
&lt;br /&gt;
	// commenting this out - it&#039;s something of a security nightmare and it&#039;s not actually used&lt;br /&gt;
&lt;br /&gt;
	//return eval(argWrapper.code);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function parseJavascript(str) {&lt;br /&gt;
	// takes a string like j/code/;othercmds and parses it&lt;br /&gt;
&lt;br /&gt;
	var tmp,code,flags;&lt;br /&gt;
&lt;br /&gt;
	if (str.length&amp;lt;3) { return false; }&lt;br /&gt;
	var sep=str.charAt(1);&lt;br /&gt;
	str=str.substring(2);&lt;br /&gt;
&lt;br /&gt;
	tmp=skipOver(str,sep);&lt;br /&gt;
	if (tmp) { code=tmp.segment.split(&#039;\n&#039;).join(&#039;\\n&#039;); str=tmp.remainder; }&lt;br /&gt;
	else { return false; }&lt;br /&gt;
&lt;br /&gt;
	flags=&#039;&#039;;&lt;br /&gt;
	if (str.length) {&lt;br /&gt;
		tmp=skipOver(str,&#039;;&#039;) || skipToEnd(str, &#039;;&#039;);&lt;br /&gt;
		if (tmp) {flags=tmp.segment; str=tmp.remainder; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return { action: runJavascript, code: code, flags: flags, remainder: str };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function parseSubstitute(str) {&lt;br /&gt;
	// takes a string like s/a/b/flags;othercmds and parses it&lt;br /&gt;
&lt;br /&gt;
	var from,to,flags,tmp;&lt;br /&gt;
&lt;br /&gt;
	if (str.length&amp;lt;4) { return false; }&lt;br /&gt;
	var sep=str.charAt(1);&lt;br /&gt;
	str=str.substring(2);&lt;br /&gt;
&lt;br /&gt;
	tmp=skipOver(str,sep);&lt;br /&gt;
	if (tmp) { from=tmp.segment; str=tmp.remainder; }&lt;br /&gt;
	else { return false; }&lt;br /&gt;
&lt;br /&gt;
	tmp=skipOver(str,sep);&lt;br /&gt;
	if (tmp) { to=tmp.segment; str=tmp.remainder; }&lt;br /&gt;
	else { return false; }&lt;br /&gt;
&lt;br /&gt;
	flags=&#039;&#039;;&lt;br /&gt;
	if (str.length) {&lt;br /&gt;
		tmp=skipOver(str,&#039;;&#039;) || skipToEnd(str, &#039;;&#039;);&lt;br /&gt;
		if (tmp) {flags=tmp.segment; str=tmp.remainder; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return {action: substitute, from: from, to: to, flags: flags, remainder: str};&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function skipOver(str,sep) {&lt;br /&gt;
	var endSegment=findNext(str,sep);&lt;br /&gt;
	if (endSegment&amp;lt;0) { return false; }&lt;br /&gt;
	var segment=unEscape(str.substring(0,endSegment), sep);&lt;br /&gt;
	return {segment: segment, remainder: str.substring(endSegment+1)};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function skipToEnd(str,sep) {&lt;br /&gt;
	return {segment: str, remainder: &#039;&#039;};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function findNext(str, ch) {&lt;br /&gt;
	for (var i=0; i&amp;lt;str.length; ++i) {&lt;br /&gt;
		if (str.charAt(i)==&#039;\\&#039;) { i+=2; }&lt;br /&gt;
		if (str.charAt(i)==ch) { return i; }&lt;br /&gt;
	}&lt;br /&gt;
	return -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setCheckbox(param, box) {&lt;br /&gt;
	var val=getParamValue(param);&lt;br /&gt;
	if (val!==null) {&lt;br /&gt;
		switch (val) {&lt;br /&gt;
		case &#039;1&#039;: case &#039;yes&#039;: case &#039;true&#039;:&lt;br /&gt;
			box.checked=true;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;0&#039;: case &#039;no&#039;:  case &#039;false&#039;:&lt;br /&gt;
			box.checked=false;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function autoEdit() {&lt;br /&gt;
	if (!document.editform) { return false; }&lt;br /&gt;
	if (window.autoEdit.alreadyRan) { return false; }&lt;br /&gt;
	window.autoEdit.alreadyRan=true;&lt;br /&gt;
	var cmdString=getParamValue(&#039;autoedit&#039;);&lt;br /&gt;
	if (cmdString) {&lt;br /&gt;
		try {&lt;br /&gt;
			var editbox=document.editform.wpTextbox1;&lt;br /&gt;
		} catch (dang) { return; }&lt;br /&gt;
		var cmdList=parseCmd(cmdString);&lt;br /&gt;
		var input=editbox.value;&lt;br /&gt;
		var output=execCmds(input, cmdList);&lt;br /&gt;
		editbox.value=output;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var summary=getParamValue(&#039;autosummary&#039;);&lt;br /&gt;
	var summaryprompt=getParamValue(&#039;autosummaryprompt&#039;);&lt;br /&gt;
	if (summaryprompt) {&lt;br /&gt;
		var txt=popupString(&#039;Enter a non-empty edit summary or press cancel to abort&#039;);&lt;br /&gt;
		if (popupString) { txt=popupString(txt); }&lt;br /&gt;
		var response=prompt(txt, summary);&lt;br /&gt;
		if (response) { summary=response; }&lt;br /&gt;
		else { return; }&lt;br /&gt;
	}&lt;br /&gt;
	if (summary) { document.editform.wpSummary.value=summary; }&lt;br /&gt;
&lt;br /&gt;
	setCheckbox(&#039;autominor&#039;, document.editform.wpMinoredit);&lt;br /&gt;
	setCheckbox(&#039;autowatch&#039;, document.editform.wpWatchthis);&lt;br /&gt;
&lt;br /&gt;
	var btn=getParamValue(&#039;autoclick&#039;);&lt;br /&gt;
	if (btn) {&lt;br /&gt;
		if (document.editform &amp;amp;&amp;amp; document.editform[btn]) {&lt;br /&gt;
			var headings=document.getElementsByTagName(&#039;h1&#039;);&lt;br /&gt;
			if (headings) {&lt;br /&gt;
				var div=document.createElement(&#039;div&#039;);&lt;br /&gt;
				var button=document.editform[btn];&lt;br /&gt;
				div.innerHTML=&#039;&amp;lt;font size=+1&amp;gt;&amp;lt;b&amp;gt;&#039; +&lt;br /&gt;
				  tprintf(&#039;The %s button has been automatically clicked. Please wait for the next page to load.&#039;,&lt;br /&gt;
					  [ button.value ]) + &#039;&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&#039;;&lt;br /&gt;
				document.title=&#039;(&#039;+document.title+&#039;)&#039;;&lt;br /&gt;
				headings[0].parentNode.insertBefore(div, headings[0]);&lt;br /&gt;
				button.click();&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			alert(tprintf(&#039;Could not find button %s. Please check the settings in your javascript file.&#039;, [ btn ]));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
addOnloadHook(autoEdit);&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: autoedit.js&lt;br /&gt;
// STARTFILE: downloader.js&lt;br /&gt;
/**&lt;br /&gt;
   @fileoverview&lt;br /&gt;
   {@link Downloader}, a xmlhttprequest wrapper, and helper functions.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates a new Downloader&lt;br /&gt;
   @constructor&lt;br /&gt;
   @class The Downloader class. Create a new instance of this class to download stuff.&lt;br /&gt;
   @param {String} url The url to download. This can be omitted and supplied later.&lt;br /&gt;
*/&lt;br /&gt;
function Downloader(url) {&lt;br /&gt;
	// Source: http://jibbering.com/2002/4/httprequest.html&lt;br /&gt;
	/** xmlhttprequest object which we&#039;re wrapping */&lt;br /&gt;
	this.http = false;&lt;br /&gt;
&lt;br /&gt;
	/*@cc_on @*/&lt;br /&gt;
	/*@if (@_jscript_version &amp;gt;= 5)&lt;br /&gt;
	// JScript gives us Conditional compilation,&lt;br /&gt;
	// we can cope with old IE versions.&lt;br /&gt;
	// and security blocked creation of the objects.&lt;br /&gt;
	try {&lt;br /&gt;
	this.http = new ActiveXObject(&amp;quot;Msxml2.XMLHTTP&amp;quot;);&lt;br /&gt;
	} catch (e) {&lt;br /&gt;
	try {&lt;br /&gt;
	this.http = new ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;);&lt;br /&gt;
	} catch (E) {&lt;br /&gt;
	// this.http = false;&lt;br /&gt;
	}&lt;br /&gt;
	}&lt;br /&gt;
	@end @*/&lt;br /&gt;
&lt;br /&gt;
	if (! this.http &amp;amp;&amp;amp; typeof XMLHttpRequest!=&#039;undefined&#039;) { this.http = new XMLHttpRequest(); }&lt;br /&gt;
	/**&lt;br /&gt;
	    The url to download&lt;br /&gt;
	    @type String&lt;br /&gt;
	*/&lt;br /&gt;
	this.url = url;&lt;br /&gt;
	/**&lt;br /&gt;
	    A universally unique ID number&lt;br /&gt;
	    @type integer&lt;br /&gt;
	*/&lt;br /&gt;
	this.id=null;&lt;br /&gt;
	/**&lt;br /&gt;
	    Modification date, to be culled from the incoming headers&lt;br /&gt;
	    @type Date&lt;br /&gt;
	    @private&lt;br /&gt;
	*/&lt;br /&gt;
	this.lastModified = null;&lt;br /&gt;
	/**&lt;br /&gt;
	    What to do when the download completes successfully&lt;br /&gt;
	    @type Function&lt;br /&gt;
	    @private&lt;br /&gt;
	*/&lt;br /&gt;
	this.callbackFunction = null;&lt;br /&gt;
	/**&lt;br /&gt;
	    What to do on failure&lt;br /&gt;
	    @type Function&lt;br /&gt;
	    @private&lt;br /&gt;
	*/&lt;br /&gt;
	this.onFailure = null;&lt;br /&gt;
	/**&lt;br /&gt;
	    Flag set on &amp;lt;code&amp;gt;abort&amp;lt;/code&amp;gt;&lt;br /&gt;
	    @type boolean&lt;br /&gt;
	*/&lt;br /&gt;
	this.aborted = false;&lt;br /&gt;
	/**&lt;br /&gt;
	   HTTP method. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html for possibilities.&lt;br /&gt;
	   @type String&lt;br /&gt;
	*/&lt;br /&gt;
	this.method=&#039;GET&#039;;&lt;br /&gt;
	/**&lt;br /&gt;
	    Async flag.&lt;br /&gt;
	    @type boolean&lt;br /&gt;
	*/&lt;br /&gt;
	this.async=true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
new Downloader();&lt;br /&gt;
&lt;br /&gt;
/** Submits the http request. */&lt;br /&gt;
Downloader.prototype.send = function (x) {&lt;br /&gt;
	if (!this.http) { return null; }&lt;br /&gt;
	return this.http.send(x);&lt;br /&gt;
};&lt;br /&gt;
/** Aborts the download, setting the &amp;lt;code&amp;gt;aborted&amp;lt;/code&amp;gt; field to true.  */&lt;br /&gt;
Downloader.prototype.abort = function () {&lt;br /&gt;
	if (!this.http) { return null; }&lt;br /&gt;
	this.aborted=true;&lt;br /&gt;
	return this.http.abort();&lt;br /&gt;
};&lt;br /&gt;
/** Returns the downloaded data. */&lt;br /&gt;
Downloader.prototype.getData = function () {if (!this.http) { return null; } return this.http.responseText;};&lt;br /&gt;
/** Prepares the download. */&lt;br /&gt;
Downloader.prototype.setTarget = function () {&lt;br /&gt;
	if (!this.http) { return null; }&lt;br /&gt;
	this.http.open(this.method, this.url, this.async);&lt;br /&gt;
};&lt;br /&gt;
/** Gets the state of the download. */&lt;br /&gt;
Downloader.prototype.getReadyState=function () {if (!this.http) { return null; } return this.http.readyState;};&lt;br /&gt;
&lt;br /&gt;
pg.misc.downloadsInProgress = { };&lt;br /&gt;
&lt;br /&gt;
/** Starts the download.&lt;br /&gt;
    Note that setTarget {@link Downloader#setTarget} must be run first&lt;br /&gt;
*/&lt;br /&gt;
Downloader.prototype.start=function () {&lt;br /&gt;
	if (!this.http) { return; }&lt;br /&gt;
	pg.misc.downloadsInProgress[this.id] = this;&lt;br /&gt;
	this.http.send(null);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/** Gets the &#039;Last-Modified&#039; date from the download headers.&lt;br /&gt;
    Should be run after the download completes.&lt;br /&gt;
    Returns &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; on failure.&lt;br /&gt;
    @return {Date}&lt;br /&gt;
*/&lt;br /&gt;
Downloader.prototype.getLastModifiedDate=function () {&lt;br /&gt;
	if(!this.http) { return null; }&lt;br /&gt;
	var lastmod=null;&lt;br /&gt;
	try {&lt;br /&gt;
		lastmod=this.http.getResponseHeader(&#039;Last-Modified&#039;);&lt;br /&gt;
	} catch (err) {}&lt;br /&gt;
	if (lastmod) { return new Date(lastmod); }&lt;br /&gt;
	return null;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/** Sets the callback function.&lt;br /&gt;
    @param {Function} f callback function, called as &amp;lt;code&amp;gt;f(this)&amp;lt;/code&amp;gt; on success&lt;br /&gt;
*/&lt;br /&gt;
Downloader.prototype.setCallback = function (f) {&lt;br /&gt;
	if(!this.http) { return; }&lt;br /&gt;
	this.http.onreadystatechange = f;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Downloader.prototype.getStatus = function() { if (!this.http) { return null; } return this.http.status; };&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// helper functions&lt;br /&gt;
&lt;br /&gt;
/** Creates a new {@link Downloader} and prepares it for action.&lt;br /&gt;
    @param {String} url The url to download&lt;br /&gt;
    @param {integer} id The ID of the {@link Downloader} object&lt;br /&gt;
    @param {Function} callback The callback function invoked on success&lt;br /&gt;
    @return {String/Downloader} the {@link Downloader} object created, or &#039;ohdear&#039; if an unsupported browser&lt;br /&gt;
*/&lt;br /&gt;
function newDownload(url, id, callback, onfailure) {&lt;br /&gt;
	var d=new Downloader(url);&lt;br /&gt;
	if (!d.http) { return &#039;ohdear&#039;; }&lt;br /&gt;
	d.id=id;&lt;br /&gt;
	d.setTarget();&lt;br /&gt;
	if (!onfailure) {&lt;br /&gt;
		onfailure=2;&lt;br /&gt;
	}&lt;br /&gt;
	var f = function () {&lt;br /&gt;
		if (d.getReadyState() == 4) {&lt;br /&gt;
			delete pg.misc.downloadsInProgress[this.id];&lt;br /&gt;
			try {&lt;br /&gt;
				if ( d.getStatus() == 200 ) {&lt;br /&gt;
					d.data=d.getData();&lt;br /&gt;
					d.lastModified=d.getLastModifiedDate();&lt;br /&gt;
					callback(d);&lt;br /&gt;
				} else if (typeof onfailure == typeof 1) {&lt;br /&gt;
					if (onfailure &amp;gt; 0) {&lt;br /&gt;
						// retry&lt;br /&gt;
						newDownload(url, id, callback, onfailure - 1);&lt;br /&gt;
					}&lt;br /&gt;
				} else if (typeof onfailure == &#039;function&#039;) {&lt;br /&gt;
					onfailure(d,url,id,callback);&lt;br /&gt;
				}&lt;br /&gt;
			} catch (somerr) { /* ignore it */ }&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	d.setCallback(f);&lt;br /&gt;
	return d;&lt;br /&gt;
}&lt;br /&gt;
/** Simulates a download from cached data.&lt;br /&gt;
    The supplied data is put into a {@link Downloader} as if it had downloaded it.&lt;br /&gt;
    @param {String} url The url.&lt;br /&gt;
    @param {integer} id The ID.&lt;br /&gt;
    @param {Function} callback The callback, which is invoked immediately as &amp;lt;code&amp;gt;callback(d)&amp;lt;/code&amp;gt;,&lt;br /&gt;
    where &amp;lt;code&amp;gt;d&amp;lt;/code&amp;gt; is the new {@link Downloader}.&lt;br /&gt;
    @param {String} data The (cached) data.&lt;br /&gt;
    @param {Date} lastModified The (cached) last modified date.&lt;br /&gt;
*/&lt;br /&gt;
function fakeDownload(url, id, callback, data, lastModified) {&lt;br /&gt;
	var d=newDownload(url,callback);&lt;br /&gt;
	d.id=id; d.data=data;&lt;br /&gt;
	d.lastModified=lastModified;&lt;br /&gt;
	return callback(d);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Starts a download.&lt;br /&gt;
   @param {String} url The url to download&lt;br /&gt;
   @param {integer} id The ID of the {@link Downloader} object&lt;br /&gt;
   @param {Function} callback The callback function invoked on success&lt;br /&gt;
   @return {String/Downloader} the {@link Downloader} object created, or &#039;ohdear&#039; if an unsupported browser&lt;br /&gt;
*/&lt;br /&gt;
function startDownload(url, id, callback) {&lt;br /&gt;
	var d=newDownload(url, id, callback);&lt;br /&gt;
	if (typeof d == typeof &#039;&#039; ) { return d; }&lt;br /&gt;
	d.start();&lt;br /&gt;
	return d;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Aborts all downloads which have been started.&lt;br /&gt;
*/&lt;br /&gt;
function abortAllDownloads() {&lt;br /&gt;
	for ( var x in pg.misc.downloadsInProgress ) {&lt;br /&gt;
		try {&lt;br /&gt;
			pg.misc.downloadsInProgress[x].aborted=true;&lt;br /&gt;
			pg.misc.downloadsInProgress[x].abort();&lt;br /&gt;
			delete pg.misc.downloadsInProgress[x];&lt;br /&gt;
		} catch (e) { }&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: downloader.js&lt;br /&gt;
// STARTFILE: livepreview.js&lt;br /&gt;
// Last update: 21:51, 15 Feb 2005 (UTC)&lt;br /&gt;
&lt;br /&gt;
var lp={};&lt;br /&gt;
&lt;br /&gt;
function setupLivePreview() {&lt;br /&gt;
  // User options&lt;br /&gt;
  window.lp.userName=window.lp.userName||&#039;Wikipedian&#039;;&lt;br /&gt;
  window.lp.userSignature=window.lp.userSignature||window.lp.userName;&lt;br /&gt;
  window.lp.showImages=false; //window.lp.showImages||true;&lt;br /&gt;
&lt;br /&gt;
  // System options&lt;br /&gt;
  window.lp.languageCode=window.lp.languageCode||&#039;en&#039;;&lt;br /&gt;
  window.lp.interwikiCodes=pg.wiki.interwiki;&lt;br /&gt;
  window.lp.baseArticlePath=&#039;/&#039; + pg.wiki.articlePath + &#039;/&#039;;&lt;br /&gt;
  window.lp.userNamespace=pg.ns.user;&lt;br /&gt;
  window.lp.imageNamespace=pg.ns.image;&lt;br /&gt;
  window.lp.categoryNamespace=pg.ns.category;&lt;br /&gt;
  window.lp.imageBasePath=getImageUrlStart(pg.wiki.hostname);&lt;br /&gt;
&lt;br /&gt;
  window.lp.mathBasePath=window.lp.mathBasePath||&#039;/math/&#039;;&lt;br /&gt;
  window.lp.imageFallbackPath=window.lp.imageFallbackPath||&#039;http://upload.wikimedia.org/wikipedia/commons/&#039;;&lt;br /&gt;
  window.lp.defaultThumbWidth=getValueOf(&#039;popupImageSize&#039;);&lt;br /&gt;
  window.lp.skinMagnifyClip=window.lp.skinMagnifyClip||&#039;/skins/common/images/magnify-clip.png&#039;;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function wiki2html(str){&lt;br /&gt;
  str=strip_cr(str);&lt;br /&gt;
  var w=new WikiCode();&lt;br /&gt;
  w.lines=str.split(/\n/);&lt;br /&gt;
  w.parse();&lt;br /&gt;
  return w.html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function WikiCode() {&lt;br /&gt;
  this.lines=[];&lt;br /&gt;
  this.html=&#039;&#039;;&lt;br /&gt;
  window.lp.signature=&#039;[[&#039;+window.lp.userNamespace+&#039;:&#039;+window.lp.userName+&#039;|&#039;+window.lp.userSignature+&#039;]]&#039;;&lt;br /&gt;
  window.lp.blockImage=new RegExp(&#039;^\\[\\[&#039;+window.lp.imageNamespace+&#039;:.*?\\|.*?(?:frame|thumbnail|thumb|none|right|left|center)&#039;,&#039;i&#039;);&lt;br /&gt;
}&lt;br /&gt;
WikiCode.prototype._parse_table_data=function(){&lt;br /&gt;
  var td_match,td_line;&lt;br /&gt;
  td_match=this.lines.shift().match(RegExp(/^(\|\+|\||!)((?:([^[|]*?)\|(?!\|))?(.*))$/));&lt;br /&gt;
  if (td_match[1]==&#039;|+&#039;){ this.html+=&#039;&amp;lt;caption&#039;; }&lt;br /&gt;
  else { this.html+=&#039;&amp;lt;t&#039;+((td_match[1]==&#039;|&#039;)?&#039;d&#039;:&#039;h&#039;); }&lt;br /&gt;
  if (typeof td_match[3]!=&#039;undefined&#039;) { this.html+=&#039; &#039;+td_match[3];td_line=td_match[4].split(&#039;||&#039;); }&lt;br /&gt;
  else { td_line=td_match[2].split(&#039;||&#039;); }&lt;br /&gt;
  this.html+=&#039;&amp;gt;&#039;;&lt;br /&gt;
  while(td_line.length&amp;gt;1){ this.lines.unshift(td_match[1]+td_line.pop()); }&lt;br /&gt;
  this.html+=_parse_inline_nowiki(td_line[0]);&lt;br /&gt;
  var td=new WikiCode();&lt;br /&gt;
  var table_count=0;&lt;br /&gt;
  while(this.lines.length){&lt;br /&gt;
    if(this.lines[0].charAt(0)==&#039;|&#039;) {&lt;br /&gt;
      if(table_count===0) {break;}&lt;br /&gt;
      else if(this.lines[0].charAt(1)==&#039;}&#039;){--table_count;}&lt;br /&gt;
    }&lt;br /&gt;
    else if(this.lines[0].charAt(0)==&#039;!&#039;&amp;amp;&amp;amp;table_count===0) {break;}&lt;br /&gt;
    else if(this.lines[0].substr(0,2)==&#039;{|&#039;) {table_count++;}&lt;br /&gt;
    td.lines.push(this.lines.shift());&lt;br /&gt;
  }&lt;br /&gt;
  if(td.lines.length) {td.parse();}&lt;br /&gt;
  this.html+=td.html;&lt;br /&gt;
};&lt;br /&gt;
WikiCode.prototype._parse_pre=function(){&lt;br /&gt;
  this.html+=&#039;&amp;lt;pre&amp;gt;&#039;;&lt;br /&gt;
  do{&lt;br /&gt;
    this._endline(_parse_inline_nowiki(this.lines[0].substring(1,this.lines[0].length))+&amp;quot;\n&amp;quot;);&lt;br /&gt;
  } while(this.lines.length&amp;amp;&amp;amp;this.lines[0].charAt(0)==&#039; &#039;);&lt;br /&gt;
  this.html+=&#039;&amp;lt;/pre&amp;gt;&#039;;&lt;br /&gt;
};&lt;br /&gt;
WikiCode.prototype._parse_block_image=function(){&lt;br /&gt;
  this.html+=_parse_image(this.lines.shift());&lt;br /&gt;
};&lt;br /&gt;
WikiCode.prototype._endline=function(str){&lt;br /&gt;
  this.html+=str;&lt;br /&gt;
  this.lines.shift();&lt;br /&gt;
};&lt;br /&gt;
WikiCode.prototype.parse=function() {&lt;br /&gt;
  var p=false;&lt;br /&gt;
  do{&lt;br /&gt;
    var h_match=this.lines[0].match(/^(={1,6})(.*)\1(.*)$/);&lt;br /&gt;
    if(h_match){&lt;br /&gt;
      p=false;&lt;br /&gt;
      this._endline(&#039;&amp;lt;h&#039;+h_match[1].length+&#039;&amp;gt;&#039; + _parse_inline_nowiki(h_match[2])+&lt;br /&gt;
		    &#039;&amp;lt;/h&#039;+h_match[1].length+&#039;&amp;gt;&#039; + h_match[3]);&lt;br /&gt;
    }else if(this.lines[0].match(/^[*#:;]/)){&lt;br /&gt;
      p=false;&lt;br /&gt;
      this._parse_list();&lt;br /&gt;
    }else if(this.lines[0].charAt(0)==&#039; &#039;){&lt;br /&gt;
      p=false;&lt;br /&gt;
      this._parse_pre();&lt;br /&gt;
    }else if(this.lines[0].substr(0,2)==&#039;{|&#039;){&lt;br /&gt;
      p=false;&lt;br /&gt;
      this._parse_table();&lt;br /&gt;
    }else if(this.lines[0].match(/^----+$/)){&lt;br /&gt;
      p=false;&lt;br /&gt;
      this._endline(&#039;&amp;lt;hr/&amp;gt;&#039;);&lt;br /&gt;
    }else if(this.lines[0].match(window.lp.blockImage)){&lt;br /&gt;
      p=false;&lt;br /&gt;
      this._parse_block_image();&lt;br /&gt;
    }else{&lt;br /&gt;
      if(this.lines[0]===&#039;&#039;){&lt;br /&gt;
	p=(this.lines.length&amp;gt;1&amp;amp;&amp;amp;this.lines[1]===&#039;&#039;);&lt;br /&gt;
	if(p){this._endline(&#039;&amp;lt;p&amp;gt;&amp;lt;br /&amp;gt;&#039;);}&lt;br /&gt;
      } else {&lt;br /&gt;
	if(!p){this.html+=&#039;&amp;lt;p&amp;gt;&#039;; p=true;}&lt;br /&gt;
	this.html+=_parse_inline_nowiki(this.lines[0])+&#039; &#039;;&lt;br /&gt;
      }&lt;br /&gt;
      this.lines.shift();&lt;br /&gt;
    }&lt;br /&gt;
  }while(this.lines.length);&lt;br /&gt;
};&lt;br /&gt;
WikiCode.prototype._parse_list=function(){&lt;br /&gt;
  var prev=&#039;&#039;;&lt;br /&gt;
  var l_match,imatch,dt_match;&lt;br /&gt;
  while(this.lines.length&amp;amp;&amp;amp;(l_match=this.lines[0].match(/^([*#:;]+)(.*)$/))){&lt;br /&gt;
    this.lines.shift();&lt;br /&gt;
    imatch=str_imatch(prev,l_match[1]);&lt;br /&gt;
    for(var i=prev.length-1;i&amp;gt;=imatch;i--){&lt;br /&gt;
      if(prev.charAt(i)==&#039;*&#039;){this.html+=&#039;&amp;lt;/ul&amp;gt;&#039;;}&lt;br /&gt;
      else if(prev.charAt(i)==&#039;#&#039;){this.html+=&#039;&amp;lt;/ol&amp;gt;&#039;;}&lt;br /&gt;
      else{&lt;br /&gt;
	this.html+=&#039;&amp;lt;/d&#039;+((prev.charAt(i)==&#039;;&#039;)?&#039;t&#039;:&#039;d&#039;)+&#039;&amp;gt;&#039;;&lt;br /&gt;
	switch(l_match[1].charAt(i)){&lt;br /&gt;
	  case&#039;&#039;: case&#039;*&#039;: case&#039;#&#039;:&lt;br /&gt;
	    this.html+=&#039;&amp;lt;/dl&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    for (i=imatch;i&amp;lt;l_match[1].length;i++){&lt;br /&gt;
      if(l_match[1].charAt(i)==&#039;*&#039;){this.html+=&#039;&amp;lt;ul&amp;gt;&#039;;}&lt;br /&gt;
      else if(l_match[1].charAt(i)==&#039;#&#039;){this.html+=&#039;&amp;lt;ol&amp;gt;&#039;;}&lt;br /&gt;
      else{&lt;br /&gt;
	switch(prev.charAt(i)){&lt;br /&gt;
	  case&#039;&#039;:case&#039;*&#039;:case&#039;#&#039;:&lt;br /&gt;
	    this.html+=&#039;&amp;lt;dl&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	this.html+=&#039;&amp;lt;d&#039;+((l_match[1].charAt(i)==&#039;;&#039;)?&#039;t&#039;:&#039;d&#039;)+&#039;&amp;gt;&#039;;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    switch(l_match[1].charAt(l_match[1].length-1)) {&lt;br /&gt;
      case&#039;*&#039;: case&#039;#&#039;: this.html+=&#039;&amp;lt;li&amp;gt;&#039;+_parse_inline_nowiki(l_match[2]); break;&lt;br /&gt;
      case&#039;;&#039;:&lt;br /&gt;
	dt_match=l_match[2].match(/(.*?) (:.*?)$/);&lt;br /&gt;
      if(dt_match) {&lt;br /&gt;
	this.html+=_parse_inline_nowiki(dt_match[1]);&lt;br /&gt;
	this.lines.unshift(dt_match[2]);}&lt;br /&gt;
      break;&lt;br /&gt;
      case&#039;:&#039;:&lt;br /&gt;
	this.html+=_parse_inline_nowiki(l_match[2]);&lt;br /&gt;
    }&lt;br /&gt;
    prev=l_match[1];&lt;br /&gt;
  }&lt;br /&gt;
  for(i=prev.length-1;i&amp;gt;=0;i--){&lt;br /&gt;
    if(prev.charAt(i)==&#039;*&#039;){this.html+=&#039;&amp;lt;/ul&amp;gt;&#039;;}&lt;br /&gt;
    else if(prev.charAt(i)==&#039;#&#039;){this.html+=&#039;&amp;lt;/ol&amp;gt;&#039;;}&lt;br /&gt;
    else{this.html+=&#039;&amp;lt;/d&#039;+((prev.charAt(i)==&#039;;&#039;)?&#039;t&#039;:&#039;d&#039;)+&#039;&amp;gt;&amp;lt;/dl&amp;gt;&#039;;}&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
WikiCode.prototype._parse_table=function(){var table_match=this.lines[0].match(/^\{\|( .*)$/);if(table_match){this._endline(&#039;&amp;lt;table&#039;+table_match[1]+&#039;&amp;gt;&#039;);}else{this._endline(&#039;&amp;lt;table&amp;gt;&#039;);}do{if(this.lines[0].charAt(0)==&#039;|&#039;){switch(this.lines[0].charAt(1)){case&#039;}&#039;:this._endline(&#039;&amp;lt;/table&amp;gt;&#039;);return;case&#039;-&#039;:this._endline(&#039;&amp;lt;tr &#039;+this.lines[0].match(/\|-*(.*)/)[1]+&#039;&amp;gt;&#039;);break;default:this._parse_table_data();}}else if(this.lines[0].charAt(0)==&#039;!&#039;){this._parse_table_data();}else{this.lines.shift();}}while(this.lines.length);};&lt;br /&gt;
function _parse_image(str){var attr=str.substring(window.lp.imageNamespace.length+3,str.length-2).split(/\s*\|\s*/);var filename=attr[0];var caption=attr[attr.length-1];var width,w_match;var thumb=false;var frame=false;var center=false;var align=&#039;&#039;;var html=&#039;&#039;;do{w_match=attr[0].match(/^(\d*)px$/);if(w_match){width=w_match[1];}else switch(attr[0]){case&#039;thumb&#039;:case&#039;thumbnail&#039;:thumb=true;case&#039;frame&#039;:frame=true;break;case&#039;none&#039;:case&#039;right&#039;:case&#039;left&#039;:center=false;align=attr[0];break;case&#039;center&#039;:center=true;align=&#039;none&#039;;}attr.shift();}while(attr.length);if(frame){if(align===&#039;&#039;){align=&#039;right&#039;;}html+=&amp;quot;&amp;lt;div class=&#039;thumb t&amp;quot;+align+&amp;quot;&#039;&amp;gt;&amp;quot;;if(thumb){if(!width){width=window.lp.defaultThumbWidth;}html+=&amp;quot;&amp;lt;div style=&#039;width:&amp;quot;+(2+parseInt(width,10))+&amp;quot;px;&#039;&amp;gt;&amp;quot;;html+=_make_image(filename,caption,width);html+=&amp;quot;&amp;lt;div class=&#039;thumbcaption&#039;&amp;gt;&amp;lt;div class=&#039;magnify&#039; style=&#039;float:right&#039;&amp;gt;&amp;lt;a href=&#039;&amp;quot;+window.lp.baseArticlePath+window.lp.imageNamespace+&#039;:&#039;+filename+&amp;quot;&#039; class=&#039;internal&#039; title=&#039;Enlarge&#039;&amp;gt;&amp;lt;img src=&#039;&amp;quot;+window.lp.skinMagnifyClip+&amp;quot;&#039; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;+_parse_inline_nowiki(caption)+&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;;}else{html+=&#039;&amp;lt;div&amp;gt;&#039;;html+=_make_image(filename,caption);html+=&amp;quot;&amp;lt;div class=&#039;thumbcaption&#039;&amp;gt;&amp;quot;+_parse_inline_nowiki(caption)+&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;;}html+=&#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&#039;;}else if(align){html+=&amp;quot;&amp;lt;div class=&#039;float&amp;quot;+align+&amp;quot;&#039;&amp;gt;&amp;lt;span&amp;gt;&amp;quot;+_make_image(filename,caption,width)+&amp;quot;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;;}else{return _make_image(filename,caption,width);}if(center){return&amp;quot;&amp;lt;div class=&#039;center&#039;&amp;gt;&amp;quot;+html+&#039;&amp;lt;/div&amp;gt;&#039;;}else{return html;}}&lt;br /&gt;
function _parse_inline_nowiki(str){var start,lastend=0;var substart=0,nestlev=0,open,close,subloop;var html=&#039;&#039;;while(-1!=(start=str.indexOf(&#039;&amp;lt;&#039;+&#039;nowiki&amp;gt;&#039;,substart))){html+=_parse_inline_wiki(str.substring(lastend,start));start+=8;substart=start;subloop=true;do{open=str.indexOf(&#039;&amp;lt;&#039;+&#039;nowiki&amp;gt;&#039;,substart);close=str.indexOf(&#039;&amp;lt;/nowiki&amp;gt;&#039;,substart);if(close&amp;lt;=open||open==-1){if(close==-1){return html+html_entities(str.substr(start));}substart=close+9;if(nestlev){nestlev--;}else{lastend=substart;html+=html_entities(str.substring(start,lastend-9));subloop=false;}}else{substart=open+8;nestlev++;}}while(subloop);}return html+_parse_inline_wiki(str.substr(lastend));};&lt;br /&gt;
function _make_image(filename,caption,width){filename=filename.charAt(0).toUpperCase()+filename.substr(1);filename=filename.replace(/ /g,&#039;_&#039;);var md5=hex_md5(filename);var source=md5.charAt(0)+&#039;/&#039;+md5.substr(0,2)+&#039;/&#039;+filename;var img;if(window.lp.showImages){if(width){width=&amp;quot;width=&#039;&amp;quot;+width+&amp;quot;px&#039;&amp;quot;;}img=&amp;quot;&amp;lt;img onerror=&#039;this.onerror=null;this.src=\&amp;quot;&amp;quot;+window.lp.imageFallbackPath+source+&amp;quot;\&amp;quot;;&#039; src=&#039;&amp;quot;+window.lp.imageBasePath+source+&amp;quot;&#039; alt=&#039;&amp;quot;+caption+&amp;quot;&#039; &amp;quot;+width+&amp;quot;/&amp;gt;&amp;quot;;}else{img=window.lp.imageNamespace+&#039;:&#039;+filename+&amp;quot; &amp;lt;em style=&#039;color:red;&#039;&amp;gt;(images disabled)&amp;lt;/em&amp;gt;&amp;quot;;}caption=_strip_inline_wiki(caption);return&amp;quot;&amp;lt;a class=&#039;image&#039; title=&#039;&amp;quot;+caption+&amp;quot;&#039; href=&#039;&amp;quot;+window.lp.baseArticlePath+window.lp.imageNamespace+&#039;:&#039;+filename+&amp;quot;&#039;&amp;gt;&amp;quot;+img+&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;;}&lt;br /&gt;
function _parse_inline_images(str){var start,substart=0,nestlev=0;var loop,close,open,wiki,html;while(-1!=(start=str.indexOf(&#039;[[&#039;,substart))){if(str.substr(start+2).match(RegExp(&#039;^&#039;+window.lp.imageNamespace+&#039;:&#039;,&#039;i&#039;))){loop=true;substart=start;do{substart+=2;close=str.indexOf(&#039;]]&#039;,substart);open=str.indexOf(&#039;[[&#039;,substart);if(close&amp;lt;=open||open==-1){if(close==-1){return str;}substart=close;if(nestlev){nestlev--;}else{wiki=str.substring(start,close+2);html=_parse_image(wiki);str=str.replace(wiki,html);substart=start+html.length;loop=false;}}else{substart=open;nestlev++;}}while(loop);}else{break;}}return str;}&lt;br /&gt;
&lt;br /&gt;
function _parse_inline_wiki(str){&lt;br /&gt;
  var aux_match,math_md5;&lt;br /&gt;
  str=_parse_inline_images(str);&lt;br /&gt;
  while (aux_match=str.match(/&amp;lt;(?:)math&amp;gt;(.*?)&amp;lt;\/math&amp;gt;/i)) {&lt;br /&gt;
    math_md5=hex_md5(aux_match[1]);&lt;br /&gt;
    str=str.replace(aux_match[0],&amp;quot;&amp;lt;img src=&#039;&amp;quot;+window.lp.mathBasePath+math_md5+&#039;.png&#039;+&amp;quot;&#039; /&amp;gt;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  //  log(&#039;livepreview: str=&#039;+str);&lt;br /&gt;
  return str.replace(/&#039;&#039;&#039;&#039;&#039;(.*?)&#039;&#039;(.*?)&#039;&#039;&#039;/g,&#039;&amp;lt;strong&amp;gt;&amp;lt;em&amp;gt;$1&amp;lt;/em&amp;gt;$2&amp;lt;/strong&amp;gt;&#039;)&lt;br /&gt;
    .replace(/&#039;&#039;&#039;&#039;&#039;(.*?)&#039;&#039;&#039;(.*?)&#039;&#039;/g,&#039;&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;$2&amp;lt;/em&amp;gt;&#039;)&lt;br /&gt;
    .replace(/&#039;&#039;&#039;(.*?)&#039;&#039;(.*?)&#039;&#039;&#039;&#039;&#039;/g,&#039;&amp;lt;strong&amp;gt;$1&amp;lt;em&amp;gt;$2&amp;lt;/em&amp;gt;&amp;lt;/strong&amp;gt;&#039;)&lt;br /&gt;
    .replace(/&#039;&#039;&#039;(.*?)&#039;&#039;&#039;/g,&#039;&amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt;&#039;)&lt;br /&gt;
    .replace(/&#039;&#039;(.*?)&#039;&#039;/g,&#039;&amp;lt;em&amp;gt;$1&amp;lt;/em&amp;gt;&#039;)&lt;br /&gt;
    .replace(/~{5}(?!~)/g,Date())&lt;br /&gt;
    .replace(/~{4}(?!~)/g,window.lp.signature+&#039; &#039;+Date())&lt;br /&gt;
    .replace(/~{3}(?!~)/g,window.lp.signature)&lt;br /&gt;
    .replace(RegExp(&#039;\\[\\[:((?:&#039;+window.lp.categoryNamespace+&#039;|&#039;+window.lp.interwikiCodes+&#039;):.*?)\\]\\]&#039;,&#039;gi&#039;),&lt;br /&gt;
	     &amp;quot;&amp;lt;a href=&#039;&amp;quot;+window.lp.baseArticlePath+&amp;quot;$1&#039;&amp;gt;$1&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(RegExp(&#039;\\[\\[(?:&#039;+window.lp.categoryNamespace+&#039;|&#039;+window.lp.interwikiCodes+&#039;):.*?\\]\\]&#039;,&#039;gi&#039;),&#039;&#039;)&lt;br /&gt;
    .replace(/\[\[:?([^|]*?)\]\](\w*)/g,&amp;quot;&amp;lt;a href=&#039;&amp;quot;+window.lp.baseArticlePath+&amp;quot;$1&#039;&amp;gt;$1$2&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(/\[\[:?(.*?)\|([^\]]+?)\]\](\w*)/g,&amp;quot;&amp;lt;a href=&#039;&amp;quot;+window.lp.baseArticlePath+&amp;quot;$1&#039;&amp;gt;$2$3&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(/\[\[:?([^\]]*?:)?(.*?)( *\(.*?\))?\|\]\]/g,&amp;quot;&amp;lt;a href=&#039;&amp;quot;+window.lp.baseArticlePath+&amp;quot;$1$2$3&#039;&amp;gt;$2&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(/\[((https?|news|ftp|mailto|gopher|irc):(\/*)([^\]]*?)) (.*?)\]/g,&amp;quot;&amp;lt;a class=&#039;external&#039; title=&#039;$1&#039; href=&#039;$1&#039;&amp;gt;$5&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(/\[(https?:\/\/.*?)\]/g,&amp;quot;&amp;lt;a class=&#039;external&#039; title=&#039;$1&#039; href=&#039;$1&#039;&amp;gt;[#]&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(/\[((news|ftp|mailto|gopher|irc):(\/*)(.*?))\]/g,&amp;quot;&amp;lt;a class=&#039;external&#039; title=&#039;$1&#039; href=&#039;$1&#039;&amp;gt;$1&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(/(^| )((https?|news|ftp|mailto|gopher|irc):(\/*)([^ $]*))/g,&amp;quot;$1&amp;lt;a class=&#039;external&#039; title=&#039;$2&#039; href=&#039;$2&#039;&amp;gt;$2&amp;lt;/a&amp;gt;&amp;quot;)&lt;br /&gt;
    .replace(&#039;__NOTOC__&#039;,&#039;&#039;)&lt;br /&gt;
    .replace(&#039;__NOEDITSECTION__&#039;,&#039;&#039;);&lt;br /&gt;
} /* comment for enscript */&lt;br /&gt;
function _strip_inline_wiki(str){return str.replace(/\[\[[^\]]*\|(.*?)\]\]/g,&#039;$1&#039;).replace(/\[\[(.*?)\]\]/g,&#039;$1&#039;).replace(/&#039;&#039;(.*?)&#039;&#039;/g,&#039;$1&#039;);}&lt;br /&gt;
function max(a,b){if(a&amp;gt;b){return a;}return b;}&lt;br /&gt;
function min(a,b){if(a&amp;lt;b){return a;}return b;}&lt;br /&gt;
function str_imatch(str_a,str_b){var lim=min(str_a.length,str_b.length);for(var i=0;i&amp;lt;lim;i++){if(str_a.charAt(i)!=str_b.charAt(i)){return i;}}return i;}&lt;br /&gt;
function strip_cr(str){return str.replace(/\n\r/g,&amp;quot;\n&amp;quot;).replace(/\r/g,&#039;&#039;);}&lt;br /&gt;
function html_entities(str){return str.replace(/&amp;amp;/g,&amp;quot;&amp;amp;amp;&amp;quot;).replace(/&amp;lt;/g,&amp;quot;&amp;amp;lt;&amp;quot;).replace(/&amp;gt;/g,&amp;quot;&amp;amp;gt;&amp;quot;);}&lt;br /&gt;
//&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: livepreview.js&lt;br /&gt;
// STARTFILE: pageinfo.js&lt;br /&gt;
function popupFilterPageSize(data) {&lt;br /&gt;
	return formatBytes(data.length);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupFilterCountLinks(data) {&lt;br /&gt;
	var num=countLinks(data);&lt;br /&gt;
	return String(num) + &#039;&amp;amp;nbsp;&#039; + ((num!=1)?popupString(&#039;wikiLinks&#039;):popupString(&#039;wikiLink&#039;));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupFilterCountImages(data) {&lt;br /&gt;
	var num=countImages(data);&lt;br /&gt;
	return String(num) + &#039;&amp;amp;nbsp;&#039; + ((num!=1)?popupString(&#039;images&#039;):popupString(&#039;image&#039;));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupFilterCountCategories(data) {&lt;br /&gt;
	var num=countCategories(data);&lt;br /&gt;
	return String(num) + &#039;&amp;amp;nbsp;&#039; + ((num!=1)?popupString(&#039;categories&#039;):popupString(&#039;category&#039;));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function popupFilterLastModified(data,download) {&lt;br /&gt;
	var lastmod=download.lastModified;&lt;br /&gt;
	var now=new Date();&lt;br /&gt;
	var age=now-lastmod;&lt;br /&gt;
	if (lastmod &amp;amp;&amp;amp; getValueOf(&#039;popupLastModified&#039;)) {&lt;br /&gt;
		return (formatAge(age) + &#039; &#039; + popupString(&#039;old&#039;)).replace(RegExp(&#039; &#039;,&#039;g&#039;), &#039;&amp;amp;nbsp;&#039;);&lt;br /&gt;
	}&lt;br /&gt;
	return &#039;&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function formatAge(age) {&lt;br /&gt;
	// coerce into a number&lt;br /&gt;
	var a=0+age, aa=a;&lt;br /&gt;
&lt;br /&gt;
	var seclen  = 1000;&lt;br /&gt;
	var minlen  = 60*seclen;&lt;br /&gt;
	var hourlen = 60*minlen;&lt;br /&gt;
	var daylen  = 24*hourlen;&lt;br /&gt;
	var weeklen = 7*daylen;&lt;br /&gt;
&lt;br /&gt;
	var numweeks = (a-a%weeklen)/weeklen; a = a-numweeks*weeklen; var sweeks = addunit(numweeks, &#039;week&#039;);&lt;br /&gt;
	var numdays  = (a-a%daylen)/daylen;   a = a-numdays*daylen;   var sdays  = addunit(numdays, &#039;day&#039;);&lt;br /&gt;
	var numhours = (a-a%hourlen)/hourlen; a = a-numhours*hourlen; var shours = addunit(numhours,&#039;hour&#039;);&lt;br /&gt;
	var nummins  = (a-a%minlen)/minlen;   a = a-nummins*minlen;   var smins  = addunit(nummins, &#039;minute&#039;);&lt;br /&gt;
	var numsecs  = (a-a%seclen)/seclen;   a = a-numsecs*seclen;   var ssecs  = addunit(numsecs, &#039;second&#039;);&lt;br /&gt;
&lt;br /&gt;
	if (aa &amp;gt; 4*weeklen) { return sweeks; }&lt;br /&gt;
	if (aa &amp;gt; weeklen)   { return sweeks + &#039; &#039; + sdays; }&lt;br /&gt;
	if (aa &amp;gt; daylen)    { return sdays  + &#039; &#039; + shours; }&lt;br /&gt;
	if (aa &amp;gt; 6*hourlen) { return shours; }&lt;br /&gt;
	if (aa &amp;gt; hourlen)   { return shours + &#039; &#039; + smins; }&lt;br /&gt;
	if (aa &amp;gt; 10*minlen) { return smins; }&lt;br /&gt;
	if (aa &amp;gt; minlen)    { return smins  + &#039; &#039; + ssecs; }&lt;br /&gt;
	return ssecs;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function addunit(num,str) { return &#039;&#039; + num + &#039; &#039; + ((num!=1) ? popupString(str+&#039;s&#039;) : popupString(str)) ;}&lt;br /&gt;
&lt;br /&gt;
function runPopupFilters(list, data, download) {&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	for (var i=0; i&amp;lt;list.length; ++i) {&lt;br /&gt;
		if (list[i] &amp;amp;&amp;amp; typeof list[i] == &#039;function&#039;) {&lt;br /&gt;
			var s=list[i](data, download);&lt;br /&gt;
			if (s) { ret.push(s); }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getPageInfo(data, download) {&lt;br /&gt;
	if (!data || data.length === 0) { return popupString(&#039;Empty page&#039;); }&lt;br /&gt;
&lt;br /&gt;
	var popupFilters=getValueOf(&#039;popupFilters&#039;) || [];&lt;br /&gt;
	var extraPopupFilters = getValueOf(&#039;extraPopupFilters&#039;) || [];&lt;br /&gt;
	var pageInfoArray = runPopupFilters(popupFilters.concat(extraPopupFilters), data, download);&lt;br /&gt;
&lt;br /&gt;
	var pageInfo=pageInfoArray.join(&#039;, &#039;);&lt;br /&gt;
	if (pageInfo !== &#039;&#039; ) { pageInfo = upcaseFirst(pageInfo); }&lt;br /&gt;
	return pageInfo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// this could be improved!&lt;br /&gt;
function countLinks(wikiText) { return wikiText.split(&#039;[[&#039;).length - 1; }&lt;br /&gt;
&lt;br /&gt;
// if N = # matches, n = # brackets, then&lt;br /&gt;
// String.parenSplit(regex) intersperses the N+1 split elements&lt;br /&gt;
// with Nn other elements. So total length is&lt;br /&gt;
// L= N+1 + Nn = N(n+1)+1. So N=(L-1)/(n+1).&lt;br /&gt;
&lt;br /&gt;
function countImages(wikiText) {&lt;br /&gt;
	return (wikiText.parenSplit(pg.re.image).length - 1) / (pg.re.imageBracketCount + 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function countCategories(wikiText) {&lt;br /&gt;
	return (wikiText.parenSplit(pg.re.category).length - 1) / (pg.re.categoryBracketCount + 1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupFilterStubDetect(data)     {&lt;br /&gt;
	return (isStub(data))     ? popupString(&#039;stub&#039;)     : &#039;&#039;;&lt;br /&gt;
}&lt;br /&gt;
function popupFilterDisambigDetect(data) {&lt;br /&gt;
	return (isDisambig(data)) ? popupString(&#039;disambig&#039;) : &#039;&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function formatBytes(num) {&lt;br /&gt;
	return (num &amp;gt; 949) ? (Math.round(num/100)/10+popupString(&#039;kB&#039;)) : (num +&#039;&amp;amp;nbsp;&#039; + popupString(&#039;bytes&#039;)) ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: pageinfo.js&lt;br /&gt;
// STARTFILE: titles.js&lt;br /&gt;
/**&lt;br /&gt;
   @fileoverview Defines the {@link Title} class, and associated crufty functions.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;Title&amp;lt;/code&amp;gt; deals with article titles and their various&lt;br /&gt;
   forms.  {@link Stringwrapper} is the parent class of&lt;br /&gt;
   &amp;lt;code&amp;gt;Title&amp;lt;/code&amp;gt;, which exists simply to make things a little&lt;br /&gt;
   neater.&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates a new Stringwrapper.&lt;br /&gt;
   @constructor&lt;br /&gt;
&lt;br /&gt;
   @class the Stringwrapper class. This base class is not really&lt;br /&gt;
   useful on its own; it just wraps various common string operations.&lt;br /&gt;
*/&lt;br /&gt;
function Stringwrapper() {&lt;br /&gt;
	/**&lt;br /&gt;
	   Wrapper for this.toString().indexOf()&lt;br /&gt;
	   @param {String} x&lt;br /&gt;
	   @type integer&lt;br /&gt;
	*/&lt;br /&gt;
	this.indexOf=function(x){return this.toString().indexOf(x);};&lt;br /&gt;
	/**&lt;br /&gt;
	   Returns this.value.&lt;br /&gt;
	   @type String&lt;br /&gt;
	*/&lt;br /&gt;
	this.toString=function(){return this.value;};&lt;br /&gt;
	/**&lt;br /&gt;
	   Wrapper for {@link String#parenSplit} applied to this.toString()&lt;br /&gt;
	   @param {RegExp} x&lt;br /&gt;
	   @type Array&lt;br /&gt;
	*/&lt;br /&gt;
	this.parenSplit=function(x){return this.toString().parenSplit(x);};&lt;br /&gt;
	/**&lt;br /&gt;
	   Wrapper for this.toString().substring()&lt;br /&gt;
	   @param {String} x&lt;br /&gt;
	   @param {String} y (optional)&lt;br /&gt;
	   @type String&lt;br /&gt;
	*/&lt;br /&gt;
	this.substring=function(x,y){&lt;br /&gt;
		if (typeof y==&#039;undefined&#039;) { return this.toString().substring(x); }&lt;br /&gt;
		return this.toString().substring(x,y);&lt;br /&gt;
	};&lt;br /&gt;
	/**&lt;br /&gt;
	   Wrapper for this.toString().split()&lt;br /&gt;
	   @param {String} x&lt;br /&gt;
	   @type Array&lt;br /&gt;
	*/&lt;br /&gt;
	this.split=function(x){return this.toString().split(x);};&lt;br /&gt;
	/**&lt;br /&gt;
	   Wrapper for this.toString().replace()&lt;br /&gt;
	   @param {String} x&lt;br /&gt;
	   @param {String} y&lt;br /&gt;
	   @type String&lt;br /&gt;
	*/&lt;br /&gt;
	this.replace=function(x,y){ return this.toString().replace(x,y); };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates a new &amp;lt;code&amp;gt;Title&amp;lt;/code&amp;gt;.&lt;br /&gt;
   @constructor&lt;br /&gt;
&lt;br /&gt;
   @class The Title class. Holds article titles and converts them into&lt;br /&gt;
   various forms. Also deals with anchors, by which we mean the bits&lt;br /&gt;
   of the article URL after a # character, representing locations&lt;br /&gt;
   within an article.&lt;br /&gt;
&lt;br /&gt;
   @param {String} value The initial value to assign to the&lt;br /&gt;
   article. This must be the canonical title (see {@link&lt;br /&gt;
   Title#value}. Omit this in the constructor and use another function&lt;br /&gt;
   to set the title if this is unavailable.&lt;br /&gt;
*/&lt;br /&gt;
function Title(val) {&lt;br /&gt;
	/**&lt;br /&gt;
	   The canonical article title. This must be in UTF-8 with no&lt;br /&gt;
	   entities, escaping or nasties. Also, underscores should be&lt;br /&gt;
	   replaced with spaces.&lt;br /&gt;
	   @type String&lt;br /&gt;
	   @private&lt;br /&gt;
	*/&lt;br /&gt;
	this.value=null;&lt;br /&gt;
	/**&lt;br /&gt;
	   The canonical form of the anchor. This should by decoded utf-8 text.&lt;br /&gt;
	   @type String&lt;br /&gt;
	*/&lt;br /&gt;
	this.anchor=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	this.setUtf(val);&lt;br /&gt;
}&lt;br /&gt;
Title.prototype=new Stringwrapper();&lt;br /&gt;
/**&lt;br /&gt;
   Returns the canonical representation of the article title, optionally without anchor.&lt;br /&gt;
   @param {boolean} omitAnchor&lt;br /&gt;
   @fixme Decide specs for anchor&lt;br /&gt;
   @return String The article title and the anchor.&lt;br /&gt;
*/&lt;br /&gt;
Title.prototype.toString=function(omitAnchor) {&lt;br /&gt;
	return this.value + ( (!omitAnchor &amp;amp;&amp;amp; this.anchor) ? &#039;#&#039; + this.anchor : &#039;&#039; );&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.urlAnchor=function() {&lt;br /&gt;
	// FIXME FIXME FIXME&lt;br /&gt;
	return this.anchor;&lt;br /&gt;
}&lt;br /&gt;
Title.fromURL=function(h) {&lt;br /&gt;
	return new Title().fromURL(h);&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.fromURL=function(h) {&lt;br /&gt;
	if (typeof h != &#039;string&#039;) {&lt;br /&gt;
		this.value=null;&lt;br /&gt;
		return this;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// NOTE : playing with decodeURI, encodeURI, escape, unescape,&lt;br /&gt;
	// we seem to be able to replicate the IE borked encoding&lt;br /&gt;
&lt;br /&gt;
	// IE doesn&#039;t do this new-fangled utf-8 thing.&lt;br /&gt;
	// and it&#039;s worse than that.&lt;br /&gt;
	// IE seems to treat the query string differently to the rest of the url&lt;br /&gt;
	// the query is treated as bona-fide utf8, but the first bit of the url is pissed around with&lt;br /&gt;
&lt;br /&gt;
	// we fix up &amp;amp; for all browsers, just in case.&lt;br /&gt;
	var splitted=h.split(&#039;?&#039;);&lt;br /&gt;
	splitted[0]=splitted[0].split(&#039;&amp;amp;&#039;).join(&#039;%26&#039;);&lt;br /&gt;
&lt;br /&gt;
	if (pg.flag.linksLikeIE) {&lt;br /&gt;
		splitted[0]=encodeURI(decode_utf8(splitted[0]));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	h=splitted.join(&#039;?&#039;);&lt;br /&gt;
&lt;br /&gt;
	var contribs=pg.re.contribs.exec(h);&lt;br /&gt;
	if (contribs !== null) {&lt;br /&gt;
		this.setUtf(this.decodeNasties(pg.ns.user + &#039;:&#039; + contribs[3]));&lt;br /&gt;
		return this;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var email=pg.re.email.exec(h);&lt;br /&gt;
	if (email !== null) {&lt;br /&gt;
		this.setUtf(this.decodeNasties(pg.ns.user + &#039;:&#039; + email[3]));&lt;br /&gt;
		return this;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// no more special cases to check --&lt;br /&gt;
	// hopefully it&#039;s not a disguised user-related page&lt;br /&gt;
	var m=pg.re.main.exec(h);&lt;br /&gt;
	if(m===null) { this.value=null; }&lt;br /&gt;
	else { this.setUtf(this.decodeNasties(m[2])); }&lt;br /&gt;
	return this;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.decodeNasties=function(txt) {&lt;br /&gt;
	return this.decodeEscapes(decodeURI(txt));&lt;br /&gt;
}&lt;br /&gt;
Title.prototype.decodeEscapes=function(txt) {&lt;br /&gt;
	var split=txt.parenSplit(/([%][0-9A-Fa-f]{2})/);&lt;br /&gt;
	var len=split.length;&lt;br /&gt;
	for (var i=1; i&amp;lt;len; i=i+2) {&lt;br /&gt;
		split[i]=unescape(split[i]);&lt;br /&gt;
	}&lt;br /&gt;
	return split.join(&#039;&#039;);&lt;br /&gt;
};&lt;br /&gt;
Title.fromAnchor=function(a) {&lt;br /&gt;
	return new Title().fromAnchor(a);&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.fromAnchor=function(a) {&lt;br /&gt;
	if (!a) { this.value=null; return this; }&lt;br /&gt;
	return this.fromURL(a.href);&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.fromWikiText=function(txt) {&lt;br /&gt;
	// FIXME!!!&lt;br /&gt;
	if (!pg.flag.linksLikeIE) { txt=myDecodeURI(txt); }&lt;br /&gt;
	this.value=txt;&lt;br /&gt;
	return this;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.hintValue=function(){&lt;br /&gt;
	if(!this.value) { return &#039;&#039;; }&lt;br /&gt;
	return safeDecodeURI(this.value);&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.toUserName=function(withNs) {&lt;br /&gt;
	if (!this.value) { return null; }&lt;br /&gt;
	var i=this.value.indexOf(pg.ns.user);&lt;br /&gt;
	var j=this.value.indexOf(&#039;:&#039;);&lt;br /&gt;
	if  (i !== 0 || j == -1) {&lt;br /&gt;
		this.value=null;&lt;br /&gt;
		return null;&lt;br /&gt;
	}&lt;br /&gt;
	var k=this.value.indexOf(&#039;/&#039;);&lt;br /&gt;
	if (k==-1) { this.value=this.value.substring(j+1); }&lt;br /&gt;
	else { this.value=this.value.substring(j+1,k); }&lt;br /&gt;
	if (withNs) { this.value = pg.ns.user + &#039;:&#039; + this.value; }&lt;br /&gt;
	return this.value;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.userName=function(withNs) {&lt;br /&gt;
	var t=(new Title(this.value));&lt;br /&gt;
	t.toUserName(withNs);&lt;br /&gt;
	if (t.value) { return t; }&lt;br /&gt;
	return null;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.toTalkPage=function() {&lt;br /&gt;
	// convert article to a talk page, or if we can&#039;t return null&lt;br /&gt;
	// or, in other words, return null if this ALREADY IS a talk page&lt;br /&gt;
	// and return the corresponding talk page otherwise&lt;br /&gt;
	if (this.value===null) { return null; }&lt;br /&gt;
	var talkRegex=namespaceListToRegex(pg.ns.talkList);&lt;br /&gt;
	if (talkRegex.exec(this.value)) { this.value=null; return null;}&lt;br /&gt;
&lt;br /&gt;
	var nsRegex=namespaceListToRegex(pg.ns.withTalkList);&lt;br /&gt;
	var splitted=this.value.parenSplit(nsRegex);&lt;br /&gt;
	if (splitted.length&amp;lt;2) {&lt;br /&gt;
		this.value= (pg.ns.talkList[0]+&#039;:&#039;+this.value).split(&#039; &#039;).join(&#039;_&#039;);&lt;br /&gt;
		return this.value;&lt;br /&gt;
	}&lt;br /&gt;
	for (var i=0; i&amp;lt; pg.ns.withTalkList.length; ++i) {&lt;br /&gt;
		if (splitted[1]==pg.ns.withTalkList[i]) {&lt;br /&gt;
			splitted[1]=pg.ns.talkList[i];&lt;br /&gt;
			this.value=splitted.join(&#039;:&#039;).substring(1).split(&#039; &#039;).join(&#039;_&#039;);&lt;br /&gt;
			return this.value;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	this.value=null;&lt;br /&gt;
	return null;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.talkPage=function() {&lt;br /&gt;
	var t=new Title(this.value);&lt;br /&gt;
	t.toTalkPage();&lt;br /&gt;
	if (t.value) { return t; }&lt;br /&gt;
	return null;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.isTalkPage=function() {&lt;br /&gt;
	if (this.talkPage()===null) { return true; }&lt;br /&gt;
	return false;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.toArticleFromTalkPage=function() {&lt;br /&gt;
	var talkRegex=namespaceListToRegex(pg.ns.talkList);&lt;br /&gt;
	var splitted=this.value.parenSplit(talkRegex);&lt;br /&gt;
	if (splitted.length &amp;lt; 2 || splitted[0].length &amp;gt; 0) { this.value=null; return null; }&lt;br /&gt;
	if (splitted[1]==pg.ns.talkList[0]) {&lt;br /&gt;
		splitted[1]=&#039;&#039;;&lt;br /&gt;
		this.value=splitted.join(&#039;:&#039;).substring(2).split(&#039; &#039;).join(&#039;_&#039;);&lt;br /&gt;
		return this.value;&lt;br /&gt;
	}&lt;br /&gt;
	for (var i=1; i&amp;lt; pg.ns.talkList.length; ++i) {&lt;br /&gt;
		if (splitted[1]==pg.ns.talkList[i] || splitted[1]==pg.ns.talkList[i].split(&#039; &#039;).join(&#039;_&#039;)) {&lt;br /&gt;
			splitted[1]=pg.ns.withTalkList[i];&lt;br /&gt;
			this.value= splitted.join(&#039;:&#039;).substring(1).split(&#039; &#039;).join(&#039;_&#039;);&lt;br /&gt;
			return this.value;&lt;br /&gt;
		    }&lt;br /&gt;
	}&lt;br /&gt;
	this.value=null;&lt;br /&gt;
	return this.value;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.articleFromTalkPage=function() {&lt;br /&gt;
	var t=new Title(this.value);&lt;br /&gt;
	t.toArticleFromTalkPage();&lt;br /&gt;
	if (t.value) { return t; }&lt;br /&gt;
	return null;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.articleFromTalkOrArticle=function() {&lt;br /&gt;
	var t=new Title(this.value);&lt;br /&gt;
	if ( t.toArticleFromTalkPage() ) { return t; }&lt;br /&gt;
	return this;&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.stripNamespace=function(){ // returns a string, not a Title&lt;br /&gt;
	// this isn&#039;t very sophisticated&lt;br /&gt;
	// it just removes everything up to the final :&lt;br /&gt;
	// BUG: probably does silly things for images with colons in the name - check it out&lt;br /&gt;
	var list = this.value.split(&#039;:&#039;);&lt;br /&gt;
	return list[list.length-1];&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.setUtf=function(value){&lt;br /&gt;
	if (!value) { this.value=&#039;&#039;; return; }&lt;br /&gt;
	var anch=value.indexOf(&#039;#&#039;);&lt;br /&gt;
	if(anch &amp;lt; 0) { this.value=value; this.anchor=&#039;&#039;; return; }&lt;br /&gt;
	this.value=value.substring(0,anch);&lt;br /&gt;
	this.anchor=value.substring(anch+1);&lt;br /&gt;
	this.ns=null; // wait until namespace() is called&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.namespace=function() {&lt;br /&gt;
	// FIXME&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.setUrl=function(urlfrag) {&lt;br /&gt;
	var anch=urlfrag.indexOf(&#039;#&#039;);&lt;br /&gt;
	this.value=safeDecodeURI(urlfrag.substring(0,anch));&lt;br /&gt;
	this.anchor=value.substring(anch+1);&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.append=function(x){&lt;br /&gt;
	this.setUtf(this.value + x);&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.isIpUser=function() {&lt;br /&gt;
	return pg.re.ipUser.test(this.userName());&lt;br /&gt;
};&lt;br /&gt;
Title.prototype.urlString=function() {&lt;br /&gt;
	return encodeURI(this.value).split(&#039;&amp;amp;&#039;).join(&#039;%26&#039;).split(&#039;?&#039;).join(&#039;%3F&#039;).split(&#039;+&#039;).join(&#039;%2B&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function paramValue(param, url) {&lt;br /&gt;
	var s=url.parenSplit(RegExp(&#039;[?&amp;amp;]&#039; + literalizeRegex(param) + &#039;=([^?&amp;amp;]*)&#039;));&lt;br /&gt;
	if (!url) { return null; }&lt;br /&gt;
	return s[1] || null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// all sorts of stuff here&lt;br /&gt;
// almost everything needs to be rewritten&lt;br /&gt;
&lt;br /&gt;
function oldidFromAnchor(a) { return paramValue(&#039;oldid&#039;, a.href); }&lt;br /&gt;
function diffFromAnchor(a) { return paramValue(&#039;diff&#039;, a.href); }&lt;br /&gt;
&lt;br /&gt;
function stripNamespace(article) {&lt;br /&gt;
	// FIXME used in images.js.... extend Title class to Image class?&lt;br /&gt;
&lt;br /&gt;
	// this isn&#039;t very sophisticated&lt;br /&gt;
	// it just removes everything up to the final :&lt;br /&gt;
	// BUG: probably does silly things for images with colons in the name - check it out&lt;br /&gt;
	var list = article.split(&#039;:&#039;);&lt;br /&gt;
	return list[list.length-1];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// (a) myDecodeURI (first standard decodeURI, then pg.re.urlNoPopup)&lt;br /&gt;
// (b) change spaces to underscores&lt;br /&gt;
// (c) encodeURI (just the straight one, no pg.re.urlNoPopup)&lt;br /&gt;
&lt;br /&gt;
function wikiMarkupToAddressFragment (str) { // for images&lt;br /&gt;
	var ret = safeDecodeURI(str);&lt;br /&gt;
	ret = ret.split(&#039; &#039;).join(&#039;_&#039;);&lt;br /&gt;
	ret = encodeURI(ret);&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function myDecodeURI (str) {&lt;br /&gt;
	var ret;&lt;br /&gt;
	try { ret=decodeURI(str.toString()); }&lt;br /&gt;
	catch (summat) { return str; }&lt;br /&gt;
	for (var i=0; i&amp;lt;pg.misc.decodeExtras.length; ++i) {&lt;br /&gt;
		var from=pg.misc.decodeExtras[i].from;&lt;br /&gt;
		var to=pg.misc.decodeExtras[i].to;&lt;br /&gt;
		ret=ret.split(from).join(to);&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function safeDecodeURI(str) { var ret=myDecodeURI(str); return ret || str; }&lt;br /&gt;
&lt;br /&gt;
function myEncodeURI (str) {&lt;br /&gt;
	log (&#039;myEncodeURI: str=&#039;+str);&lt;br /&gt;
	var ret=str;&lt;br /&gt;
	ret=encodeURI(ret);&lt;br /&gt;
	for (var i=0; i&amp;lt;pg.misc.decodeExtras.length; ++i) {&lt;br /&gt;
		var from=pg.misc.decodeExtras[i].from;&lt;br /&gt;
		var to=pg.misc.decodeExtras[i].to;&lt;br /&gt;
		ret=ret.split(to).join(from);&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Titleanchor() {&lt;br /&gt;
	// FIXME&lt;br /&gt;
	this.fromEncoded=function(str) {&lt;br /&gt;
		// FIXME probably incorrect!&lt;br /&gt;
		this.encoded=str;&lt;br /&gt;
		this.value=unesape(str.replace(RegExp(&#039;[.]([0-9A-F][0-9A-F])&#039;, &#039;g&#039;), &#039;%$1&#039;));&lt;br /&gt;
	};&lt;br /&gt;
	this.getEncoded=function(str) {&lt;br /&gt;
		if (this.encoded) {&lt;br /&gt;
			return this.encoded;&lt;br /&gt;
		}&lt;br /&gt;
		// FIXME&lt;br /&gt;
		return &#039;Not yet implemented&#039;;&lt;br /&gt;
	};&lt;br /&gt;
	this.setUTF=function(str) {&lt;br /&gt;
		this.value=str;&lt;br /&gt;
		this.encoded=this.getEncoded();&lt;br /&gt;
	};&lt;br /&gt;
}&lt;br /&gt;
Titleanchor.prototype=new Stringwrapper();&lt;br /&gt;
&lt;br /&gt;
function removeAnchor(article) {&lt;br /&gt;
	if (!article) { return null; }&lt;br /&gt;
	// is there a #? if not, we&#039;re done&lt;br /&gt;
	var i=article.indexOf(&#039;#&#039;);&lt;br /&gt;
	if (i == -1) { return article; }&lt;br /&gt;
	return article.substring(0,i);&lt;br /&gt;
}&lt;br /&gt;
function getAnchor(article) {&lt;br /&gt;
	if(!article) { return null; }&lt;br /&gt;
	var i=article.indexOf(&#039;#&#039;);&lt;br /&gt;
	if (i == -1) { return &#039;&#039;; }&lt;br /&gt;
	return article.substring(i+1);&lt;br /&gt;
}&lt;br /&gt;
function decodeAnchor(article) {&lt;br /&gt;
	var anch=getAnchor(article);&lt;br /&gt;
	if(!anch) { return &#039;&#039;; }&lt;br /&gt;
	anch=anch.replace(RegExp(&#039;[.]([0-9A-F][0-9A-F])&#039;, &#039;g&#039;), &#039;%$1&#039;);&lt;br /&gt;
	return decodeURI(anch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////&lt;br /&gt;
// TESTS //&lt;br /&gt;
///////////&lt;br /&gt;
&lt;br /&gt;
function isIpUser(user) {return pg.re.ipUser.test(user);}&lt;br /&gt;
&lt;br /&gt;
function isStub(data) { return pg.re.stub.test(data); }&lt;br /&gt;
function isDisambig(data) {&lt;br /&gt;
	return ! pg.current.article.isTalkPage() &amp;amp;&amp;amp; pg.re.disambig.test(data);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isValidImageName(str){ // extend as needed...&lt;br /&gt;
	return ( str.indexOf(&#039;{&#039;) == -1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isInNamespaceOrTalk(article, namespace) {&lt;br /&gt;
	if (!article) { return false; }&lt;br /&gt;
	if (isInNamespace(article, namespace)) { return true; }&lt;br /&gt;
	// FIXME: internationalize this&lt;br /&gt;
	if  (article.indexOf(namespace+&#039;_talk:&#039;) === 0) { return true; }&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isInNamespace(article, namespace) {&lt;br /&gt;
	if (!article) { return false; }&lt;br /&gt;
	var list=namespace;&lt;br /&gt;
	if (typeof list == typeof &#039;&#039;) list=[list];&lt;br /&gt;
	for (var i=0; i&amp;lt;list.length; ++i) {&lt;br /&gt;
		if (article.indexOf(list[i]+&#039;:&#039;)===0) { return true; }&lt;br /&gt;
		// should also respect namespaces encoded with wikiMarkupToAddressFragment&lt;br /&gt;
		if (article.indexOf(wikiMarkupToAddressFragment(list[i]+&#039;:&#039;))===0) { return true; }&lt;br /&gt;
	}&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isInStrippableNamespace(article) {&lt;br /&gt;
	return isInNamespace(article, pg.ns.nonArticleList);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isInMainNamespace(article) {&lt;br /&gt;
	return !isInStrippableNamespace(article);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isImage(thing) {&lt;br /&gt;
	return isInNamespaceOrTalk(thing, pg.ns.image);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isImagePage(thing) {&lt;br /&gt;
	return isInNamespace (thing, pg.ns.image);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function anchorContainsImage(a) {&lt;br /&gt;
	// iterate over children of anchor a&lt;br /&gt;
	// see if any are images&lt;br /&gt;
	if (a===null) { return false; }&lt;br /&gt;
	kids=a.childNodes;&lt;br /&gt;
	for (var i=0; i&amp;lt;kids.length; ++i) { if (kids[i].nodeName==&#039;IMG&#039;) { return true; } }&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isPopupLink(a) {&lt;br /&gt;
	// NB for performance reasons, TOC links generally return true&lt;br /&gt;
	// they should be stripped out later&lt;br /&gt;
&lt;br /&gt;
	// FIXME is this faster inline?&lt;br /&gt;
	if (a.onclick) { return false; }&lt;br /&gt;
	var h=a.href;&lt;br /&gt;
	if ( (h.indexOf(pg.wiki.titlebase) === 0 || h.indexOf(pg.wiki.wikibase) === 0) &amp;amp;&amp;amp; !pg.re.urlNoPopup.test(h) ) {&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
	return (pg.re.contribs.test(h) &amp;amp;&amp;amp; h.indexOf(&#039;&amp;amp;limit=&#039;) == -1 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: titles.js&lt;br /&gt;
// STARTFILE: cookies.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// Cookie handling&lt;br /&gt;
// from http://www.quirksmode.org/js/cookies.html&lt;br /&gt;
&lt;br /&gt;
var Cookie= {&lt;br /&gt;
	create: function(name,value,days)&lt;br /&gt;
	{&lt;br /&gt;
		var expires;&lt;br /&gt;
		if (days)&lt;br /&gt;
		{&lt;br /&gt;
			var date = new Date();&lt;br /&gt;
			date.setTime(date.getTime()+(days*24*60*60*1000));&lt;br /&gt;
			expires = &amp;quot;; expires=&amp;quot;+date.toGMTString();&lt;br /&gt;
		}&lt;br /&gt;
		else { expires = &amp;quot;&amp;quot;; }&lt;br /&gt;
		document.cookie = name+&amp;quot;=&amp;quot;+value+expires+&amp;quot;; path=/&amp;quot;;&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	read: function(name)&lt;br /&gt;
	{&lt;br /&gt;
		var nameEQ = name + &amp;quot;=&amp;quot;;&lt;br /&gt;
		var ca = document.cookie.split(&#039;;&#039;);&lt;br /&gt;
		for(var i=0;i &amp;lt; ca.length;i++)&lt;br /&gt;
		{&lt;br /&gt;
			var c = ca[i];&lt;br /&gt;
			while (c.charAt(0)==&#039; &#039;) { c = c.substring(1,c.length); }&lt;br /&gt;
			if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length,c.length); }&lt;br /&gt;
		}&lt;br /&gt;
		return null;&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	erase: function(name)&lt;br /&gt;
	{&lt;br /&gt;
		Cookie.create(name,&amp;quot;&amp;quot;,-1);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: cookies.js&lt;br /&gt;
// STARTFILE: getpage.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// Wiki-specific downloading&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Schematic for a getWiki call&lt;br /&gt;
//&lt;br /&gt;
//   getWiki-&amp;gt;-getPageWithCaching&lt;br /&gt;
//                    |&lt;br /&gt;
//       false        |          true&lt;br /&gt;
// getPage&amp;lt;-[findPictureInCache]-&amp;gt;-onComplete(a fake download)&lt;br /&gt;
//   \.&lt;br /&gt;
//     (async)-&amp;gt;addPageToCache(download)-&amp;gt;-onComplete(download)&lt;br /&gt;
&lt;br /&gt;
function getWiki(article, onComplete, oldid, owner) {&lt;br /&gt;
	// NB wikipage is a Title object&lt;br /&gt;
	log(&#039;getWiki, article=&#039;+article);&lt;br /&gt;
	var wikipage=article.urlString();&lt;br /&gt;
	// set ctype=text/css to get around opera gzip bug&lt;br /&gt;
	var url = pg.wiki.titlebase + removeAnchor(wikipage) + &#039;&amp;amp;action=raw&amp;amp;ctype=text/css&#039;;&lt;br /&gt;
	if (oldid || oldid===0 || oldid===&#039;0&#039;) { url += &#039;&amp;amp;oldid=&#039;+oldid; }&lt;br /&gt;
	url += &#039;&amp;amp;maxage=0&amp;amp;smaxage=0&#039;;&lt;br /&gt;
&lt;br /&gt;
	getPageWithCaching(url, onComplete, owner);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// check cache to see if page exists&lt;br /&gt;
&lt;br /&gt;
function getPageWithCaching(url, onComplete, owner) {&lt;br /&gt;
	log(&#039;getPageWithCaching, url=&#039;+url);&lt;br /&gt;
	var i=findInPageCache(url);&lt;br /&gt;
	if (i &amp;gt; -1) {&lt;br /&gt;
		return fakeDownload(url, pg.idNumber, onComplete, pg.cache.pages[i].data, pg.cache.pages[i].lastModified);&lt;br /&gt;
	}&lt;br /&gt;
	var d=getPage(url, onComplete, owner);&lt;br /&gt;
	if (d &amp;amp;&amp;amp; owner &amp;amp;&amp;amp; owner.addDownload) {&lt;br /&gt;
		owner.addDownload(d);&lt;br /&gt;
		d.owner=owner;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getPage(url, onComplete, owner) {&lt;br /&gt;
	log(&#039;getPage&#039;);&lt;br /&gt;
	var callback= function (d) { if (!d.aborted) {addPageToCache(d); onComplete(d);} };&lt;br /&gt;
	return startDownload(url, pg.idNumber, callback);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function findInPageCache(url) {&lt;br /&gt;
	for (var i=0; i&amp;lt;pg.cache.pages.length; ++i) {&lt;br /&gt;
		if (url==pg.cache.pages[i].url) { return i; }&lt;br /&gt;
	}&lt;br /&gt;
	return -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function addPageToCache(download) {&lt;br /&gt;
	log(&#039;addPageToCache &#039;+download.url);&lt;br /&gt;
	var page = {url: download.url, data: download.data, lastModified: download.lastModified};&lt;br /&gt;
	return pg.cache.pages.push(page);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: getpage.js&lt;br /&gt;
// STARTFILE: md5-2.2alpha.js&lt;br /&gt;
/*&lt;br /&gt;
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message&lt;br /&gt;
 * Digest Algorithm, as defined in RFC 1321.&lt;br /&gt;
 * Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005&lt;br /&gt;
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet&lt;br /&gt;
 * Distributed under the BSD License&lt;br /&gt;
 * See http://pajhome.org.uk/crypt/md5 for more info.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Configurable variables. You may need to tweak these to be compatible with&lt;br /&gt;
 * the server-side, but the defaults work in most cases.&lt;br /&gt;
 */&lt;br /&gt;
var hexcase = 0;   /* hex output format. 0 - lowercase; 1 - uppercase	     */&lt;br /&gt;
var b64pad  = &amp;quot;&amp;quot;; /* base-64 pad character. &amp;quot;=&amp;quot; for strict RFC compliance   */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * These are the functions you&#039;ll usually want to call&lt;br /&gt;
 * They take string arguments and return either hex or base-64 encoded strings&lt;br /&gt;
 */&lt;br /&gt;
function hex_md5(s)    { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }&lt;br /&gt;
function b64_md5(s)    { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }&lt;br /&gt;
function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }&lt;br /&gt;
function hex_hmac_md5(k, d)&lt;br /&gt;
  { return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }&lt;br /&gt;
function b64_hmac_md5(k, d)&lt;br /&gt;
  { return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }&lt;br /&gt;
function any_hmac_md5(k, d, e)&lt;br /&gt;
  { return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Perform a simple self-test to see if the VM is working&lt;br /&gt;
 */&lt;br /&gt;
function md5_vm_test()&lt;br /&gt;
{&lt;br /&gt;
  return hex_md5(&amp;quot;abc&amp;quot;) == &amp;quot;900150983cd24fb0d6963f7d28e17f72&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Calculate the MD5 of a raw string&lt;br /&gt;
 */&lt;br /&gt;
function rstr_md5(s)&lt;br /&gt;
{&lt;br /&gt;
  return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Calculate the HMAC-MD5, of a key and some data (raw strings)&lt;br /&gt;
 */&lt;br /&gt;
function rstr_hmac_md5(key, data)&lt;br /&gt;
{&lt;br /&gt;
  var bkey = rstr2binl(key);&lt;br /&gt;
  if(bkey.length &amp;gt; 16) bkey = binl_md5(bkey, key.length * 8);&lt;br /&gt;
&lt;br /&gt;
  var ipad = Array(16), opad = Array(16);&lt;br /&gt;
  for(var i = 0; i &amp;lt; 16; i++)&lt;br /&gt;
  {&lt;br /&gt;
    ipad[i] = bkey[i] ^ 0x36363636;&lt;br /&gt;
    opad[i] = bkey[i] ^ 0x5C5C5C5C;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);&lt;br /&gt;
  return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Convert a raw string to a hex string&lt;br /&gt;
 */&lt;br /&gt;
function rstr2hex(input)&lt;br /&gt;
{&lt;br /&gt;
  var hex_tab = hexcase ? &amp;quot;0123456789ABCDEF&amp;quot; : &amp;quot;0123456789abcdef&amp;quot;;&lt;br /&gt;
  var output = &amp;quot;&amp;quot;;&lt;br /&gt;
  var x;&lt;br /&gt;
  for(var i = 0; i &amp;lt; input.length; i++)&lt;br /&gt;
  {&lt;br /&gt;
    x = input.charCodeAt(i);&lt;br /&gt;
    output += hex_tab.charAt((x &amp;gt;&amp;gt;&amp;gt; 4) &amp;amp; 0x0F)&lt;br /&gt;
	   +  hex_tab.charAt( x	       &amp;amp; 0x0F);&lt;br /&gt;
  }&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Convert a raw string to a base-64 string&lt;br /&gt;
 */&lt;br /&gt;
function rstr2b64(input)&lt;br /&gt;
{&lt;br /&gt;
  var tab = &amp;quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&amp;quot;;&lt;br /&gt;
  var output = &amp;quot;&amp;quot;;&lt;br /&gt;
  var len = input.length;&lt;br /&gt;
  for(var i = 0; i &amp;lt; len; i += 3)&lt;br /&gt;
  {&lt;br /&gt;
    var triplet = (input.charCodeAt(i) &amp;lt;&amp;lt; 16)&lt;br /&gt;
		| (i + 1 &amp;lt; len ? input.charCodeAt(i+1) &amp;lt;&amp;lt; 8 : 0)&lt;br /&gt;
		| (i + 2 &amp;lt; len ? input.charCodeAt(i+2)	    : 0);&lt;br /&gt;
    for(var j = 0; j &amp;lt; 4; j++)&lt;br /&gt;
    {&lt;br /&gt;
      if(i * 8 + j * 6 &amp;gt; input.length * 8) output += b64pad;&lt;br /&gt;
      else output += tab.charAt((triplet &amp;gt;&amp;gt;&amp;gt; 6*(3-j)) &amp;amp; 0x3F);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Convert a raw string to an arbitrary string encoding&lt;br /&gt;
 */&lt;br /&gt;
function rstr2any(input, encoding)&lt;br /&gt;
{&lt;br /&gt;
  var divisor = encoding.length;&lt;br /&gt;
  var remainders = Array();&lt;br /&gt;
  var i, q, x, quotient;&lt;br /&gt;
&lt;br /&gt;
  /* Convert to an array of 16-bit big-endian values, forming the dividend */&lt;br /&gt;
  var dividend = Array(input.length / 2);&lt;br /&gt;
  for(i = 0; i &amp;lt; dividend.length; i++)&lt;br /&gt;
  {&lt;br /&gt;
    dividend[i] = (input.charCodeAt(i * 2) &amp;lt;&amp;lt; 8) | input.charCodeAt(i * 2 + 1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /*&lt;br /&gt;
   * Repeatedly perform a long division. The binary array forms the dividend,&lt;br /&gt;
   * the length of the encoding is the divisor. Once computed, the quotient&lt;br /&gt;
   * forms the dividend for the next step. We stop when the dividend is zero.&lt;br /&gt;
   * All remainders are stored for later use.&lt;br /&gt;
   */&lt;br /&gt;
  while(dividend.length &amp;gt; 0)&lt;br /&gt;
  {&lt;br /&gt;
    quotient = Array();&lt;br /&gt;
    x = 0;&lt;br /&gt;
    for(i = 0; i &amp;lt; dividend.length; i++)&lt;br /&gt;
    {&lt;br /&gt;
      x = (x &amp;lt;&amp;lt; 16) + dividend[i];&lt;br /&gt;
      q = Math.floor(x / divisor);&lt;br /&gt;
      x -= q * divisor;&lt;br /&gt;
      if(quotient.length &amp;gt; 0 || q &amp;gt; 0)&lt;br /&gt;
	quotient[quotient.length] = q;&lt;br /&gt;
    }&lt;br /&gt;
    remainders[remainders.length] = x;&lt;br /&gt;
    dividend = quotient;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Convert the remainders to the output string */&lt;br /&gt;
  var output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for(i = remainders.length - 1; i &amp;gt;= 0; i--)&lt;br /&gt;
    output += encoding.charAt(remainders[i]);&lt;br /&gt;
&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Encode a string as utf-8.&lt;br /&gt;
 * For efficiency, this assumes the input is valid utf-16.&lt;br /&gt;
 */&lt;br /&gt;
function str2rstr_utf8(input)&lt;br /&gt;
{&lt;br /&gt;
  var output = &amp;quot;&amp;quot;;&lt;br /&gt;
  var i = -1;&lt;br /&gt;
  var x, y;&lt;br /&gt;
&lt;br /&gt;
  while(++i &amp;lt; input.length)&lt;br /&gt;
  {&lt;br /&gt;
    /* Decode utf-16 surrogate pairs */&lt;br /&gt;
    x = input.charCodeAt(i);&lt;br /&gt;
    y = i + 1 &amp;lt; input.length ? input.charCodeAt(i + 1) : 0;&lt;br /&gt;
    if(0xD800 &amp;lt;= x &amp;amp;&amp;amp; x &amp;lt;= 0xDBFF &amp;amp;&amp;amp; 0xDC00 &amp;lt;= y &amp;amp;&amp;amp; y &amp;lt;= 0xDFFF)&lt;br /&gt;
    {&lt;br /&gt;
      x = 0x10000 + ((x &amp;amp; 0x03FF) &amp;lt;&amp;lt; 10) + (y &amp;amp; 0x03FF);&lt;br /&gt;
      i++;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Encode output as utf-8 */&lt;br /&gt;
    if(x &amp;lt;= 0x7F)&lt;br /&gt;
      output += String.fromCharCode(x);&lt;br /&gt;
    else if(x &amp;lt;= 0x7FF)&lt;br /&gt;
      output += String.fromCharCode(0xC0 | ((x &amp;gt;&amp;gt;&amp;gt; 6 ) &amp;amp; 0x1F),&lt;br /&gt;
				    0x80 | ( x	       &amp;amp; 0x3F));&lt;br /&gt;
    else if(x &amp;lt;= 0xFFFF)&lt;br /&gt;
      output += String.fromCharCode(0xE0 | ((x &amp;gt;&amp;gt;&amp;gt; 12) &amp;amp; 0x0F),&lt;br /&gt;
				    0x80 | ((x &amp;gt;&amp;gt;&amp;gt; 6 ) &amp;amp; 0x3F),&lt;br /&gt;
				    0x80 | ( x	       &amp;amp; 0x3F));&lt;br /&gt;
    else if(x &amp;lt;= 0x1FFFFF)&lt;br /&gt;
      output += String.fromCharCode(0xF0 | ((x &amp;gt;&amp;gt;&amp;gt; 18) &amp;amp; 0x07),&lt;br /&gt;
				    0x80 | ((x &amp;gt;&amp;gt;&amp;gt; 12) &amp;amp; 0x3F),&lt;br /&gt;
				    0x80 | ((x &amp;gt;&amp;gt;&amp;gt; 6 ) &amp;amp; 0x3F),&lt;br /&gt;
				    0x80 | ( x	       &amp;amp; 0x3F));&lt;br /&gt;
  }&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Encode a string as utf-16&lt;br /&gt;
 */&lt;br /&gt;
function str2rstr_utf16le(input)&lt;br /&gt;
{&lt;br /&gt;
  var output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for(var i = 0; i &amp;lt; input.length; i++)&lt;br /&gt;
    output += String.fromCharCode( input.charCodeAt(i)	      &amp;amp; 0xFF,&lt;br /&gt;
				  (input.charCodeAt(i) &amp;gt;&amp;gt;&amp;gt; 8) &amp;amp; 0xFF);&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function str2rstr_utf16be(input)&lt;br /&gt;
{&lt;br /&gt;
  var output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for(var i = 0; i &amp;lt; input.length; i++)&lt;br /&gt;
    output += String.fromCharCode((input.charCodeAt(i) &amp;gt;&amp;gt;&amp;gt; 8) &amp;amp; 0xFF,&lt;br /&gt;
				   input.charCodeAt(i)	      &amp;amp; 0xFF);&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Convert a raw string to an array of little-endian words&lt;br /&gt;
 * Characters &amp;gt;255 have their high-byte silently ignored.&lt;br /&gt;
 */&lt;br /&gt;
function rstr2binl(input)&lt;br /&gt;
{&lt;br /&gt;
  var output = Array(input.length &amp;gt;&amp;gt; 2);&lt;br /&gt;
  for(var i = 0; i &amp;lt; output.length; i++)&lt;br /&gt;
    output[i] = 0;&lt;br /&gt;
  for(var i = 0; i &amp;lt; input.length * 8; i += 8)&lt;br /&gt;
    output[i&amp;gt;&amp;gt;5] |= (input.charCodeAt(i / 8) &amp;amp; 0xFF) &amp;lt;&amp;lt; (i%32);&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Convert an array of little-endian words to a string&lt;br /&gt;
 */&lt;br /&gt;
function binl2rstr(input)&lt;br /&gt;
{&lt;br /&gt;
  var output = &amp;quot;&amp;quot;;&lt;br /&gt;
  for(var i = 0; i &amp;lt; input.length * 32; i += 8)&lt;br /&gt;
    output += String.fromCharCode((input[i&amp;gt;&amp;gt;5] &amp;gt;&amp;gt;&amp;gt; (i % 32)) &amp;amp; 0xFF);&lt;br /&gt;
  return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Calculate the MD5 of an array of little-endian words, and a bit length.&lt;br /&gt;
 */&lt;br /&gt;
function binl_md5(x, len)&lt;br /&gt;
{&lt;br /&gt;
  /* append padding */&lt;br /&gt;
  x[len &amp;gt;&amp;gt; 5] |= 0x80 &amp;lt;&amp;lt; ((len) % 32);&lt;br /&gt;
  x[(((len + 64) &amp;gt;&amp;gt;&amp;gt; 9) &amp;lt;&amp;lt; 4) + 14] = len;&lt;br /&gt;
&lt;br /&gt;
  var a =  1732584193;&lt;br /&gt;
  var b = -271733879;&lt;br /&gt;
  var c = -1732584194;&lt;br /&gt;
  var d =  271733878;&lt;br /&gt;
&lt;br /&gt;
  for(var i = 0; i &amp;lt; x.length; i += 16)&lt;br /&gt;
  {&lt;br /&gt;
    var olda = a;&lt;br /&gt;
    var oldb = b;&lt;br /&gt;
    var oldc = c;&lt;br /&gt;
    var oldd = d;&lt;br /&gt;
&lt;br /&gt;
    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);&lt;br /&gt;
    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);&lt;br /&gt;
    c = md5_ff(c, d, a, b, x[i+ 2], 17,	 606105819);&lt;br /&gt;
    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);&lt;br /&gt;
    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);&lt;br /&gt;
    d = md5_ff(d, a, b, c, x[i+ 5], 12,	 1200080426);&lt;br /&gt;
    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);&lt;br /&gt;
    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);&lt;br /&gt;
    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,	 1770035416);&lt;br /&gt;
    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);&lt;br /&gt;
    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);&lt;br /&gt;
    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);&lt;br /&gt;
    a = md5_ff(a, b, c, d, x[i+12], 7 ,	 1804603682);&lt;br /&gt;
    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);&lt;br /&gt;
    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);&lt;br /&gt;
    b = md5_ff(b, c, d, a, x[i+15], 22,	 1236535329);&lt;br /&gt;
&lt;br /&gt;
    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);&lt;br /&gt;
    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);&lt;br /&gt;
    c = md5_gg(c, d, a, b, x[i+11], 14,	 643717713);&lt;br /&gt;
    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);&lt;br /&gt;
    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);&lt;br /&gt;
    d = md5_gg(d, a, b, c, x[i+10], 9 ,	 38016083);&lt;br /&gt;
    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);&lt;br /&gt;
    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);&lt;br /&gt;
    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,	 568446438);&lt;br /&gt;
    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);&lt;br /&gt;
    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);&lt;br /&gt;
    b = md5_gg(b, c, d, a, x[i+ 8], 20,	 1163531501);&lt;br /&gt;
    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);&lt;br /&gt;
    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);&lt;br /&gt;
    c = md5_gg(c, d, a, b, x[i+ 7], 14,	 1735328473);&lt;br /&gt;
    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);&lt;br /&gt;
&lt;br /&gt;
    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);&lt;br /&gt;
    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);&lt;br /&gt;
    c = md5_hh(c, d, a, b, x[i+11], 16,	 1839030562);&lt;br /&gt;
    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);&lt;br /&gt;
    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);&lt;br /&gt;
    d = md5_hh(d, a, b, c, x[i+ 4], 11,	 1272893353);&lt;br /&gt;
    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);&lt;br /&gt;
    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);&lt;br /&gt;
    a = md5_hh(a, b, c, d, x[i+13], 4 ,	 681279174);&lt;br /&gt;
    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);&lt;br /&gt;
    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);&lt;br /&gt;
    b = md5_hh(b, c, d, a, x[i+ 6], 23,	 76029189);&lt;br /&gt;
    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);&lt;br /&gt;
    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);&lt;br /&gt;
    c = md5_hh(c, d, a, b, x[i+15], 16,	 530742520);&lt;br /&gt;
    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);&lt;br /&gt;
&lt;br /&gt;
    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);&lt;br /&gt;
    d = md5_ii(d, a, b, c, x[i+ 7], 10,	 1126891415);&lt;br /&gt;
    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);&lt;br /&gt;
    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);&lt;br /&gt;
    a = md5_ii(a, b, c, d, x[i+12], 6 ,	 1700485571);&lt;br /&gt;
    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);&lt;br /&gt;
    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);&lt;br /&gt;
    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);&lt;br /&gt;
    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,	 1873313359);&lt;br /&gt;
    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);&lt;br /&gt;
    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);&lt;br /&gt;
    b = md5_ii(b, c, d, a, x[i+13], 21,	 1309151649);&lt;br /&gt;
    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);&lt;br /&gt;
    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);&lt;br /&gt;
    c = md5_ii(c, d, a, b, x[i+ 2], 15,	 718787259);&lt;br /&gt;
    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);&lt;br /&gt;
&lt;br /&gt;
    a = safe_add(a, olda);&lt;br /&gt;
    b = safe_add(b, oldb);&lt;br /&gt;
    c = safe_add(c, oldc);&lt;br /&gt;
    d = safe_add(d, oldd);&lt;br /&gt;
  }&lt;br /&gt;
  return Array(a, b, c, d);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * These functions implement the four basic operations the algorithm uses.&lt;br /&gt;
 */&lt;br /&gt;
function md5_cmn(q, a, b, x, s, t)&lt;br /&gt;
{&lt;br /&gt;
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);&lt;br /&gt;
}&lt;br /&gt;
function md5_ff(a, b, c, d, x, s, t)&lt;br /&gt;
{&lt;br /&gt;
  return md5_cmn((b &amp;amp; c) | ((~b) &amp;amp; d), a, b, x, s, t);&lt;br /&gt;
}&lt;br /&gt;
function md5_gg(a, b, c, d, x, s, t)&lt;br /&gt;
{&lt;br /&gt;
  return md5_cmn((b &amp;amp; d) | (c &amp;amp; (~d)), a, b, x, s, t);&lt;br /&gt;
}&lt;br /&gt;
function md5_hh(a, b, c, d, x, s, t)&lt;br /&gt;
{&lt;br /&gt;
  return md5_cmn(b ^ c ^ d, a, b, x, s, t);&lt;br /&gt;
}&lt;br /&gt;
function md5_ii(a, b, c, d, x, s, t)&lt;br /&gt;
{&lt;br /&gt;
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally&lt;br /&gt;
 * to work around bugs in some JS interpreters.&lt;br /&gt;
 */&lt;br /&gt;
function safe_add(x, y)&lt;br /&gt;
{&lt;br /&gt;
  var lsw = (x &amp;amp; 0xFFFF) + (y &amp;amp; 0xFFFF);&lt;br /&gt;
  var msw = (x &amp;gt;&amp;gt; 16) + (y &amp;gt;&amp;gt; 16) + (lsw &amp;gt;&amp;gt; 16);&lt;br /&gt;
  return (msw &amp;lt;&amp;lt; 16) | (lsw &amp;amp; 0xFFFF);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Bitwise rotate a 32-bit number to the left.&lt;br /&gt;
 */&lt;br /&gt;
function bit_rol(num, cnt)&lt;br /&gt;
{&lt;br /&gt;
  return (num &amp;lt;&amp;lt; cnt) | (num &amp;gt;&amp;gt;&amp;gt; (32 - cnt));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: md5-2.2alpha.js&lt;br /&gt;
// STARTFILE: parensplit.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// parenSplit&lt;br /&gt;
&lt;br /&gt;
// String.prototype.parenSplit should do what ECMAscript says&lt;br /&gt;
// String.prototype.split does, interspersing paren matches between&lt;br /&gt;
// the split elements&lt;br /&gt;
&lt;br /&gt;
if (String(&#039;abc&#039;.split(/(b)/))!=&#039;a,b,c&#039;) {&lt;br /&gt;
	// broken String.split, e.g. konq, IE&lt;br /&gt;
	String.prototype.parenSplit=function (re) {&lt;br /&gt;
		re=nonGlobalRegex(re);&lt;br /&gt;
		var s=this;&lt;br /&gt;
		var m=re.exec(s);&lt;br /&gt;
		var ret=[];&lt;br /&gt;
		while (m &amp;amp;&amp;amp; s) {&lt;br /&gt;
			// without the following loop, we have&lt;br /&gt;
			// &#039;ab&#039;.parenSplit(/a|(b)/) != &#039;ab&#039;.split(/a|(b)/)&lt;br /&gt;
			for(var i=0; i&amp;lt;m.length; ++i) {&lt;br /&gt;
				if (typeof m[i]==&#039;undefined&#039;) m[i]=&#039;&#039;;&lt;br /&gt;
			}&lt;br /&gt;
			ret.push(s.substring(0,m.index));&lt;br /&gt;
			ret = ret.concat(m.slice(1));&lt;br /&gt;
			s=s.substring(m.index + m[0].length);&lt;br /&gt;
			m=re.exec(s);&lt;br /&gt;
		}&lt;br /&gt;
		ret.push(s);&lt;br /&gt;
		return ret;&lt;br /&gt;
	};&lt;br /&gt;
} else {&lt;br /&gt;
	String.prototype.parenSplit=function (re) {&lt;br /&gt;
		return this.split(re);&lt;br /&gt;
	};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function nonGlobalRegex(re) {&lt;br /&gt;
	var s=re.toString();&lt;br /&gt;
	flags=&#039;&#039;;&lt;br /&gt;
	for (var j=s.length; s.charAt(j) != &#039;/&#039;; --j) {&lt;br /&gt;
		if (s.charAt(j) != &#039;g&#039;) { flags += s.charAt(j); }&lt;br /&gt;
	}&lt;br /&gt;
	var t=s.substring(1,j);&lt;br /&gt;
	return RegExp(t,flags);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: parensplit.js&lt;br /&gt;
// STARTFILE: tools.js&lt;br /&gt;
// IE madness with encoding&lt;br /&gt;
// ========================&lt;br /&gt;
//&lt;br /&gt;
// suppose throughout that the page is in utf8, like wikipedia&lt;br /&gt;
//&lt;br /&gt;
// if a is an anchor DOM element and a.href should consist of&lt;br /&gt;
//&lt;br /&gt;
// http://host.name.here/wiki/foo?bar=baz&lt;br /&gt;
//&lt;br /&gt;
// then IE gives foo as &amp;quot;latin1-encoded&amp;quot; utf8; we have foo = decode_utf8(decodeURI(foo_ie))&lt;br /&gt;
// but IE gives bar=baz correctly as plain utf8&lt;br /&gt;
//&lt;br /&gt;
// ---------------------------------&lt;br /&gt;
//&lt;br /&gt;
// IE&#039;s xmlhttp doesn&#039;t understand utf8 urls. Have to use encodeURI here.&lt;br /&gt;
//&lt;br /&gt;
// ---------------------------------&lt;br /&gt;
//&lt;br /&gt;
// summat else&lt;br /&gt;
&lt;br /&gt;
// Source: http://aktuell.de.selfhtml.org/artikel/javascript/utf8b64/utf8.htm&lt;br /&gt;
function encode_utf8(rohtext) {&lt;br /&gt;
	// dient der Normalisierung des Zeilenumbruchs&lt;br /&gt;
	rohtext = rohtext.replace(/\r\n/g,&amp;quot;\n&amp;quot;);&lt;br /&gt;
	var utftext = &amp;quot;&amp;quot;;&lt;br /&gt;
	for(var n=0; n&amp;lt;rohtext.length; n++)&lt;br /&gt;
	{&lt;br /&gt;
		// ermitteln des Unicodes des  aktuellen Zeichens&lt;br /&gt;
		var c=rohtext.charCodeAt(n);&lt;br /&gt;
		// alle Zeichen von 0-127 =&amp;gt; 1byte&lt;br /&gt;
		if (c&amp;lt;128)&lt;br /&gt;
			utftext += String.fromCharCode(c);&lt;br /&gt;
		// alle Zeichen von 127 bis 2047 =&amp;gt; 2byte&lt;br /&gt;
		else if((c&amp;gt;127) &amp;amp;&amp;amp; (c&amp;lt;2048)) {&lt;br /&gt;
			utftext += String.fromCharCode((c&amp;gt;&amp;gt;6)|192);&lt;br /&gt;
			utftext += String.fromCharCode((c&amp;amp;63)|128);}&lt;br /&gt;
		// alle Zeichen von 2048 bis 66536 =&amp;gt; 3byte&lt;br /&gt;
		else {&lt;br /&gt;
			utftext += String.fromCharCode((c&amp;gt;&amp;gt;12)|224);&lt;br /&gt;
			utftext += String.fromCharCode(((c&amp;gt;&amp;gt;6)&amp;amp;63)|128);&lt;br /&gt;
			utftext += String.fromCharCode((c&amp;amp;63)|128);}&lt;br /&gt;
	}&lt;br /&gt;
	return utftext;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function decode_utf8(utftext) {&lt;br /&gt;
	var plaintext = &amp;quot;&amp;quot;; var i=0; var c=c1=c2=0;&lt;br /&gt;
	// while-Schleife, weil einige Zeichen uebersprungen werden&lt;br /&gt;
	while(i&amp;lt;utftext.length)&lt;br /&gt;
	{&lt;br /&gt;
		c = utftext.charCodeAt(i);&lt;br /&gt;
		if (c&amp;lt;128) {&lt;br /&gt;
			plaintext += String.fromCharCode(c);&lt;br /&gt;
			i++;}&lt;br /&gt;
		else if((c&amp;gt;191) &amp;amp;&amp;amp; (c&amp;lt;224)) {&lt;br /&gt;
			c2 = utftext.charCodeAt(i+1);&lt;br /&gt;
			plaintext += String.fromCharCode(((c&amp;amp;31)&amp;lt;&amp;lt;6) | (c2&amp;amp;63));&lt;br /&gt;
			i+=2;}&lt;br /&gt;
		else {&lt;br /&gt;
			c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);&lt;br /&gt;
			plaintext += String.fromCharCode(((c&amp;amp;15)&amp;lt;&amp;lt;12) | ((c2&amp;amp;63)&amp;lt;&amp;lt;6) | (c3&amp;amp;63));&lt;br /&gt;
			i+=3;}&lt;br /&gt;
	}&lt;br /&gt;
	return plaintext;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function upcaseFirst(str) {&lt;br /&gt;
	if (typeof str != typeof &#039;&#039; || str==&#039;&#039;) return &#039;&#039;;&lt;br /&gt;
	return str.charAt(0).toUpperCase() + str.substring(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pop.runOnce=function(f, time) {&lt;br /&gt;
	var i=pop.runOnce.timers.length;&lt;br /&gt;
	var ff = function () { clearInterval(pop.runOnce.timers[i]); f() };&lt;br /&gt;
	var timer=setInterval(ff, time);&lt;br /&gt;
	pop.runOnce.timers.push(timer);&lt;br /&gt;
}&lt;br /&gt;
pop.runOnce.timers=[];&lt;br /&gt;
&lt;br /&gt;
function literalizeRegex(str){&lt;br /&gt;
	return str.replace(RegExp(&#039;([-.()\\+?*^${}\\[\\]])&#039;, &#039;g&#039;), &#039;\\$1&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
String.prototype.entify=function() {&lt;br /&gt;
	//var shy=&#039;&amp;amp;shy;&#039;;&lt;br /&gt;
	return this.split(&#039;&amp;amp;&#039;).join(&#039;&amp;amp;amp;&#039;).split(&#039;&amp;lt;&#039;).join(&#039;&amp;amp;lt;&#039;).split(&#039;&amp;gt;&#039;).join(&#039;&amp;amp;gt;&#039;/*+shy*/).split(&#039;&amp;quot;&#039;).join(&#039;&amp;amp;quot;&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: tools.js&lt;br /&gt;
// STARTFILE: dab.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// Dab-fixing code&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function retargetDab(newTarget, oldTarget, friendlyCurrentArticleName) {&lt;br /&gt;
	log(&#039;retargetDab: newTarget=&#039;+newTarget + &#039; oldTarget=&#039; + oldTarget);&lt;br /&gt;
	return changeLinkTargetLink(&lt;br /&gt;
	{newTarget: newTarget,&lt;br /&gt;
			    text: newTarget.split(&#039; &#039;).join(&#039;&amp;amp;nbsp;&#039;),&lt;br /&gt;
			    hint: tprintf(&#039;disambigHint&#039;, [newTarget]),&lt;br /&gt;
			    summary: simplePrintf(&lt;br /&gt;
				    getValueOf(&#039;popupFixDabsSummary&#039;), [friendlyCurrentArticleName, newTarget ]),&lt;br /&gt;
			    clickButton: &#039;wpDiff&#039;, minor: true, oldTarget: oldTarget,&lt;br /&gt;
			    watch: getValueOf(&#039;popupWatchDisambiggedPages&#039;)&lt;br /&gt;
			    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function listLinks(wikitext, oldTarget) {&lt;br /&gt;
	var reg=RegExp(&#039;\\[\\[([^|]*?)(\\||\\]\\])&#039;, &#039;gi&#039;);&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	var splitted=wikitext.parenSplit(reg);&lt;br /&gt;
	// ^[a-z]+ should match interwiki links, hopefully (case-insensitive)&lt;br /&gt;
	// and ^[a-z]* should match those and [[:Category...]] style links too&lt;br /&gt;
	var omitRegex=RegExp(&#039;^[a-z]*:|^[Ss]pecial:|^[Ii]mage|^[Cc]ategory&#039;);&lt;br /&gt;
	var friendlyCurrentArticleName=pg.current.article.split(&#039;_&#039;).join(&#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	for (var i=1; i&amp;lt;splitted.length; i=i+3) {&lt;br /&gt;
		if (typeof splitted[i] == typeof &#039;string&#039; &amp;amp;&amp;amp; splitted[i].length&amp;gt;0 &amp;amp;&amp;amp; !omitRegex.test(splitted[i])) {&lt;br /&gt;
			ret.push( retargetDab(splitted[i], oldTarget, friendlyCurrentArticleName) );&lt;br /&gt;
		} /* if */&lt;br /&gt;
	} /* for loop */&lt;br /&gt;
&lt;br /&gt;
	ret = rmDupesFromSortedList(ret.sort());&lt;br /&gt;
&lt;br /&gt;
	var wikTarget=&#039;wiktionary:&#039; + friendlyCurrentArticleName.replace( RegExp(&#039;^(.+)\\s+[(][^)]+[)]\\s*$&#039;), &#039;$1&#039; );&lt;br /&gt;
	ret.push( retargetDab(wikTarget, oldTarget, friendlyCurrentArticleName) );&lt;br /&gt;
&lt;br /&gt;
	ret.push(changeLinkTargetLink(&lt;br /&gt;
	{ newTarget: null,&lt;br /&gt;
			     text: popupString(&#039;remove this link&#039;).split(&#039; &#039;).join(&#039;&amp;amp;nbsp;&#039;),&lt;br /&gt;
			     hint: popupString(&amp;quot;remove all links to this disambig page from this article&amp;quot;),&lt;br /&gt;
			     clickButton: &amp;quot;wpDiff&amp;quot;, oldTarget: oldTarget,&lt;br /&gt;
			     summary: simplePrintf(getValueOf(&#039;popupRmDabLinkSummary&#039;), [friendlyCurrentArticleName]),&lt;br /&gt;
			     watch: getValueOf(&#039;popupWatchDisambiggedPages&#039;)}));&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function rmDupesFromSortedList(list) {&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	for (var i=0; i&amp;lt;list.length; ++i) {&lt;br /&gt;
		if (ret.length===0 || list[i]!=ret[ret.length-1]) { ret.push(list[i]); }&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeFixDab(data, oldTarget) {&lt;br /&gt;
	var list=listLinks(data, oldTarget);&lt;br /&gt;
	if (list.length===0) { log(&#039;listLinks returned empty list&#039;); return null; }&lt;br /&gt;
	var html=&#039;&amp;lt;hr&amp;gt;&#039; + popupString(&#039;Click to disambiguate this link to:&#039;) + &#039;&amp;lt;br&amp;gt;&#039;;&lt;br /&gt;
	html+=list[0];&lt;br /&gt;
	for (var i=1; i&amp;lt;list.length; ++i) { html += &#039;, &#039;+list[i]; }&lt;br /&gt;
	return html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function makeFixDabs(wikiText, oldTarget)&lt;br /&gt;
{&lt;br /&gt;
	if (getValueOf(&#039;popupFixDabs&#039;) &amp;amp;&amp;amp; isDisambig(wikiText) &amp;amp;&amp;amp;&lt;br /&gt;
	    location.href.indexOf(pg.ns.special+&#039;:&#039;) == -1 &amp;amp;&amp;amp;&lt;br /&gt;
	    pg.current.article.talkPage() ) {&lt;br /&gt;
		setPopupHTML(makeFixDab(wikiText, oldTarget), &#039;popupFixDab&#039;, pg.idNumber);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: dab.js&lt;br /&gt;
// STARTFILE: htmloutput.js&lt;br /&gt;
// this has to use a timer loop as we don&#039;t know if the DOM element exists when we want to set the text&lt;br /&gt;
function setPopupHTML (str, elementId, popupId, onSuccess) {&lt;br /&gt;
	//log(&#039;setPopupHTML, str=&#039;+str+&#039;, \n elementId=&#039;+elementId+&#039;, popupId=&#039;+popupId);&lt;br /&gt;
	if (typeof popupId === &#039;undefined&#039;) { popupId = pg.idNumber; }&lt;br /&gt;
	var timer;&lt;br /&gt;
&lt;br /&gt;
	if (typeof pg.timer.popupHTML[elementId] == &#039;undefined&#039;) { timer=null; }&lt;br /&gt;
	else { timer=pg.timer.popupHTML[elementId]; }&lt;br /&gt;
&lt;br /&gt;
	var popupElement=document.getElementById(elementId+popupId);&lt;br /&gt;
	if (popupElement) {&lt;br /&gt;
		if(timer) { clearInterval(timer); }&lt;br /&gt;
		pg.timer.popupHTML[elementId]=null;&lt;br /&gt;
		popupElement.innerHTML=str;&lt;br /&gt;
		if (onSuccess) { onSuccess(); }&lt;br /&gt;
		return true;&lt;br /&gt;
	} else {&lt;br /&gt;
		// call this function again in a little while...&lt;br /&gt;
		var loopFunction=function() { setPopupHTML(str,elementId,popupId,onSuccess);};&lt;br /&gt;
		pg.misc.popupHTMLLoopFunctions[elementId] = loopFunction;&lt;br /&gt;
		if (!timer) {&lt;br /&gt;
			var doThis = &#039;pg.misc.popupHTMLLoopFunctions[&amp;quot;&#039;+elementId+&#039;&amp;quot;]()&#039;;&lt;br /&gt;
			pg.timer.popupHTML[elementId] = setInterval(doThis, 600);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setImageStatus(str, id) {return; } // setPopupHTML(str, &#039;popupImageStatus&#039;, id);}&lt;br /&gt;
function setPopupTrailer(str,id) {return setPopupHTML(str, &#039;popupData&#039;, id);}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function fillEmptySpans(args) { return fillEmptySpans2(args); }&lt;br /&gt;
&lt;br /&gt;
function fillEmptySpans2(args) { // if redir is present and true then redirTarget is mandatory&lt;br /&gt;
	var redir=true;&lt;br /&gt;
	if (typeof args != &#039;object&#039; || typeof args.redir == &#039;undefined&#039; || !args.redir) { redir=false; }&lt;br /&gt;
	var a=pg.current.link;&lt;br /&gt;
	//log(&#039;fillEmptySpans: a=&#039;+a+&#039;, pg.current.link=&#039;+pg.current.link);&lt;br /&gt;
	if (!a) { log(&#039;*****\nfillEmptySpans: a is no good\n*****&#039;); return; }&lt;br /&gt;
&lt;br /&gt;
	var article, hint, oldid;&lt;br /&gt;
	if (redir &amp;amp;&amp;amp; typeof args.redirTarget == typeof {}) {&lt;br /&gt;
		article=args.redirTarget; hint=null;&lt;br /&gt;
	} else {&lt;br /&gt;
		article=(new Title()).fromAnchor(a);&lt;br /&gt;
		hint=a.originalTitle || article.hintValue();&lt;br /&gt;
		oldid=(getValueOf(&#039;popupHistoricalLinks&#039;)) ? oldidFromAnchor(a) : null;&lt;br /&gt;
	}&lt;br /&gt;
	//limitAlert(fillEmptySpans2, 4, &#039;fillEmptySpans2\n&#039; + article+&#039;\n&#039;+(typeof article));&lt;br /&gt;
	var x={ article:article,&lt;br /&gt;
		hint: hint, oldid: oldid };&lt;br /&gt;
&lt;br /&gt;
	//log(&#039;fillEmptySpans: redir=&#039;+redir+&#039;, article=&#039;+article);&lt;br /&gt;
&lt;br /&gt;
	var structure=pg.structures[getValueOf(&#039;popupStructure&#039;)];&lt;br /&gt;
	if (typeof structure != &#039;object&#039;) {&lt;br /&gt;
		setPopupHTML(&#039;popupError&#039;, &#039;Unknown structure (this should never happen): &#039;+ popupStructure);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var spans=flatten(pg.misc.layout);&lt;br /&gt;
	var numspans = spans.length;&lt;br /&gt;
	var redirs=pg.misc.redirSpans;&lt;br /&gt;
	//log(&#039;fillEmptySpans: spans.length=&#039;+spans.length);&lt;br /&gt;
&lt;br /&gt;
	for (var i=0; i&amp;lt;numspans; ++i) {&lt;br /&gt;
		var f=findThis(redirs, spans[i]);&lt;br /&gt;
		//log(&#039;redir=&#039;+redir+&#039;, f=&#039;+f+&#039;, spans[i]=&#039;+spans[i]);&lt;br /&gt;
		if ( (f!==null &amp;amp;&amp;amp; !redir) || (f===null &amp;amp;&amp;amp; redir) ) {&lt;br /&gt;
			//log(&#039;skipping this set of the loop&#039;);&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		var structurefn=structure[spans[i]];&lt;br /&gt;
		switch (typeof structurefn) {&lt;br /&gt;
		case &#039;function&#039;:&lt;br /&gt;
			//log(&#039;running &#039;+spans[i]+&#039;({article:&#039;+x.article+&#039;, hint:&#039;+x.hint+&#039;, oldid: &#039;+x.oldid+&#039;})&#039;);&lt;br /&gt;
			setPopupHTML(structurefn(x), spans[i]);&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;string&#039;:&lt;br /&gt;
			setPopupHTML(structurefn, spans[i]);&lt;br /&gt;
			break;&lt;br /&gt;
		default:&lt;br /&gt;
			errlog(&#039;unknown thing with label &#039;+spans[i]);&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// flatten an array&lt;br /&gt;
function flatten(list, start) {&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	if (typeof start == &#039;undefined&#039;) { start=0; }&lt;br /&gt;
	for (var i=start; i&amp;lt;list.length; ++i) {&lt;br /&gt;
		if (typeof list[i] == typeof []) {&lt;br /&gt;
			return ret.concat(flatten(list[i])).concat(flatten(list, i+1));&lt;br /&gt;
		}&lt;br /&gt;
		else { ret.push(list[i]); }&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Generate html for whole popup&lt;br /&gt;
function popupHTML (a) {&lt;br /&gt;
	getValueOf(&#039;popupStructure&#039;);&lt;br /&gt;
	var structure=pg.structures[pg.option.popupStructure];&lt;br /&gt;
	if (typeof structure != &#039;object&#039;) {&lt;br /&gt;
		return &#039;Unknown structure: &#039;+popupStructure;&lt;br /&gt;
	}&lt;br /&gt;
	if (typeof structure.popupLayout != &#039;function&#039;) { return &#039;Bad layout&#039;; }&lt;br /&gt;
	pg.misc.layout=structure.popupLayout();&lt;br /&gt;
	if (typeof structure.popupRedirSpans == &#039;function&#039;) { pg.misc.redirSpans=structure.popupRedirSpans(); }&lt;br /&gt;
	else { pg.misc.redirSpans=[]; }&lt;br /&gt;
	return makeEmptySpans(pg.misc.layout);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeEmptySpans (list) {&lt;br /&gt;
	var ret=&#039;&#039;;&lt;br /&gt;
	for (var i=0; i&amp;lt;list.length; ++i) {&lt;br /&gt;
		if (typeof list[i] == typeof &#039;&#039;) {&lt;br /&gt;
		    ret += emptySpanHTML(list[i], pg.idNumber, &#039;div&#039;);&lt;br /&gt;
		} else if (typeof list[i] == typeof [] &amp;amp;&amp;amp; list[i].length &amp;gt; 0 ) {&lt;br /&gt;
			ret = ret.parenSplit(RegExp(&#039;(&amp;lt;/[^&amp;gt;]*?&amp;gt;$)&#039;)).join(makeEmptySpans(list[i]));&lt;br /&gt;
		} else if (typeof list[i] == typeof {} &amp;amp;&amp;amp; list[i].nodeType ) {&lt;br /&gt;
			ret += emptySpanHTML(list[i].name, pg.idNumber, list[i].nodeType);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function popupRedlinkHTML() {&lt;br /&gt;
	var friendlyCurrentArticleName=pg.current.article.split(&#039;_&#039;).join(&#039; &#039;);&lt;br /&gt;
&lt;br /&gt;
	return changeLinkTargetLink(&lt;br /&gt;
	{ newTarget: null, text: popupString(&#039;remove this link&#039;).split(&#039; &#039;).join(&#039;&amp;amp;nbsp;&#039;),&lt;br /&gt;
			     hint: popupString(&amp;quot;remove all links to this page from this article&amp;quot;),&lt;br /&gt;
			     clickButton: &amp;quot;wpDiff&amp;quot;,&lt;br /&gt;
			     //oldTarget: oldTarget,&lt;br /&gt;
			     summary: simplePrintf(getValueOf(&#039;popupRedlinkSummary&#039;), [friendlyCurrentArticleName])});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function emptySpanHTML(name, id, tag, classname) {&lt;br /&gt;
	tag = tag || &#039;span&#039;;&lt;br /&gt;
	classname = classname || name;&lt;br /&gt;
	return simplePrintf(&#039;&amp;lt;%s id=&amp;quot;%s&amp;quot; class=&amp;quot;%s&amp;quot;&amp;gt;&amp;lt;/%s&amp;gt;&#039;, [tag, name + id, classname, tag]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// generate html for popup image&lt;br /&gt;
// &amp;lt;a id=&amp;quot;popupImageLinkn&amp;quot;&amp;gt;&amp;lt;img id=&amp;quot;popupImagen&amp;quot;&amp;gt;&lt;br /&gt;
// where n=pg.idNumber&lt;br /&gt;
function imageHTML(article) {&lt;br /&gt;
	return simplePrintf(&#039;&amp;lt;a id=&amp;quot;popupImageLink%s&amp;quot;&amp;gt;&amp;lt;img align=&amp;quot;right&amp;quot; valign=&amp;quot;top&amp;quot; id=&amp;quot;popupImg%s&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;/a&amp;gt;&#039;,&lt;br /&gt;
			    [ pg.idNumber, pg.idNumber ]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: htmloutput.js&lt;br /&gt;
// STARTFILE: mouseout.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// fuzzy checks&lt;br /&gt;
&lt;br /&gt;
function fuzzyCursorOffMenus(x,y, fuzz, parent) {&lt;br /&gt;
	if (!parent) parent=over;&lt;br /&gt;
	if (!parent) return null;&lt;br /&gt;
	var uls=parent.getElementsByTagName(&#039;ul&#039;);&lt;br /&gt;
	for (var i=0; i&amp;lt;uls.length; ++i) {&lt;br /&gt;
		if (uls[i].className==&#039;popup_menu&#039;) {&lt;br /&gt;
			if (uls[i].offsetWidth &amp;gt; 0) return false;&lt;br /&gt;
		} // else {document.title+=&#039;.&#039;;}&lt;br /&gt;
	}&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function checkPopupPosition () { // stop the popup running off the right of the screen&lt;br /&gt;
	pg.current.link.navpopup.limitHorizontalPosition();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function findPosX(obj) {&lt;br /&gt;
	var curleft = 0;&lt;br /&gt;
	if (obj.offsetParent)&lt;br /&gt;
	{&lt;br /&gt;
		while (obj.offsetParent)&lt;br /&gt;
		{&lt;br /&gt;
			curleft += obj.offsetLeft&lt;br /&gt;
				obj = obj.offsetParent;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else if (obj.x)&lt;br /&gt;
		curleft += obj.x;&lt;br /&gt;
	return curleft;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function findPosY(obj) {&lt;br /&gt;
	var curtop = 0;&lt;br /&gt;
	if (obj.offsetParent)&lt;br /&gt;
	{&lt;br /&gt;
		while (obj.offsetParent)&lt;br /&gt;
		{&lt;br /&gt;
			curtop += obj.offsetTop&lt;br /&gt;
				obj = obj.offsetParent;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else if (obj.y)&lt;br /&gt;
		curtop += obj.y;&lt;br /&gt;
	return curtop;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function mouseOutWikiLink () {&lt;br /&gt;
	log (&#039;mouseOutWikiLink&#039;);&lt;br /&gt;
	var a=this;&lt;br /&gt;
	if (a.navpopup==null) return;&lt;br /&gt;
	if ( ! a.navpopup.isVisible() ) {&lt;br /&gt;
		a.navpopup.banish();&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	Navpopup.tracker.addHook(posCheckerHook(a.navpopup));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function posCheckerHook(navpop) {&lt;br /&gt;
	return function() {&lt;br /&gt;
		//~ if the navpopup isn&#039;t visible, or if it is and should stop&lt;br /&gt;
		//~ being...&lt;br /&gt;
		if (&lt;br /&gt;
			!navpop.isVisible() ||&lt;br /&gt;
			(!navpop.isWithin(Navpopup.tracker.x, Navpopup.tracker.y)&lt;br /&gt;
			 &amp;amp;&amp;amp; fuzzyCursorOffMenus(Navpopup.tracker.x, Navpopup.tracker.y, navpop.fuzz, navpop.mainDiv))&lt;br /&gt;
			) {&lt;br /&gt;
			//~ stop it being visible or appearing from a @tt{showSoon} call&lt;br /&gt;
			log(&#039;calling banish() from tracker hook function&#039;);&lt;br /&gt;
			navpop.banish();&lt;br /&gt;
			return true; // remove this hook&lt;br /&gt;
		}&lt;br /&gt;
		// return true; // remove this immediately&lt;br /&gt;
	};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function runStopPopupTimer(navpop) {&lt;br /&gt;
	// at this point, we should have left the link but remain within the popup&lt;br /&gt;
	// so we call this function again until we leave the popup.&lt;br /&gt;
	if (!navpop.stopPopupTimer) {&lt;br /&gt;
		navpop.stopPopupTimer=setInterval(posCheckerHook(navpop), 500);&lt;br /&gt;
		navpop.addHook(function(){clearInterval(navpop.stopPopupTimer);}, &#039;hide&#039;, &#039;before&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: mouseout.js&lt;br /&gt;
// STARTFILE: previewmaker.js&lt;br /&gt;
/**&lt;br /&gt;
   @fileoverview&lt;br /&gt;
   Defines the {@link Previewmaker} object, which generates short previews from wiki markup.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates a new Previewmaker&lt;br /&gt;
   @constructor&lt;br /&gt;
   @class The Previewmaker class. Use an instance of this to generate short previews from Wikitext.&lt;br /&gt;
   @param {String} wikiText The Wikitext source of the page we wish to preview.&lt;br /&gt;
*/&lt;br /&gt;
function Previewmaker(wikiText) {&lt;br /&gt;
	/** The wikitext which is manipulated to generate the preview. */&lt;br /&gt;
	this.data=wikiText;&lt;br /&gt;
}&lt;br /&gt;
/** Remove HTML comments&lt;br /&gt;
    @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killComments = function () {&lt;br /&gt;
	// this also kills trailing spaces and one trailing newline, eg [[diamyo]]&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;&amp;lt;!--(\\n|.)*?--&amp;gt; *\\n?&#039;, &#039;g&#039;), &#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killDivs=function () {&lt;br /&gt;
	// say goodbye, divs (can be nested, so use * not *?)&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;&amp;lt; *div[^&amp;gt;]* *&amp;gt;[\\s\\S]*?&amp;lt; */ *div *&amp;gt;&#039;,&lt;br /&gt;
					   &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killGalleries=function () {&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;&amp;lt; *gallery[^&amp;gt;]* *&amp;gt;[\\s\\S]*?&amp;lt; */ *gallery *&amp;gt;&#039;,&lt;br /&gt;
					   &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killBoxTemplates=function () {&lt;br /&gt;
	// taxobox hack... in fact, there&#039;s a saudiprincebox_begin, so let&#039;s be more general&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;[{][{][^}\\s|]*box[ _](begin|start)&#039; +&lt;br /&gt;
					   &#039;[\\s\\S]*?[^{\\s|]*box[ _](end|finish) *[}][}]\\s&#039;, &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// infoboxes etc&lt;br /&gt;
	// this should cope with templates in infoboxes, but only nested once&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;[{][{][^}|]*(info|element)box[ _]&#039; +&lt;br /&gt;
					   &#039;\([^{]\|[\\s]\|[{][{][\\s\\S]*?[}][}]\)*?[}][}]\\s*&#039;,&lt;br /&gt;
					   &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// also, have float_begin, ... float_end&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;[{][{][^}\\s|]*float[ _]begin&#039; +&lt;br /&gt;
					   &#039;[\\s\\S]*?[^{\\s|]*float[ _]end.*?[}][}]&#039;,&lt;br /&gt;
					   &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// from [[User:Zyxw/popups.js]]: kill frames too&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;[{][{][^}\\s|]*[_ ]frame&#039; +&lt;br /&gt;
					   &#039;[\\s\\S]*?[^{\\s|]*[_ ]?end[_ ]+frame[}][}]&#039;, &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killTemplates = function () {&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;[{][{]([{][{][^}]*[}][}]|[^{}])*[}][}]&#039;, &#039;g&#039;), &#039; &#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killTables=function () {&lt;br /&gt;
	// tables are bad, too&lt;br /&gt;
	this.data=this.data.replace&lt;br /&gt;
	(RegExp(&#039;[{]\\|([{][|]([^\\|]|\\|[^}]|[|][}][}])*[|][}]|[^\\|]|\\|[^}]|\\|[}][}])*\\|[}]&#039;, &#039;g&#039;)&lt;br /&gt;
	 , &#039;&#039;);&lt;br /&gt;
	// remove lines starting with a pipe&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;^[|].*$&#039;, &#039;mg&#039;), &#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killImages=function () {&lt;br /&gt;
	// images are a nono&lt;br /&gt;
	// who says regexes aren&#039;t fun?&lt;br /&gt;
	// i think we should match:&lt;br /&gt;
	// [[image: ...... ]] where ....... consists of repetitions of any of:&lt;br /&gt;
	// 1. not [ or ]&lt;br /&gt;
	// 2. [[ (not ])* ]]&lt;br /&gt;
	// 3. [ (not ])* ]&lt;br /&gt;
	var imagedetector =&lt;br /&gt;
	&#039;[[][[]\\s*(&#039;+&lt;br /&gt;
	pg.ns.image + &#039;|&#039; + pg.ns.category+&lt;br /&gt;
	&#039;)\\s*:([^\\[\\]]|\\[\\[[^\\]]*\\]\\]|\\[[^\\]]*\\])*\\]\\]\\s*&#039;;&lt;br /&gt;
	var crudeImageRegex = RegExp(imagedetector, &#039;gi&#039;);&lt;br /&gt;
	this.data=this.data.replace(crudeImageRegex, &#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killHTML=function () {&lt;br /&gt;
	// kill &amp;lt;ref&amp;gt;...&amp;lt;/ref&amp;gt;&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;&amp;lt;ref&amp;gt;[\\s\\S]*?&amp;lt;/ref&amp;gt;&#039;, &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// kill html tables // this doesn&#039;t cope with embedded tables&lt;br /&gt;
	// may this is good enough?&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;&amp;lt;table.*?&amp;gt;[\\s\\S]*?&amp;lt;/\\s*table\\s*&amp;gt;\\n+&#039;, &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// let&#039;s also delete entire lines starting with &amp;lt;. it&#039;s worth a try.&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;(^|\\n) *&amp;lt;.*&#039;, &#039;g&#039;), &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// and those pesky html tags, but not &amp;lt;nowiki&amp;gt;&lt;br /&gt;
	var splitted=this.data.parenSplit(/(&amp;lt;.*?&amp;gt;)/);&lt;br /&gt;
	var len=splitted.length;&lt;br /&gt;
	for (var i=1; i&amp;lt;len; i=i+2) {&lt;br /&gt;
		switch (splitted[i]) {&lt;br /&gt;
		case &#039;&amp;lt;nowiki&amp;gt;&#039;:&lt;br /&gt;
		case &#039;&amp;lt;/nowiki&amp;gt;&#039;:&lt;br /&gt;
			break;&lt;br /&gt;
		default:&lt;br /&gt;
			splitted[i]=&#039;&#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	this.data=splitted.join(&#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killChunks=function() { // heuristics alert&lt;br /&gt;
	// chunks of italic text? you crazy, man?&lt;br /&gt;
	var italicChunkRegex=new RegExp&lt;br /&gt;
	(&amp;quot;((^|\\n)\\s*:*\\s*&#039;&#039;[^&#039;]([^&#039;]|&#039;&#039;&#039;|&#039;[^&#039;]){20}(.|\\n[^\\n])*&#039;&#039;[.!?\\s]*\\n)*&amp;quot;, &#039;g&#039;);&lt;br /&gt;
	this.data=this.data.replace(italicChunkRegex, &#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.mopup=function () {&lt;br /&gt;
	// we simply *can&#039;t* be doing with horizontal rules right now&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;^-{4,}&#039;,&#039;mg&#039;),&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// no indented lines&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;(^|\\n) *:[^\\n]*&#039;,&#039;g&#039;), &#039;\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// replace __TOC__, __NOTOC__ and whatever else there is&lt;br /&gt;
	// this&#039;ll probably do&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;^__[A-Z_]*__ *$&#039;, &#039;gmi&#039;),&#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.firstBit=function () {&lt;br /&gt;
	// dont&#039;t be givin&#039; me no subsequent paragraphs, you hear me?&lt;br /&gt;
	/// first we &amp;quot;normalize&amp;quot; section headings, removing whitespace after, adding before&lt;br /&gt;
&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;\\s*(==+[^=]*==+)\\s*&#039;, &#039;g&#039;), &#039;\n\n$1 &#039;);&lt;br /&gt;
&lt;br /&gt;
	/// then we want to get rid of paragraph breaks whose text ends badly&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;([:;]) *\\n{2,}&#039;, &#039;g&#039;), &#039;$1\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;^[\\s\\n]*&#039;), &#039;&#039;);&lt;br /&gt;
	stuff=(RegExp(&#039;^([^\\n]|\\n[^\\n\\s])*&#039;)).exec(this.data);&lt;br /&gt;
	var d;&lt;br /&gt;
	if (stuff) d = stuff[0];&lt;br /&gt;
	if (!getValueOf(&#039;popupPreviewFirstParOnly&#039;)) d = this.data;&lt;br /&gt;
&lt;br /&gt;
	/// now put \n\n after sections so that bullets and numbered lists work&lt;br /&gt;
	d=d.replace(RegExp(&#039;(==+[^=]*==+)\\s*&#039;, &#039;g&#039;), &#039;$1\n\n&#039;);&lt;br /&gt;
&lt;br /&gt;
	// superfluous sentences are RIGHT OUT.&lt;br /&gt;
	// note: exactly 1 set of parens here needed to make the slice work&lt;br /&gt;
	d = d.parenSplit(RegExp(&#039;([!?.]+[&amp;quot;&#039;+&amp;quot;&#039;&amp;quot;+&#039;]*\\s)&#039;,&#039;g&#039;));&lt;br /&gt;
	// leading space is bad, mmkay?&lt;br /&gt;
	d[0]=d[0].replace(RegExp(&#039;^\\s*&#039;), &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	var notSentenceEnds=RegExp(&#039;([^.][a-z][.][a-z]|etc|sic|Dr|Mr|Mrs|Ms|St|\\[[^\\]]*|\\s[A-Zvclm])$&#039;, &#039;i&#039;);&lt;br /&gt;
&lt;br /&gt;
	d = this.fixSentenceEnds(d, notSentenceEnds);&lt;br /&gt;
&lt;br /&gt;
	var maxChars=getValueOf(&#039;popupMaxPreviewCharacters&#039;);&lt;br /&gt;
	var n=getValueOf(&#039;popupMaxPreviewSentences&#039;);&lt;br /&gt;
	var dd;&lt;br /&gt;
&lt;br /&gt;
	do {dd=this.firstSentences(d,n); --n; }&lt;br /&gt;
	while ( dd.length &amp;gt; maxChars &amp;amp;&amp;amp; n &amp;gt; 0 );&lt;br /&gt;
&lt;br /&gt;
	this.data = dd;&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.fixSentenceEnds=function(strs, reg) {&lt;br /&gt;
	// take an array of strings, strs&lt;br /&gt;
	// join strs[i] to strs[i+1] &amp;amp; strs[i+2] if strs[i] matches regex reg&lt;br /&gt;
&lt;br /&gt;
	for (var i=0; i&amp;lt;strs.length-2; ++i) {&lt;br /&gt;
		if (reg.test(strs[i])) {&lt;br /&gt;
			a=[];&lt;br /&gt;
			for (var j=0; j&amp;lt;strs.length; ++j) {&lt;br /&gt;
				if (j&amp;lt;i)   a[j]=strs[j];&lt;br /&gt;
				if (j==i)  a[i]=strs[i]+strs[i+1]+strs[i+2];&lt;br /&gt;
				if (j&amp;gt;i+2) a[j-2]=strs[j];&lt;br /&gt;
			}&lt;br /&gt;
			return this.fixSentenceEnds(a,reg);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return strs;&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.firstSentences=function(strs, howmany) {&lt;br /&gt;
	var t=strs.slice(0, 2*howmany);&lt;br /&gt;
	return t.join(&#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   Runs the various methods to generate the preview.&lt;br /&gt;
   The preview is stored in the &amp;lt;code&amp;gt;html&amp;lt;/html&amp;gt; field.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.makePreview=function() {&lt;br /&gt;
	if (!isInNamespace(pg.current.article, &#039;Template&#039;)) {&lt;br /&gt;
		this.killComments();&lt;br /&gt;
		this.killDivs();&lt;br /&gt;
		this.killGalleries();&lt;br /&gt;
		this.killBoxTemplates();&lt;br /&gt;
&lt;br /&gt;
		if (getValueOf(&#039;popupPreviewKillTemplates&#039;)) {&lt;br /&gt;
			this.killTemplates();&lt;br /&gt;
		} else {&lt;br /&gt;
			this.killMultilineTemplates();&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.killTables();&lt;br /&gt;
		this.killImages();&lt;br /&gt;
		this.killHTML();&lt;br /&gt;
		this.killChunks();&lt;br /&gt;
		this.mopup();&lt;br /&gt;
&lt;br /&gt;
		this.firstBit();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	this.html=wiki2html(this.data); // needs livepreview&lt;br /&gt;
	this.fixHTML();&lt;br /&gt;
	this.stripLongTemplates();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** Test function for debugging preview problems one step at a time.&lt;br /&gt;
 */&lt;br /&gt;
function previewSteps(txt) {&lt;br /&gt;
	try {&lt;br /&gt;
		txt=txt || document.editform.wpTextbox1.value;&lt;br /&gt;
	} catch (err) {&lt;br /&gt;
		if (pg.cache.pages.length &amp;gt; 0) {&lt;br /&gt;
			txt=pg.cache.pages[pg.cache.pages.length-1].data;&lt;br /&gt;
		} else {&lt;br /&gt;
			alert(&#039;provide text or use an edit page&#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	var p=new Previewmaker(txt);&lt;br /&gt;
	if (!isInNamespace(pg.current.article, &#039;Template&#039;)) {&lt;br /&gt;
		p.killComments(); if (!confirm(&#039;done killComments(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		p.killDivs(); if (!confirm(&#039;done killDivs(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		p.killGalleries(); if (!confirm(&#039;done killGalleries(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		p.killBoxTemplates(); if (!confirm(&#039;done killBoxTemplates(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
&lt;br /&gt;
		if (getValueOf(&#039;popupPreviewKillTemplates&#039;)) {&lt;br /&gt;
			p.killTemplates(); if (!confirm(&#039;done killTemplates(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		} else {&lt;br /&gt;
			p.killMultilineTemplates(); if (!confirm(&#039;done killMultilineTemplates(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		p.killTables(); if (!confirm(&#039;done killTables(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		p.killImages(); if (!confirm(&#039;done killImages(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		p.killHTML(); if (!confirm(&#039;done killHTML(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		p.killChunks(); if (!confirm(&#039;done killChunks(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
		p.mopup(); if (!confirm(&#039;done mopup(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
&lt;br /&gt;
		p.firstBit(); if (!confirm(&#039;done firstBit(). Continue?\n---\n&#039; + p.data)) { return; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	p.html=wiki2html(p.data); // needs livepreview&lt;br /&gt;
	p.fixHTML(); if (!confirm(&#039;done fixHTML(). Continue?\n---\n&#039; + p.html)) { return; }&lt;br /&gt;
	p.stripLongTemplates(); if (!confirm(&#039;done stripLongTemplates(). Continue?\n---\n&#039; + p.html)) { return; }&lt;br /&gt;
	alert(&#039;finished preview - end result follows.\n---\n&#039; + p.html);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Works around a quoting bug in livepreview.&lt;br /&gt;
   &amp;lt;code&amp;gt;wiki2html(&#039;[[Foo\&#039;s &amp;quot;bar&amp;quot;]]&#039;)&amp;lt;/code&amp;gt; gives @literal{&amp;lt;a href=&#039;Foo&#039;s &amp;quot;bar&amp;quot;&#039;&amp;gt;}&lt;br /&gt;
   which doesn&#039;t do very well. We change this into @literal{&amp;lt;a href=&amp;quot;Foo&#039;s %22bar%22&amp;quot;&amp;gt;}&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.fixHTML=function() {&lt;br /&gt;
	if(!this.html) return;&lt;br /&gt;
	var splitted=this.html.parenSplit(/href=&#039;([^&amp;gt;]*)&#039;/g);&lt;br /&gt;
	var ret=&#039;&#039;;&lt;br /&gt;
	for (var i=0; i&amp;lt;splitted.length; ++i) {&lt;br /&gt;
		if(i%2==0) { ret += splitted[i]; continue; }&lt;br /&gt;
		if(i%2==1) { ret += &#039;href=&amp;quot;&#039; + splitted[i].split(&#039;&amp;quot;&#039;).join(&#039;%22&#039;) + &#039;&amp;quot;&#039;; }&lt;br /&gt;
	}&lt;br /&gt;
	this.html=ret;&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   Generates the preview and displays it in the current popup.&lt;br /&gt;
&lt;br /&gt;
   Does nothing if the generated preview is invalid or consists of whitespace only.&lt;br /&gt;
   Also activates wikilinks in the preview for subpopups if the popupSubpopups option is true.&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.showPreview=function () {&lt;br /&gt;
	this.makePreview();&lt;br /&gt;
	if (typeof this.html != typeof &#039;&#039;) return;&lt;br /&gt;
	if (RegExp(&#039;^\\s*$&#039;).test(this.html)) return;&lt;br /&gt;
	//if (getValueOf(&#039;popupNavLinks&#039;) || getValueOf(&#039;popupSummaryData&#039;))&lt;br /&gt;
	var popTips=function() { setupTooltips(document.getElementById(&#039;popupPreview&#039; + pg.idNumber)); };&lt;br /&gt;
	setPopupHTML(&#039;&amp;lt;hr&amp;gt;&#039;+this.html, &#039;popupPreview&#039;, pg.idNumber,&lt;br /&gt;
		     getValueOf(&#039;popupSubpopups&#039;) ? function() { pop.runOnce( popTips, 250 ); } : null );&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.stripLongTemplates=function() {&lt;br /&gt;
	// operates on the HTML!&lt;br /&gt;
	this.html=this.html.replace(RegExp(&#039;^.{0,1000}[{][{][^}]*?(&amp;lt;(p|br)( /)?&amp;gt;\\s*){2,}([^{}]*?[}][}])?&#039;, &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
	this.html=this.html.split(&#039;\n&#039;).join(&#039; &#039;); // workaround for &amp;lt;pre&amp;gt; templates&lt;br /&gt;
	this.html=this.html.replace(RegExp(&#039;[{][{][^}]*&amp;lt;pre&amp;gt;[^}]*[}][}]&#039;,&#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
	//this.html=this.html.replace(RegExp(&#039;[{][{]([^}]*|\\s){0,50}?&amp;lt;pre&amp;gt;[^{}]*?[}][}]&#039;, &#039;gi&#039;), &#039;&#039;);&lt;br /&gt;
	//window.h=this.html;&lt;br /&gt;
	//alert(this.html);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Previewmaker.prototype.killMultilineTemplates=function() {&lt;br /&gt;
	// allow nesting 1 deep&lt;br /&gt;
	this.data=this.data.replace(RegExp(&#039;\\s*[{][{][^{}]*\\n([^{}]*([{][{][^{}]*[}][}])?)*[}][}]&#039;, &#039;g&#039;), &#039; &#039;);&lt;br /&gt;
	//this.data=this.data.replace(RegExp(&#039;[{][{]([{][{][^}]*[}][}]|[^{}])*\\n([{][{][^}]*[}][}]|[^{}])*[}][}]&#039;, &#039;g&#039;), &#039; &#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: previewmaker.js&lt;br /&gt;
// STARTFILE: debug.js&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Debugging functions&lt;br /&gt;
////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
function time() { var d=new Date();  return d.getHours() + &#039;:&#039; + d.getMinutes() + &#039;:&#039; + d.getSeconds() +  &#039;.&#039; + (d.getTime() % 1000); }&lt;br /&gt;
var gMsg=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
function limitAlert(fn,max,s) {&lt;br /&gt;
	if (!fn.alertCount) { fn.alertCount=0; }&lt;br /&gt;
	if (true &amp;amp;&amp;amp; fn.alertCount &amp;lt; max) {alert(s); fn.alertCount++;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setupDebugging() {&lt;br /&gt;
	// debugging - change DEBUG to NONE to switch off&lt;br /&gt;
	if (window.popupDebug) { // popupDebug is set from .version&lt;br /&gt;
		window.log=function(x) { //if(gMsg!=&#039;&#039;)gMsg += &#039;\n&#039;; gMsg+=time() + &#039; &#039; + x; };&lt;br /&gt;
			if (pg.debugLevel != log.None) { window.logger.debug(x); }&lt;br /&gt;
		}&lt;br /&gt;
		window.errlog=function(x) {&lt;br /&gt;
			if (pg.debugLevel != log.None) { window.logger.error(x); }&lt;br /&gt;
		}&lt;br /&gt;
		pg.debugLevel=Log.DEBUG;&lt;br /&gt;
		window.logger = new Log(pg.debugLevel, Log.popupLogger);&lt;br /&gt;
		log(&#039;Initializing logger&#039;);&lt;br /&gt;
	} else {&lt;br /&gt;
		window.log = function(x) {};&lt;br /&gt;
		window.errlog = function(x) {};&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: debug.js&lt;br /&gt;
// STARTFILE: images.js&lt;br /&gt;
// How the URLs for images in the popup come about&lt;br /&gt;
&lt;br /&gt;
//   loadPreview&lt;br /&gt;
//          |&lt;br /&gt;
//       getWiki&lt;br /&gt;
//          |&amp;lt;----------------see other schematic for details&lt;br /&gt;
//    insertPreview      (insertPreview = onComplete)&lt;br /&gt;
//          |&lt;br /&gt;
//          |            insertPreview gets a wikiText fragment from&lt;br /&gt;
//          |                       the wikiText downloaded by getWiki&lt;br /&gt;
//          |&lt;br /&gt;
//  [wikiMarkupToAddressFragment]&lt;br /&gt;
//       |&lt;br /&gt;
//       |                     mouseOverWikiLink  (gets an &amp;quot;address fragment&amp;quot;,&lt;br /&gt;
//       |                            |            no processing needed)&lt;br /&gt;
//       \-&amp;gt;-loadThisImage---&amp;lt;----loadImages&lt;br /&gt;
//                 |&lt;br /&gt;
//           [image(Thumb)URL]--&amp;gt;--hopefully valid image urls&lt;br /&gt;
&lt;br /&gt;
function nextOne (array, value) {&lt;br /&gt;
	// NB if the array has two consecutive entries equal&lt;br /&gt;
	//    then this will loop on successive calls&lt;br /&gt;
	if (typeof array.length == &#039;undefined&#039;) { return null; }&lt;br /&gt;
	for (var i=0; i&amp;lt;array.length-1; ++i) {&lt;br /&gt;
		if (array[i]==value) { return array[i+1]; }&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function findThis(array, value) {&lt;br /&gt;
	if (typeof array.length == &#039;undefined&#039;) { return null; }&lt;br /&gt;
	for (var i=0; i&amp;lt;array.length; ++i) {&lt;br /&gt;
		if (array[i]==value) { return i; }&lt;br /&gt;
	}&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// global array for 404&#039;ed image urls&lt;br /&gt;
pg.cache.badImageUrls=[];&lt;br /&gt;
&lt;br /&gt;
function sequentialLoadThisImage (image) {&lt;br /&gt;
	if (!getValueOf(&#039;popupImages&#039;)) { return false; }&lt;br /&gt;
	if (!isValidImageName(image)) { return false; }&lt;br /&gt;
&lt;br /&gt;
	var imageUrls=getImageUrls(image);&lt;br /&gt;
	if (!imageUrls) { return null; }&lt;br /&gt;
&lt;br /&gt;
	var img=new Image();&lt;br /&gt;
	img.isNew=true;&lt;br /&gt;
	img.pg.idNumber=pg.idNumber;&lt;br /&gt;
	img.counter=1;&lt;br /&gt;
&lt;br /&gt;
	img.onload = function () {&lt;br /&gt;
		// clear status thingy&lt;br /&gt;
		setImageStatus(&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
		var i=findThis(imageUrls, this.src);&lt;br /&gt;
		var goodSrc=this.src;&lt;br /&gt;
&lt;br /&gt;
		var setPopupImage=function () {&lt;br /&gt;
			var popupImage=document.getElementById(&amp;quot;popupImage&amp;quot;+this.pg.idNumber);&lt;br /&gt;
			if (popupImage &amp;amp;&amp;amp; typeof popupImage.src != &#039;undefined&#039;) {&lt;br /&gt;
				clearInterval(pg.timer.image);&lt;br /&gt;
				popupImage.src=goodSrc;&lt;br /&gt;
				popupImage.width=getValueOf(&#039;popupImageSize&#039;);&lt;br /&gt;
				popupImage.style.display=&#039;inline&#039;;&lt;br /&gt;
				setPopupImageLink(image, pg.wiki.imageSources[i].wiki);&lt;br /&gt;
				return true;&lt;br /&gt;
			} else { return false; }&lt;br /&gt;
		};&lt;br /&gt;
		pg.timer.image=setInterval(setPopupImage, 250);&lt;br /&gt;
		pg.cache.images.push(goodSrc);&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	img.onerror = function () {&lt;br /&gt;
		pg.cache.badImageUrls.push(this.src);&lt;br /&gt;
		// if the popup is visible, move on&lt;br /&gt;
		if (over &amp;amp;&amp;amp; over.style.visibility==&#039;visible&#039; &amp;amp;&amp;amp; this.pg.idNumber==pg.idNumber) { this.setNext(); }&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	img.setNext = function () {&lt;br /&gt;
		var currentSrc=null;&lt;br /&gt;
		var newSrc;&lt;br /&gt;
		if (!this.isNew) { currentSrc=this.src; }&lt;br /&gt;
		this.isNew=false;&lt;br /&gt;
&lt;br /&gt;
		newSrc= (currentSrc) ? nextOne(imageUrls, currentSrc) : imageUrls[0];&lt;br /&gt;
&lt;br /&gt;
		while (findThis(pg.cache.badImageUrls, newSrc))  {&lt;br /&gt;
			newSrc=nextOne(imageUrls, newSrc);&lt;br /&gt;
			if (!newSrc) {&lt;br /&gt;
				setImageStatus (&#039; :-(&#039;);&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		setImageStatus(&#039; &#039;+findThis(imageUrls, newSrc));&lt;br /&gt;
		this.src=newSrc;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// start the ball rolling&lt;br /&gt;
	img.setNext();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function loadThisImageAtThisUrl(image, url) {&lt;br /&gt;
	log(&#039;loading &amp;quot;best&amp;quot; image:\n&#039;+url);&lt;br /&gt;
	pg.misc.gImage=image;&lt;br /&gt;
	pg.misc.imageArray = [];&lt;br /&gt;
	pg.misc.imageArray[0] = new Image();&lt;br /&gt;
	pg.misc.imageArray[0].src=url;&lt;br /&gt;
	if (pg.timer.image || pg.timer.image===0) {&lt;br /&gt;
		clearInterval(pg.timer.image);&lt;br /&gt;
		pg.counter.checkImages=0;&lt;br /&gt;
	}&lt;br /&gt;
	pg.timer.image=setInterval(checkImages, 250);&lt;br /&gt;
	return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function loadImages(article) {&lt;br /&gt;
	if(! isImage(article) ) { return null; }&lt;br /&gt;
	return loadThisImage(article);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// methinks this is unbelievably silly&lt;br /&gt;
// it dovetails with the parallel image loader function&lt;br /&gt;
function checkImages() {&lt;br /&gt;
	//log(&#039;checkImages: pg.counter.loop=&#039;+pg.counter.loop+&#039;; pg.counter.checkImages=&#039;+pg.counter.checkImages);&lt;br /&gt;
	if (pg.timer.checkImages || pg.timer.checkImages===0) {&lt;br /&gt;
		clearInterval(pg.timer.checkImages);&lt;br /&gt;
		pg.timer.checkImages=null;&lt;br /&gt;
		if (pg.counter.loop &amp;gt; 10) {pg.counter.loop=0; log(&#039;too many iterations of checkImages&#039;); return;}&lt;br /&gt;
		pg.counter.loop++;&lt;br /&gt;
	} else pg.counter.checkImages++;&lt;br /&gt;
&lt;br /&gt;
	var status =  ( pg.counter.checkImages % 2 ) ? &#039;:&#039; : &#039;.&#039; ;&lt;br /&gt;
	setImageStatus(status);&lt;br /&gt;
&lt;br /&gt;
	if (pg.counter.checkImages &amp;gt; 100) {&lt;br /&gt;
		pg.counter.checkImages = 0;&lt;br /&gt;
		log (&#039;pg.counter.checkImages too big in checkImages; returning&#039;);&lt;br /&gt;
		clearInterval(pg.timer.image);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var popupImage=null;&lt;br /&gt;
	popupImage=document.getElementById(&amp;quot;popupImg&amp;quot;+pg.idNumber);&lt;br /&gt;
	if (popupImage == null) {&lt;br /&gt;
		// this doesn&#039;t seem to happen any more in practise for some reason&lt;br /&gt;
		// still, I&#039;ll leave it in&lt;br /&gt;
		log(&#039;checkImages: document.getElementById(&amp;quot;popupImg&#039;+pg.idNumber+&#039;&amp;quot;) is null! retrying in 333ms...&#039;);&lt;br /&gt;
		pg.timer.checkImages=setInterval(&amp;quot;checkImages()&amp;quot;,333);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	log(&#039;checkImages: found element popupImg&#039;+pg.idNumber+&#039;, and src=&#039;+popupImage.src);&lt;br /&gt;
&lt;br /&gt;
	// get the first image to successfully load&lt;br /&gt;
	// and put it in the popupImage&lt;br /&gt;
	for(var i = 0; i &amp;lt; pg.misc.imageArray.length; ++i) {&lt;br /&gt;
		if(isImageOk(pg.misc.imageArray[i])) {&lt;br /&gt;
			// stop all the gubbins, assign the image and return&lt;br /&gt;
&lt;br /&gt;
			log(&#039;checkImages: got at pos &#039;+i+&#039;, src=&#039;+pg.misc.imageArray[i].src);&lt;br /&gt;
			clearInterval(pg.timer.image);&lt;br /&gt;
&lt;br /&gt;
			if(isImage(pg.misc.gImage)) {&lt;br /&gt;
				popupImage.src=pg.misc.imageArray[i].src;&lt;br /&gt;
				popupImage.width=getValueOf(&#039;popupImageSize&#039;);&lt;br /&gt;
				popupImage.style.display=&#039;inline&#039;;&lt;br /&gt;
				// should we check to see if it&#039;s already there? maybe...&lt;br /&gt;
				pg.cache.images.push(pg.misc.imageArray[i].src);&lt;br /&gt;
&lt;br /&gt;
				setPopupImageLink(pg.misc.gImage, pg.wiki.imageSources[i].wiki);&lt;br /&gt;
				stopImagesDownloading();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			setImageStatus(&#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
			// reset evil nonconstant globals&lt;br /&gt;
			delete pg.misc.imageArray; pg.misc.imageArray=[];&lt;br /&gt;
			pg.timer.image=null;&lt;br /&gt;
&lt;br /&gt;
			pg.counter.checkImages=0;&lt;br /&gt;
			pg.counter.loop=0;&lt;br /&gt;
&lt;br /&gt;
			return popupImage.src;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	log(&#039;checkImages: no good image found. retrying in a tic...&#039;);&lt;br /&gt;
	pg.timer.checkImages=setInterval(&amp;quot;checkImages()&amp;quot;,333);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function stopImagesDownloading() {&lt;br /&gt;
	pg.misc.gImage=null;&lt;br /&gt;
	if (pg.misc.imageArray == null) return null;&lt;br /&gt;
	var i;&lt;br /&gt;
	for (i=0; i&amp;lt;pg.misc.imageArray.length; ++i) {&lt;br /&gt;
		//pg.misc.imageArray[i].src=&#039;&#039;; // this is a REALLY BAD IDEA&lt;br /&gt;
		delete pg.misc.imageArray[i];&lt;br /&gt;
		//pg.misc.imageArray[i] = new Image();&lt;br /&gt;
	}&lt;br /&gt;
	pg.misc.imageArray = [];&lt;br /&gt;
	return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function toggleSize() {&lt;br /&gt;
	var imgContainer=this;&lt;br /&gt;
	if (!imgContainer) { alert(&#039;imgContainer is null :/&#039;); return;}&lt;br /&gt;
	img=imgContainer.firstChild;&lt;br /&gt;
	if (!img) { alert(&#039;img is null :/&#039;); return;}&lt;br /&gt;
	if (!img.style.width || img.style.width==&#039;&#039;) img.style.width=&#039;100%&#039;;&lt;br /&gt;
	else img.style.width=&#039;&#039;; // popupImageSize+&#039;px&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setPopupImageLink (img, wiki) {&lt;br /&gt;
	if( wiki === null || img === null ) return null;&lt;br /&gt;
&lt;br /&gt;
	var a=document.getElementById(&amp;quot;popupImageLink&amp;quot;+pg.idNumber);&lt;br /&gt;
	if (a === null) return null;&lt;br /&gt;
&lt;br /&gt;
	var linkURL = imageURL(img, wiki);&lt;br /&gt;
	if (linkURL != null) {&lt;br /&gt;
		if (getValueOf(&#039;popupImagesToggleSize&#039;)) { a.onclick=toggleSize; a.title=popupString(&#039;Toggle image size&#039;); }&lt;br /&gt;
		else { a.href=linkURL; a.title=popupString(&#039;Open full-size image&#039;); }&lt;br /&gt;
	}&lt;br /&gt;
	return linkURL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isImageOk(img) {&lt;br /&gt;
	// IE test&lt;br /&gt;
	if (!img.complete)&lt;br /&gt;
		return false;&lt;br /&gt;
&lt;br /&gt;
	// gecko test&lt;br /&gt;
	if (typeof img.naturalWidth != &amp;quot;undefined&amp;quot; &amp;amp;&amp;amp; img.naturalWidth == 0)&lt;br /&gt;
		return false;&lt;br /&gt;
&lt;br /&gt;
	// test for konqueror and opera&lt;br /&gt;
&lt;br /&gt;
	// note that img.width must not be defined in the html with a width=&amp;quot;...&amp;quot;&lt;br /&gt;
	// for this to work.&lt;br /&gt;
&lt;br /&gt;
	// konq seems to give &amp;quot;broken images&amp;quot; width 16, presumably an icon width&lt;br /&gt;
	// this test would probably work in gecko too, *except for very small images*&lt;br /&gt;
	if (typeof img.width == &#039;undefined&#039; || img.width &amp;lt;=  16) return false;&lt;br /&gt;
&lt;br /&gt;
	// No other way of checking: assume it&#039;s ok.&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// those odd a/a5/ bits of image urls&lt;br /&gt;
function imagePathComponent(article) {&lt;br /&gt;
	var stripped=stripNamespace(article);&lt;br /&gt;
	var forhash=safeDecodeURI(stripped).split(&#039; &#039;).join(&#039;_&#039;);&lt;br /&gt;
	var hash=hex_md5(forhash);&lt;br /&gt;
	return hash.substring(0,1) + &#039;/&#039; + hash.substring(0,2) + &#039;/&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getImageUrlStart(wiki) { // this returns a trailing slash&lt;br /&gt;
	switch (wiki) {&lt;br /&gt;
	case &#039;en.wikipedia.org&#039;:  return &#039;http://upload.wikimedia.org/wikipedia/en/&#039;;&lt;br /&gt;
	case pg.wiki.commons:     return &#039;http://upload.wikimedia.org/wikipedia/commons/&#039;;&lt;br /&gt;
	case &#039;en.wiktionary.org&#039;: return &#039;http://en.wiktionary.org/upload/en/&#039;;&lt;br /&gt;
	default: // unsupported - take a guess&lt;br /&gt;
		if (pg.wiki.wikimedia) {&lt;br /&gt;
			return &#039;http://upload.wikimedia.org/wikipedia/&#039; + pg.wiki.lang +&#039;/&#039;;&lt;br /&gt;
		}&lt;br /&gt;
		else /* this should work for wikicities */&lt;br /&gt;
			return &#039;http://&#039; + wiki + &#039;/images/&#039;;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function imageURL(img, wiki) {&lt;br /&gt;
	if (getValueOf(&#039;popupImagesFromThisWikiOnly&#039;) &amp;amp;&amp;amp; wiki != pg.wiki.hostname) return null;&lt;br /&gt;
	var imgurl=null;&lt;br /&gt;
	if (isImage(img)) {&lt;br /&gt;
		var pathcpt = imagePathComponent(img);&lt;br /&gt;
		var stripped=stripNamespace(img);&lt;br /&gt;
		imgurl=getImageUrlStart(wiki) + pathcpt + stripped;&lt;br /&gt;
	}&lt;br /&gt;
	return imgurl;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function imageThumbURL(img, wiki, width) {&lt;br /&gt;
	//&lt;br /&gt;
	// eg http://upload.wikimedia.org/wikipedia/en/thumb/6/61/&lt;br /&gt;
	//           Rubiks_cube_solved.jpg/120px-Rubiks_cube_solved.jpg&lt;br /&gt;
	//           ^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;
	//          wikicities omits this bit&lt;br /&gt;
	//  AND wikicities needs a new pathcpt for each filename including thumbs&lt;br /&gt;
&lt;br /&gt;
	if (getValueOf(&#039;popupImagesFromThisWikiOnly&#039;) &amp;amp;&amp;amp; wiki != pg.wiki.hostname) return null;&lt;br /&gt;
	if (getValueOf(&#039;popupNeverGetThumbs&#039;)) return null;&lt;br /&gt;
&lt;br /&gt;
	var imgurl=null;&lt;br /&gt;
	if (isImage(img)) {&lt;br /&gt;
		var stripped=stripNamespace(img);&lt;br /&gt;
		var pathcpt;&lt;br /&gt;
		if (pg.wiki.wikimedia) pathcpt = imagePathComponent(stripped);&lt;br /&gt;
		else pathcpt = imagePathComponent(width+&#039;px-&#039;+stripped);&lt;br /&gt;
		imgurl=getImageUrlStart(wiki) +  &amp;quot;thumb/&amp;quot; + pathcpt;&lt;br /&gt;
		if (pg.wiki.wikimedia) imgurl += stripped + &#039;/&#039;;&lt;br /&gt;
		imgurl += width +&amp;quot;px-&amp;quot; + stripped;&lt;br /&gt;
	}&lt;br /&gt;
	return imgurl;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function loadThisImage(image) {&lt;br /&gt;
	if (getValueOf(&#039;popupLoadImagesSequentially&#039;)) return sequentialLoadThisImage(image);&lt;br /&gt;
	else return parallelLoadThisImage(image);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getImageUrls(image) {&lt;br /&gt;
	var imageUrls=[];&lt;br /&gt;
	for (var i=0; i&amp;lt;pg.wiki.imageSources.length; ++i) {&lt;br /&gt;
		var url;&lt;br /&gt;
		if (pg.wiki.imageSources[i].thumb)&lt;br /&gt;
			url=imageThumbURL(image, pg.wiki.imageSources[i].wiki, pg.wiki.imageSources[i].width);&lt;br /&gt;
		else&lt;br /&gt;
			url=imageURL(image, pg.wiki.imageSources[i].wiki);&lt;br /&gt;
		for (var j=0; j&amp;lt;pg.cache.images.length; ++j) {&lt;br /&gt;
			if (url == pg.cache.images[j]) {&lt;br /&gt;
				loadThisImageAtThisUrl(image, url);&lt;br /&gt;
				return null;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if (url!=null) imageUrls.push(url);&lt;br /&gt;
	}&lt;br /&gt;
	return imageUrls;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// this is probably very wasteful indeed of bandwidth&lt;br /&gt;
// hey ho&lt;br /&gt;
&lt;br /&gt;
function parallelLoadThisImage (image) {&lt;br /&gt;
	if (!getValueOf(&#039;popupImages&#039;)) return;&lt;br /&gt;
	if (!isValidImageName(image)) return false;&lt;br /&gt;
&lt;br /&gt;
	var imageUrls=getImageUrls(image);&lt;br /&gt;
	if (!imageUrls) return null;&lt;br /&gt;
&lt;br /&gt;
	for (var i=0; i&amp;lt;imageUrls.length; ++i) {&lt;br /&gt;
		var url = imageUrls[i];&lt;br /&gt;
		pg.misc.imageArray[i]=new Image();&lt;br /&gt;
		pg.misc.imageArray[i].src=url;&lt;br /&gt;
	}&lt;br /&gt;
	if (pg.timer.image != null) {&lt;br /&gt;
		clearInterval(pg.timer.image);&lt;br /&gt;
		pg.counter.checkImages=0;&lt;br /&gt;
	}&lt;br /&gt;
	pg.misc.gImage=image;&lt;br /&gt;
	pg.timer.image=setInterval(&amp;quot;checkImages()&amp;quot;, 250);&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getValidImageFromWikiText(wikiText) {&lt;br /&gt;
	var imagePage=null;&lt;br /&gt;
	// nb in pg.re.image we&#039;re interested in the second bracketed expression&lt;br /&gt;
	// this may change if the regex changes :-(&lt;br /&gt;
	//var match=pg.re.image.exec(wikiText);&lt;br /&gt;
	var matched=null;&lt;br /&gt;
	var match;&lt;br /&gt;
	while ( match = pg.re.image.exec(wikiText) ) {&lt;br /&gt;
		// now find a sane image name - exclude templates by seeking {&lt;br /&gt;
		var m = match[2] || pg.ns.image + &#039;:&#039; + match[6];&lt;br /&gt;
		var pxWidth=match[4];&lt;br /&gt;
		if ( isValidImageName(m) &amp;amp;&amp;amp;&lt;br /&gt;
		     (!pxWidth || parseInt(pxWidth,10) &amp;gt;= getValueOf(&#039;popupMinImageWidth&#039;)) ) {&lt;br /&gt;
			matched=m;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	pg.re.image.lastIndex=0;&lt;br /&gt;
	if (!matched) return null;&lt;br /&gt;
	return pg.ns.image+&#039;:&#039;+upcaseFirst(matched);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: images.js&lt;br /&gt;
// STARTFILE: namespaces.js&lt;br /&gt;
// Set up namespaces and other non-strings.js localization&lt;br /&gt;
// (currently that means redirs too)&lt;br /&gt;
&lt;br /&gt;
// Put the right namespace list into pg.ns.list, based on pg.wiki.lang&lt;br /&gt;
// Default to english if nothing seems to fit&lt;br /&gt;
function setNamespaceList() {&lt;br /&gt;
	var m=&amp;quot;Media&amp;quot;;&lt;br /&gt;
	var list = [m, &amp;quot;Special&amp;quot;, &amp;quot;Discuter&amp;quot;, &amp;quot;Utilisateur&amp;quot;, &amp;quot;Discussion utilisateur&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia talk&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Discussion Image&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discussion MediaWiki&amp;quot;, &amp;quot;Modèle&amp;quot;, &amp;quot;Discussion Modèle&amp;quot;, &amp;quot;Aide&amp;quot;, &amp;quot;Discussion Aide&amp;quot;, &amp;quot;Catégorie&amp;quot;, &amp;quot;Discussion Catégorie&amp;quot;, &amp;quot;Portail&amp;quot;, &amp;quot;Discussion Portail&amp;quot;];&lt;br /&gt;
	var nsLists = {&lt;br /&gt;
		&amp;quot;af&amp;quot;: [m, &amp;quot;Spesiaal&amp;quot;, &amp;quot;Bespreking&amp;quot;, &amp;quot;Gebruiker&amp;quot;, &amp;quot;Gebruikerbespreking&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipediabespreking&amp;quot;, &amp;quot;Beeld&amp;quot;, &amp;quot;Beeldbespreking&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWikibespreking&amp;quot;, &amp;quot;Sjabloon&amp;quot;, &amp;quot;Sjabloonbespreking&amp;quot;, &amp;quot;Hulp&amp;quot;, &amp;quot;Hulpbespreking&amp;quot;, &amp;quot;Kategorie&amp;quot;, &amp;quot;Kategoriebespreking&amp;quot;],&lt;br /&gt;
		&amp;quot;als&amp;quot;: [m, &amp;quot;Spezial&amp;quot;, &amp;quot;Diskussion&amp;quot;, &amp;quot;Benutzer&amp;quot;, &amp;quot;Benutzer Diskussion&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia Diskussion&amp;quot;, &amp;quot;Bild&amp;quot;, &amp;quot;Bild Diskussion&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki Diskussion&amp;quot;, &amp;quot;Vorlage&amp;quot;, &amp;quot;Vorlage Diskussion&amp;quot;, &amp;quot;Hilfe&amp;quot;, &amp;quot;Hilfe Diskussion&amp;quot;, &amp;quot;Kategorie&amp;quot;, &amp;quot;Kategorie Diskussion&amp;quot;],&lt;br /&gt;
		&amp;quot;ar&amp;quot;: [&amp;quot;ملف&amp;quot;, &amp;quot;خاص&amp;quot;, &amp;quot;نقاش&amp;quot;, &amp;quot;مستخدم&amp;quot;, &amp;quot;نقاش المستخدم&amp;quot;, &amp;quot;ويكيبيديا&amp;quot;, &amp;quot;نقاش ويكيبيديا&amp;quot;, &amp;quot;صورة&amp;quot;, &amp;quot;نقاش الصورة&amp;quot;, &amp;quot;ميدياويكي&amp;quot;, &amp;quot;نقاش ميدياويكي&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;نقاش Template&amp;quot;, &amp;quot;مساعدة&amp;quot;, &amp;quot;نقاش المساعدة&amp;quot;, &amp;quot;تصنيف&amp;quot;, &amp;quot;نقاش التصنيف&amp;quot;],&lt;br /&gt;
		&amp;quot;ast&amp;quot;: [m, &amp;quot;Especial&amp;quot;, &amp;quot;Discusión&amp;quot;, &amp;quot;Usuariu&amp;quot;, &amp;quot;Usuariu discusión&amp;quot;, &amp;quot;Uiquipedia&amp;quot;, &amp;quot;Uiquipedia discusión&amp;quot;, &amp;quot;Imaxen&amp;quot;, &amp;quot;Imaxen discusión&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki discusión&amp;quot;, &amp;quot;Plantilla&amp;quot;, &amp;quot;Plantilla discusión&amp;quot;, &amp;quot;Ayuda&amp;quot;, &amp;quot;Ayuda discusión&amp;quot;, &amp;quot;Categoría&amp;quot;, &amp;quot;Categoría discusión&amp;quot;],&lt;br /&gt;
		&amp;quot;be&amp;quot;: [&amp;quot;Мэдыя&amp;quot;, &amp;quot;Спэцыяльныя&amp;quot;, &amp;quot;Абмеркаваньне&amp;quot;, &amp;quot;Удзельнік&amp;quot;, &amp;quot;Гутаркі ўдзельніка&amp;quot;, &amp;quot;Вікіпэдыя&amp;quot;, &amp;quot;Абмеркаваньне Вікіпэдыя&amp;quot;, &amp;quot;Выява&amp;quot;, &amp;quot;Абмеркаваньне выявы&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Абмеркаваньне MediaWiki&amp;quot;, &amp;quot;Шаблён&amp;quot;, &amp;quot;Абмеркаваньне шаблёну&amp;quot;, &amp;quot;Дапамога&amp;quot;, &amp;quot;Абмеркаваньне дапамогі&amp;quot;, &amp;quot;Катэгорыя&amp;quot;, &amp;quot;Абмеркаваньне катэгорыі&amp;quot;],&lt;br /&gt;
		&amp;quot;bg&amp;quot;: [&amp;quot;Медия&amp;quot;, &amp;quot;Специални&amp;quot;, &amp;quot;Беседа&amp;quot;, &amp;quot;Потребител&amp;quot;, &amp;quot;Потребител беседа&amp;quot;, &amp;quot;Уикипедия&amp;quot;, &amp;quot;Уикипедия беседа&amp;quot;, &amp;quot;Картинка&amp;quot;, &amp;quot;Картинка беседа&amp;quot;, &amp;quot;МедияУики&amp;quot;, &amp;quot;МедияУики беседа&amp;quot;, &amp;quot;Шаблон&amp;quot;, &amp;quot;Шаблон беседа&amp;quot;, &amp;quot;Помощ&amp;quot;, &amp;quot;Помощ беседа&amp;quot;, &amp;quot;Категория&amp;quot;, &amp;quot;Категория беседа&amp;quot;],&lt;br /&gt;
		&amp;quot;bm&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Discuter&amp;quot;, &amp;quot;Utilisateur&amp;quot;, &amp;quot;Discussion Utilisateur&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Discussion Wikipedia&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Discussion Image&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discussion MediaWiki&amp;quot;, &amp;quot;Modèle&amp;quot;, &amp;quot;Discussion Modèle&amp;quot;, &amp;quot;Aide&amp;quot;, &amp;quot;Discussion Aide&amp;quot;, &amp;quot;Catégorie&amp;quot;, &amp;quot;Discussion Catégorie&amp;quot;],&lt;br /&gt;
		&amp;quot;bn&amp;quot;: [&amp;quot;বিশেষ&amp;quot;, &amp;quot;আলাপ&amp;quot;, &amp;quot;ব্যবহারকারী&amp;quot;, &amp;quot;ব্যবহারকারী আলাপ&amp;quot;, &amp;quot;উইকিপেডিয়া&amp;quot;, &amp;quot;উইকিপেডিয়া আলাপ&amp;quot;, &amp;quot;চিত্র&amp;quot;, &amp;quot;চিত্র আলাপ&amp;quot;, &amp;quot;MediaWik i আলাপ&amp;quot;, m, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;br&amp;quot;: [m, &amp;quot;Dibar&amp;quot;, &amp;quot;Kaozeal&amp;quot;, &amp;quot;Implijer&amp;quot;, &amp;quot;Kaozeadenn Implijer&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Kaozeadenn Wikipedia&amp;quot;, &amp;quot;Skeudenn&amp;quot;, &amp;quot;Kaozeadenn Skeudenn&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Kaozeadenn MediaWiki&amp;quot;, &amp;quot;Patrom&amp;quot;, &amp;quot;Kaozeadenn Patrom&amp;quot;, &amp;quot;Skoazell&amp;quot;, &amp;quot;Kaozeadenn Skoazell&amp;quot;, &amp;quot;Rummad&amp;quot;, &amp;quot;Kaozeadenn Rummad&amp;quot;],&lt;br /&gt;
		&amp;quot;ca&amp;quot;: [m, &amp;quot;Especial&amp;quot;, &amp;quot;Discussió&amp;quot;, &amp;quot;Usuari&amp;quot;, &amp;quot;Usuari Discussió&amp;quot;, &amp;quot;Viquipèdia&amp;quot;, &amp;quot;Viquipèdia Discussió&amp;quot;, &amp;quot;Imatge&amp;quot;, &amp;quot;Imatge Discussió&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki Discussió&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template Discussió&amp;quot;, &amp;quot;Ajuda&amp;quot;, &amp;quot;Ajuda Discussió&amp;quot;, &amp;quot;Categoria&amp;quot;, &amp;quot;Categoria Discussió&amp;quot;],&lt;br /&gt;
		&amp;quot;cs&amp;quot;: [&amp;quot;Média&amp;quot;, &amp;quot;Speciální&amp;quot;, &amp;quot;Diskuse&amp;quot;, &amp;quot;Wikipedista&amp;quot;, &amp;quot;Wikipedista diskuse&amp;quot;, &amp;quot;Wikipedie&amp;quot;, &amp;quot;Wikipedie diskuse&amp;quot;, &amp;quot;Soubor&amp;quot;, &amp;quot;Soubor diskuse&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki diskuse&amp;quot;, &amp;quot;Šablona&amp;quot;, &amp;quot;Šablona diskuse&amp;quot;, &amp;quot;Nápověda&amp;quot;, &amp;quot;Nápověda diskuse&amp;quot;, &amp;quot;Kategorie&amp;quot;, &amp;quot;Kategorie diskuse&amp;quot;],&lt;br /&gt;
		&amp;quot;csb&amp;quot;: [m, &amp;quot;Specjalnô&amp;quot;, &amp;quot;Diskùsëjô&amp;quot;, &amp;quot;Brëkòwnik&amp;quot;, &amp;quot;Diskùsëjô brëkòwnika&amp;quot;, &amp;quot;Wiki&amp;quot;, &amp;quot;Diskùsëjô Wiki&amp;quot;, &amp;quot;Òbrôzk&amp;quot;, &amp;quot;Diskùsëjô òbrôzków&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Diskùsëjô MediaWiki&amp;quot;, &amp;quot;Szablóna&amp;quot;, &amp;quot;Diskùsëjô Szablónë&amp;quot;, &amp;quot;Pòmòc&amp;quot;, &amp;quot;Diskùsëjô Pòmòcë&amp;quot;, &amp;quot;Kategòrëjô&amp;quot;, &amp;quot;Diskùsëjô Kategòrëji&amp;quot;],&lt;br /&gt;
		&amp;quot;cv&amp;quot;: [&amp;quot;Медиа&amp;quot;, &amp;quot;Ятарлă&amp;quot;, &amp;quot;Сӳтсе явасси&amp;quot;, &amp;quot;Хутшăнакан&amp;quot;, &amp;quot;Хутшăнаканăн канашлу страници&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;Ӳкерчĕк&amp;quot;, &amp;quot;Ӳкерчĕке сӳтсе явмалли&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki сӳтсе явмалли&amp;quot;, &amp;quot;Шаблон&amp;quot;, &amp;quot;Шаблона сӳтсе явмалли&amp;quot;, &amp;quot;Пулăшу&amp;quot;, &amp;quot;Пулăшăва сӳтсе явмалли&amp;quot;, &amp;quot;Категори&amp;quot;, &amp;quot;Категорине сӳтсе явмалли&amp;quot;],&lt;br /&gt;
		&amp;quot;cy&amp;quot;: [m, &amp;quot;Arbennig&amp;quot;, &amp;quot;Sgwrs&amp;quot;, &amp;quot;Defnyddiwr&amp;quot;, &amp;quot;Sgwrs Defnyddiwr&amp;quot;, &amp;quot;Wicipedia&amp;quot;, &amp;quot;Sgwrs Wicipedia&amp;quot;, &amp;quot;Delwedd&amp;quot;, &amp;quot;Sgwrs Delwedd&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Sgwrs MediaWiki&amp;quot;, &amp;quot;Nodyn&amp;quot;, &amp;quot;Sgwrs Nodyn&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;da&amp;quot;: [m, &amp;quot;Speciel&amp;quot;, &amp;quot;Diskussion&amp;quot;, &amp;quot;Bruger&amp;quot;, &amp;quot;Bruger diskussion&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia diskussion&amp;quot;, &amp;quot;Billede&amp;quot;, &amp;quot;Billede diskussion&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki diskussion&amp;quot;, &amp;quot;Skabelon&amp;quot;, &amp;quot;Skabelon diskussion&amp;quot;, &amp;quot;Hjælp&amp;quot;, &amp;quot;Hjælp diskussion&amp;quot;, &amp;quot;Kategori&amp;quot;, &amp;quot;Kategori diskussion&amp;quot;],&lt;br /&gt;
		&amp;quot;de&amp;quot;: [m, &amp;quot;Spezial&amp;quot;, &amp;quot;Diskussion&amp;quot;, &amp;quot;Benutzer&amp;quot;, &amp;quot;Benutzer Diskussion&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia Diskussion&amp;quot;, &amp;quot;Bild&amp;quot;, &amp;quot;Bild Diskussion&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki Diskussion&amp;quot;, &amp;quot;Vorlage&amp;quot;, &amp;quot;Vorlage Diskussion&amp;quot;, &amp;quot;Hilfe&amp;quot;, &amp;quot;Hilfe Diskussion&amp;quot;, &amp;quot;Kategorie&amp;quot;, &amp;quot;Kategorie Diskussion&amp;quot;, &amp;quot;Portal&amp;quot;, &amp;quot;Portal Diskussion&amp;quot;],&lt;br /&gt;
		&amp;quot;el&amp;quot;: [&amp;quot;Μέσον&amp;quot;, &amp;quot;Ειδικό&amp;quot;, &amp;quot;Συζήτηση&amp;quot;, &amp;quot;Χρήστης&amp;quot;, &amp;quot;Συζήτηση χρήστη&amp;quot;, &amp;quot;Βικιπαίδεια&amp;quot;, &amp;quot;Βικιπαίδεια συζήτηση&amp;quot;, &amp;quot;Εικόνα&amp;quot;, &amp;quot;Συζήτηση εικόνας&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Πρότυπο&amp;quot;, &amp;quot;Συζήτηση προτύπου&amp;quot;, &amp;quot;Βοήθεια&amp;quot;, &amp;quot;Συζήτηση βοήθειας&amp;quot;, &amp;quot;Κατηγορία&amp;quot;, &amp;quot;Συζήτηση κατηγορίας&amp;quot;],&lt;br /&gt;
		&amp;quot;eo&amp;quot;: [m, &amp;quot;Speciala&amp;quot;, &amp;quot;Diskuto&amp;quot;, &amp;quot;Vikipediisto&amp;quot;, &amp;quot;Vikipediista diskuto&amp;quot;, &amp;quot;Vikipedio&amp;quot;, &amp;quot;Vikipedio diskuto&amp;quot;, &amp;quot;Dosiero&amp;quot;, &amp;quot;Dosiera diskuto&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki diskuto&amp;quot;, &amp;quot;Ŝablono&amp;quot;, &amp;quot;Ŝablona diskuto&amp;quot;, &amp;quot;Helpo&amp;quot;, &amp;quot;Helpa diskuto&amp;quot;, &amp;quot;Kategorio&amp;quot;, &amp;quot;Kategoria diskuto&amp;quot;],&lt;br /&gt;
		&amp;quot;es&amp;quot;: [m, &amp;quot;Especial&amp;quot;, &amp;quot;Discusión&amp;quot;, &amp;quot;Usuario&amp;quot;, &amp;quot;Usuario Discusión&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia Discusión&amp;quot;, &amp;quot;Imagen&amp;quot;, &amp;quot;Imagen Discusión&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki Discusión&amp;quot;, &amp;quot;Plantilla&amp;quot;, &amp;quot;Plantilla Discusión&amp;quot;, &amp;quot;Ayuda&amp;quot;, &amp;quot;Ayuda Discusión&amp;quot;, &amp;quot;Categoría&amp;quot;, &amp;quot;Categoría Discusión&amp;quot;],&lt;br /&gt;
		&amp;quot;et&amp;quot;: [&amp;quot;Meedia&amp;quot;, &amp;quot;Eri&amp;quot;, &amp;quot;Arutelu&amp;quot;, &amp;quot;Kasutaja&amp;quot;, &amp;quot;Kasutaja arutelu&amp;quot;, &amp;quot;Vikipeedia&amp;quot;, &amp;quot;Vikipeedia arutelu&amp;quot;, &amp;quot;Pilt&amp;quot;, &amp;quot;Pildi arutelu&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki arutelu&amp;quot;, &amp;quot;Mall&amp;quot;, &amp;quot;Malli arutelu&amp;quot;, &amp;quot;Juhend&amp;quot;, &amp;quot;Juhendi arutelu&amp;quot;, &amp;quot;Kategooria&amp;quot;, &amp;quot;Kategooria arutelu&amp;quot;],&lt;br /&gt;
		&amp;quot;eu&amp;quot;: [m, &amp;quot;Aparteko&amp;quot;, &amp;quot;Eztabaida&amp;quot;, &amp;quot;Lankide&amp;quot;, &amp;quot;Lankide eztabaida&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia eztabaida&amp;quot;, &amp;quot;Irudi&amp;quot;, &amp;quot;Irudi eztabaida&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki eztabaida&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;fa&amp;quot;: [&amp;quot;مدیا&amp;quot;, &amp;quot;ویژه&amp;quot;, &amp;quot;بحث&amp;quot;, &amp;quot;کاربر&amp;quot;, &amp;quot;بحث کاربر&amp;quot;, &amp;quot;ویکی‌پدیا&amp;quot;, &amp;quot;بحث ویکی‌پدیا&amp;quot;, &amp;quot;تصویر&amp;quot;, &amp;quot;بحث تصویر&amp;quot;, &amp;quot;مدیاویکی&amp;quot;, &amp;quot;بحث مدیاویکی&amp;quot;, &amp;quot;الگو&amp;quot;, &amp;quot;بحث الگو&amp;quot;, &amp;quot;راهنما&amp;quot;, &amp;quot;بحث راهنما&amp;quot;, &amp;quot;رده&amp;quot;, &amp;quot;بحث رده&amp;quot;],&lt;br /&gt;
		&amp;quot;fi&amp;quot;: [m, &amp;quot;Toiminnot&amp;quot;, &amp;quot;Keskustelu&amp;quot;, &amp;quot;Käyttäjä&amp;quot;, &amp;quot;Keskustelu käyttäjästä&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Keskustelu Wikipediasta&amp;quot;, &amp;quot;Kuva&amp;quot;, &amp;quot;Keskustelu kuvasta&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Malline&amp;quot;, &amp;quot;Keskustelu mallineesta&amp;quot;, &amp;quot;Ohje&amp;quot;, &amp;quot;Keskustelu ohjeesta&amp;quot;, &amp;quot;Luokka&amp;quot;, &amp;quot;Keskustelu luokasta&amp;quot;],&lt;br /&gt;
		&amp;quot;fo&amp;quot;: [&amp;quot;Miðil&amp;quot;, &amp;quot;Serstakur&amp;quot;, &amp;quot;Kjak&amp;quot;, &amp;quot;Brúkari&amp;quot;, &amp;quot;Brúkari kjak&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia kjak&amp;quot;, &amp;quot;Mynd&amp;quot;, &amp;quot;Mynd kjak&amp;quot;, &amp;quot;MidiaWiki&amp;quot;, &amp;quot;MidiaWiki kjak&amp;quot;, &amp;quot;Fyrimynd&amp;quot;, &amp;quot;Fyrimynd kjak&amp;quot;, &amp;quot;Hjálp&amp;quot;, &amp;quot;Hjálp kjak&amp;quot;, &amp;quot;Bólkur&amp;quot;, &amp;quot;Bólkur kjak&amp;quot;],&lt;br /&gt;
		&amp;quot;fr&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Discuter&amp;quot;, &amp;quot;Utilisateur&amp;quot;, &amp;quot;Discussion Utilisateur&amp;quot;, &amp;quot;Wikipédia&amp;quot;, &amp;quot;Discussion Wikipédia&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Discussion Image&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discussion MediaWiki&amp;quot;, &amp;quot;Modèle&amp;quot;, &amp;quot;Discussion Modèle&amp;quot;, &amp;quot;Aide&amp;quot;, &amp;quot;Discussion Aide&amp;quot;, &amp;quot;Catégorie&amp;quot;, &amp;quot;Discussion Catégorie&amp;quot;, &amp;quot;Portail&amp;quot;, &amp;quot;Discussion Portail&amp;quot;],&lt;br /&gt;
		&amp;quot;fur&amp;quot;: [m, &amp;quot;Speciâl&amp;quot;, &amp;quot;Discussion&amp;quot;, &amp;quot;Utent&amp;quot;, &amp;quot;Discussion utent&amp;quot;, &amp;quot;Vichipedie&amp;quot;, &amp;quot;Discussion Vichipedie&amp;quot;, &amp;quot;Figure&amp;quot;, &amp;quot;Discussion figure&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discussion MediaWiki&amp;quot;, &amp;quot;Model&amp;quot;, &amp;quot;Discussion model&amp;quot;, &amp;quot;Jutori&amp;quot;, &amp;quot;Discussion jutori&amp;quot;, &amp;quot;Categorie&amp;quot;, &amp;quot;Discussion categorie&amp;quot;],&lt;br /&gt;
		&amp;quot;fy&amp;quot;: [m, &amp;quot;Wiki&amp;quot;, &amp;quot;Oerlis&amp;quot;, &amp;quot;Meidogger&amp;quot;, &amp;quot;Meidogger oerlis&amp;quot;, &amp;quot;Wikipedy&amp;quot;, &amp;quot;Wikipedy oerlis&amp;quot;, &amp;quot;Ofbyld&amp;quot;, &amp;quot;Ofbyld oerlis&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki oerlis&amp;quot;, &amp;quot;Berjocht&amp;quot;, &amp;quot;Berjocht oerlis&amp;quot;, &amp;quot;Hulp&amp;quot;, &amp;quot;Hulp oerlis&amp;quot;, &amp;quot;Kategory&amp;quot;, &amp;quot;Kategory oerlis&amp;quot;],&lt;br /&gt;
		&amp;quot;ga&amp;quot;: [&amp;quot;Meán&amp;quot;, &amp;quot;Speisialta&amp;quot;, &amp;quot;Plé&amp;quot;, &amp;quot;Úsáideoir&amp;quot;, &amp;quot;Plé úsáideora&amp;quot;, &amp;quot;Vicipéid&amp;quot;, &amp;quot;Plé Vicipéide&amp;quot;, &amp;quot;Íomhá&amp;quot;, &amp;quot;Plé íomhá&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Plé MediaWiki&amp;quot;, &amp;quot;Teimpléad&amp;quot;, &amp;quot;Plé teimpléid&amp;quot;, &amp;quot;Cabhair&amp;quot;, &amp;quot;Plé cabhrach&amp;quot;, &amp;quot;Catagóir&amp;quot;, &amp;quot;Plé catagóire&amp;quot;],&lt;br /&gt;
		&amp;quot;gu&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Talk&amp;quot;, &amp;quot;User&amp;quot;, &amp;quot;User talk&amp;quot;, &amp;quot;વિકિપીડિયા&amp;quot;, &amp;quot;વિકિપીડિયા talk&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Image talk&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;he&amp;quot;: [m, &amp;quot;מיוחד&amp;quot;, &amp;quot;שיחה&amp;quot;, &amp;quot;משתמש&amp;quot;, &amp;quot;שיחת משתמש&amp;quot;, &amp;quot;ויקיפדיה&amp;quot;, &amp;quot;שיחת ויקיפדיה&amp;quot;, &amp;quot;תמונה&amp;quot;, &amp;quot;שיחת תמונה&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;שיחת MediaWiki&amp;quot;, &amp;quot;תבנית&amp;quot;, &amp;quot;שיחת תבנית&amp;quot;, &amp;quot;עזרה&amp;quot;, &amp;quot;שיחת עזרה&amp;quot;, &amp;quot;קטגוריה&amp;quot;, &amp;quot;שיחת קטגוריה&amp;quot;],&lt;br /&gt;
		&amp;quot;hi&amp;quot;: [m, &amp;quot;विशेष&amp;quot;, &amp;quot;वार्ता&amp;quot;, &amp;quot;सदस्य&amp;quot;, &amp;quot;सदस्य वार्ता&amp;quot;, &amp;quot;विकिपीडिया&amp;quot;, &amp;quot;विकिपीडिया वार्ता&amp;quot;, &amp;quot;चित्र&amp;quot;, &amp;quot;चित्र वार्ता&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;श्रेणी&amp;quot;, &amp;quot;श्रेणी वार्ता&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;],&lt;br /&gt;
		&amp;quot;hr&amp;quot;: [&amp;quot;Mediji&amp;quot;, &amp;quot;Posebno&amp;quot;, &amp;quot;Razgovor&amp;quot;, &amp;quot;Suradnik&amp;quot;, &amp;quot;Razgovor sa suradnikom&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Razgovor Wikipedia&amp;quot;, &amp;quot;Slika&amp;quot;, &amp;quot;Razgovor o slici&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki razgovor&amp;quot;, &amp;quot;Predložak&amp;quot;, &amp;quot;Razgovor o predlošku&amp;quot;, &amp;quot;Pomoć&amp;quot;, &amp;quot;Razgovor o pomoći&amp;quot;, &amp;quot;Kategorija&amp;quot;, &amp;quot;Razgovor o kategoriji&amp;quot;],&lt;br /&gt;
		&amp;quot;hu&amp;quot;: [&amp;quot;Média&amp;quot;, &amp;quot;Speciális&amp;quot;, &amp;quot;Vita&amp;quot;, &amp;quot;User&amp;quot;, &amp;quot;User vita&amp;quot;, &amp;quot;Wikipédia&amp;quot;, &amp;quot;Wikipédia vita&amp;quot;, &amp;quot;Kép&amp;quot;, &amp;quot;Kép vita&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki vita&amp;quot;, &amp;quot;Sablon&amp;quot;, &amp;quot;Sablon vita&amp;quot;, &amp;quot;Segítség&amp;quot;, &amp;quot;Segítség vita&amp;quot;, &amp;quot;Kategória&amp;quot;, &amp;quot;Kategória vita&amp;quot;],&lt;br /&gt;
		&amp;quot;ia&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Discussion&amp;quot;, &amp;quot;Usator&amp;quot;, &amp;quot;Discussion Usator&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Discussion Wikipedia&amp;quot;, &amp;quot;Imagine&amp;quot;, &amp;quot;Discussion Imagine&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discussion MediaWiki&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;id&amp;quot;: [m, &amp;quot;Istimewa&amp;quot;, &amp;quot;Bicara&amp;quot;, &amp;quot;Pengguna&amp;quot;, &amp;quot;Bicara Pengguna&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Pembicaraan Wikipedia&amp;quot;, &amp;quot;Gambar&amp;quot;, &amp;quot;Pembicaraan Gambar&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Pembicaraan MediaWiki&amp;quot;, &amp;quot;Templat&amp;quot;, &amp;quot;Pembicaraan Templat&amp;quot;, &amp;quot;Bantuan&amp;quot;, &amp;quot;Pembicaraan Bantuan&amp;quot;, &amp;quot;Kategori&amp;quot;, &amp;quot;Pembicaraan Kategori&amp;quot;],&lt;br /&gt;
		&amp;quot;is&amp;quot;: [&amp;quot;Miðill&amp;quot;, &amp;quot;Kerfissíða&amp;quot;, &amp;quot;Spjall&amp;quot;, &amp;quot;Notandi&amp;quot;, &amp;quot;Notandaspjall&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipediaspjall&amp;quot;, &amp;quot;Mynd&amp;quot;, &amp;quot;Myndaspjall&amp;quot;, &amp;quot;Melding&amp;quot;, &amp;quot;Meldingarspjall&amp;quot;, &amp;quot;Snið&amp;quot;, &amp;quot;Sniðaspjall&amp;quot;, &amp;quot;Hjálp&amp;quot;, &amp;quot;Hjálparspjall&amp;quot;, &amp;quot;Flokkur&amp;quot;, &amp;quot;Flokkaspjall&amp;quot;],&lt;br /&gt;
		&amp;quot;it&amp;quot;: [m, &amp;quot;Speciale&amp;quot;, &amp;quot;Discussione&amp;quot;, &amp;quot;Utente&amp;quot;, &amp;quot;Discussioni utente&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Discussioni Wikipedia&amp;quot;, &amp;quot;Immagine&amp;quot;, &amp;quot;Discussioni immagine&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discussioni MediaWiki&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Discussioni template&amp;quot;, &amp;quot;Aiuto&amp;quot;, &amp;quot;Discussioni aiuto&amp;quot;, &amp;quot;Categoria&amp;quot;, &amp;quot;Discussioni categoria&amp;quot;],&lt;br /&gt;
		&amp;quot;ja&amp;quot;: [m, &amp;quot;特別&amp;quot;, &amp;quot;ノート&amp;quot;, &amp;quot;利用者&amp;quot;, &amp;quot;利用者‐会話&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia‐ノート&amp;quot;, &amp;quot;画像&amp;quot;, &amp;quot;画像‐ノート&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki‐ノート&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template‐ノート&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help‐ノート&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category‐ノート&amp;quot;],&lt;br /&gt;
		&amp;quot;ka&amp;quot;: [&amp;quot;მედია&amp;quot;, &amp;quot;სპეციალური&amp;quot;, &amp;quot;განხილვა&amp;quot;, &amp;quot;მომხმარებელი&amp;quot;, &amp;quot;მომხმარებელი განხილვა&amp;quot;, &amp;quot;ვიკიპედია&amp;quot;, &amp;quot;ვიკიპედია განხილვა&amp;quot;, &amp;quot;სურათი&amp;quot;, &amp;quot;სურათი განხილვა&amp;quot;, &amp;quot;მედიავიკი&amp;quot;, &amp;quot;მედიავიკი განხილვა&amp;quot;, &amp;quot;თარგი&amp;quot;, &amp;quot;თარგი განხილვა&amp;quot;, &amp;quot;დახმარება&amp;quot;, &amp;quot;დახმარება განხილვა&amp;quot;, &amp;quot;კატეგორია&amp;quot;, &amp;quot;კატეგორია განხილვა&amp;quot;],&lt;br /&gt;
		&amp;quot;ko&amp;quot;: [m, &amp;quot;특수기능&amp;quot;, &amp;quot;토론&amp;quot;, &amp;quot;사용자&amp;quot;, &amp;quot;사용자토론&amp;quot;, &amp;quot;위키백과&amp;quot;, &amp;quot;위키백과토론&amp;quot;, &amp;quot;그림&amp;quot;, &amp;quot;그림토론&amp;quot;, &amp;quot;분류&amp;quot;, &amp;quot;분류토론&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;],&lt;br /&gt;
		&amp;quot;ku&amp;quot;: [&amp;quot;Medya&amp;quot;, &amp;quot;Taybet&amp;quot;, &amp;quot;Nîqaş&amp;quot;, &amp;quot;Bikarhêner&amp;quot;, &amp;quot;Bikarhêner nîqaş&amp;quot;, &amp;quot;Wîkîpediya&amp;quot;, &amp;quot;Wîkîpediya nîqaş&amp;quot;, &amp;quot;Wêne&amp;quot;, &amp;quot;Wêne nîqaş&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki nîqaş&amp;quot;, &amp;quot;Şablon&amp;quot;, &amp;quot;Şablon nîqaş&amp;quot;, &amp;quot;Alîkarî&amp;quot;, &amp;quot;Alîkarî nîqaş&amp;quot;, &amp;quot;Kategorî&amp;quot;, &amp;quot;Kategorî nîqaş&amp;quot;],&lt;br /&gt;
		&amp;quot;la&amp;quot;: [&amp;quot;Specialis&amp;quot;, &amp;quot;Disputatio&amp;quot;, &amp;quot;Usor&amp;quot;, &amp;quot;Disputatio Usoris&amp;quot;, &amp;quot;Vicipaedia&amp;quot;, &amp;quot;Disputatio Vicipaediae&amp;quot;, &amp;quot;Imago&amp;quot;, &amp;quot;Disputatio Imaginis&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Disputatio MediaWiki&amp;quot;, &amp;quot;Formula&amp;quot;, &amp;quot;Disputatio Formulae&amp;quot;, &amp;quot;Auxilium&amp;quot;, &amp;quot;Disputatio Auxilii&amp;quot;, &amp;quot;Categoria&amp;quot;, &amp;quot;Disputatio Categoriae&amp;quot;, m],&lt;br /&gt;
		&amp;quot;li&amp;quot;: [m, &amp;quot;Speciaal&amp;quot;, &amp;quot;Euverlik&amp;quot;, &amp;quot;Gebroeker&amp;quot;, &amp;quot;Euverlik gebroeker&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Euverlik Wikipedia&amp;quot;, &amp;quot;Aafbeilding&amp;quot;, &amp;quot;Euverlik afbeelding&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Euverlik MediaWiki&amp;quot;, &amp;quot;Sjabloon&amp;quot;, &amp;quot;Euverlik sjabloon&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Euverlik help&amp;quot;, &amp;quot;Kategorie&amp;quot;, &amp;quot;Euverlik kategorie&amp;quot;],&lt;br /&gt;
		&amp;quot;lt&amp;quot;: [&amp;quot;Medija&amp;quot;, &amp;quot;Specialus&amp;quot;, &amp;quot;Aptarimas&amp;quot;, &amp;quot;Naudotojas&amp;quot;, &amp;quot;Naudotojo aptarimas&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia aptarimas&amp;quot;, &amp;quot;Vaizdas&amp;quot;, &amp;quot;Vaizdo aptarimas&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki aptarimas&amp;quot;, &amp;quot;Šablonas&amp;quot;, &amp;quot;Šablono aptarimas&amp;quot;, &amp;quot;Pagalba&amp;quot;, &amp;quot;Pagalbos aptarimas&amp;quot;, &amp;quot;Kategorija&amp;quot;, &amp;quot;Kategorijos aptarimas&amp;quot;],&lt;br /&gt;
		&amp;quot;mk&amp;quot;: [&amp;quot;Медија&amp;quot;, &amp;quot;Специјални&amp;quot;, &amp;quot;Разговор&amp;quot;, &amp;quot;Корисник&amp;quot;, &amp;quot;Корисник разговор&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia разговор&amp;quot;, &amp;quot;Слика&amp;quot;, &amp;quot;Слика разговор&amp;quot;, &amp;quot;МедијаВики&amp;quot;, &amp;quot;МедијаВики разговор&amp;quot;, &amp;quot;Шаблон&amp;quot;, &amp;quot;Шаблон разговор&amp;quot;, &amp;quot;Помош&amp;quot;, &amp;quot;Помош разговор&amp;quot;, &amp;quot;Категорија&amp;quot;, &amp;quot;Категорија разговор&amp;quot;],&lt;br /&gt;
		&amp;quot;ms&amp;quot;: [m, &amp;quot;Istimewa&amp;quot;, &amp;quot;Perbualan&amp;quot;, &amp;quot;Pengguna&amp;quot;, &amp;quot;Perbualan Pengguna&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Perbualan Wikipedia&amp;quot;, &amp;quot;Imej&amp;quot;, &amp;quot;Imej Perbualan&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki Perbualan&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;mt&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Talk&amp;quot;, &amp;quot;User&amp;quot;, &amp;quot;User talk&amp;quot;, &amp;quot;Wikipedija&amp;quot;, &amp;quot;Wikipedija talk&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Image talk&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;nap&amp;quot;: [m, &amp;quot;Speciale&amp;quot;, &amp;quot;Discussione&amp;quot;, &amp;quot;Utente&amp;quot;, &amp;quot;Discussioni utente&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Discussioni Wikipedia&amp;quot;, &amp;quot;Immagine&amp;quot;, &amp;quot;Discussioni immagine&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discussioni MediaWiki&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Discussioni template&amp;quot;, &amp;quot;Aiuto&amp;quot;, &amp;quot;Discussioni aiuto&amp;quot;, &amp;quot;Categoria&amp;quot;, &amp;quot;Discussioni categoria&amp;quot;],&lt;br /&gt;
		&amp;quot;nds&amp;quot;: [m, &amp;quot;Spezial&amp;quot;, &amp;quot;Diskuschoon&amp;quot;, &amp;quot;Bruker&amp;quot;, &amp;quot;Bruker Diskuschoon&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia Diskuschoon&amp;quot;, &amp;quot;Bild&amp;quot;, &amp;quot;Bild Diskuschoon&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki Diskuschoon&amp;quot;, &amp;quot;Vörlaag&amp;quot;, &amp;quot;Vörlaag Diskuschoon&amp;quot;, &amp;quot;Hülp&amp;quot;, &amp;quot;Hülp Diskuschoon&amp;quot;, &amp;quot;Kategorie&amp;quot;, &amp;quot;Kategorie Diskuschoon&amp;quot;],&lt;br /&gt;
		&amp;quot;nl&amp;quot;: [m, &amp;quot;Speciaal&amp;quot;, &amp;quot;Overleg&amp;quot;, &amp;quot;Gebruiker&amp;quot;, &amp;quot;Overleg gebruiker&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Overleg Wikipedia&amp;quot;, &amp;quot;Afbeelding&amp;quot;, &amp;quot;Overleg afbeelding&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Overleg MediaWiki&amp;quot;, &amp;quot;Sjabloon&amp;quot;, &amp;quot;Overleg sjabloon&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Overleg help&amp;quot;, &amp;quot;Categorie&amp;quot;, &amp;quot;Overleg categorie&amp;quot;],&lt;br /&gt;
		&amp;quot;nn&amp;quot;: [&amp;quot;Filpeikar&amp;quot;, &amp;quot;Spesial&amp;quot;, &amp;quot;Diskusjon&amp;quot;, &amp;quot;Brukar&amp;quot;, &amp;quot;Brukardiskusjon&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia-diskusjon&amp;quot;, &amp;quot;Fil&amp;quot;, &amp;quot;Fildiskusjon&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki-diskusjon&amp;quot;, &amp;quot;Mal&amp;quot;, &amp;quot;Maldiskusjon&amp;quot;, &amp;quot;Hjelp&amp;quot;, &amp;quot;Hjelpdiskusjon&amp;quot;, &amp;quot;Kategori&amp;quot;, &amp;quot;Kategoridiskusjon&amp;quot;],&lt;br /&gt;
		&amp;quot;no&amp;quot;: [&amp;quot;Medium&amp;quot;, &amp;quot;Spesial&amp;quot;, &amp;quot;Diskusjon&amp;quot;, &amp;quot;Bruker&amp;quot;, &amp;quot;Brukerdiskusjon&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia-diskusjon&amp;quot;, &amp;quot;Bilde&amp;quot;, &amp;quot;Bildediskusjon&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki-diskusjon&amp;quot;, &amp;quot;Mal&amp;quot;, &amp;quot;Maldiskusjon&amp;quot;, &amp;quot;Hjelp&amp;quot;, &amp;quot;Hjelpdiskusjon&amp;quot;, &amp;quot;Kategori&amp;quot;, &amp;quot;Kategoridiskusjon&amp;quot;],&lt;br /&gt;
		&amp;quot;nv&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Naaltsoos baa yinísht&#039;į́&amp;quot;, &amp;quot;Choinish&#039;įįhí&amp;quot;, &amp;quot;Choinish&#039;įįhí baa yinísht&#039;į́&amp;quot;, &amp;quot;Wikiibíídiiya&amp;quot;, &amp;quot;Wikiibíídiiya baa yinísht&#039;į́&amp;quot;, &amp;quot;E&#039;elyaaígíí&amp;quot;, &amp;quot;E&#039;elyaaígíí baa yinísht&#039;į́&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki baa yinísht&#039;į́&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Aná&#039;álwo&#039;&amp;quot;, &amp;quot;Aná&#039;álwo&#039; baa yinísht&#039;į́&amp;quot;, &amp;quot;T&#039;ááłáhági át&#039;éego&amp;quot;, &amp;quot;T&#039;ááłáhági át&#039;éego baa yinísht&#039;į́&amp;quot;],&lt;br /&gt;
		&amp;quot;oc&amp;quot;: [&amp;quot;Especial&amp;quot;, &amp;quot;Discutir&amp;quot;, &amp;quot;Utilisator&amp;quot;, &amp;quot;Discutida Utilisator&amp;quot;, &amp;quot;Oiquipedià&amp;quot;, &amp;quot;Discutida Oiquipedià&amp;quot;, &amp;quot;Image&amp;quot;, &amp;quot;Discutida Image&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, m, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;os&amp;quot;: [m, &amp;quot;Сæрмагонд&amp;quot;, &amp;quot;Дискусси&amp;quot;, &amp;quot;Архайæг&amp;quot;, &amp;quot;Архайæджы дискусси&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;Ныв&amp;quot;, &amp;quot;Нывы тыххæй дискусси&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Дискусси MediaWiki&amp;quot;, &amp;quot;Шаблон&amp;quot;, &amp;quot;Шаблоны тыххæй дискусси&amp;quot;, &amp;quot;Æххуыс&amp;quot;, &amp;quot;Æххуысы тыххæй дискусси&amp;quot;, &amp;quot;Категори&amp;quot;, &amp;quot;Категорийы тыххæй дискусси&amp;quot;],&lt;br /&gt;
		&amp;quot;pa&amp;quot;: [&amp;quot;ਮੀਡੀਆ&amp;quot;, &amp;quot;ਖਾਸ&amp;quot;, &amp;quot;ਚਰਚਾ&amp;quot;, &amp;quot;ਮੈਂਬਰ&amp;quot;, &amp;quot;ਮੈਂਬਰ ਚਰਚਾ&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia ਚਰਚਾ&amp;quot;, &amp;quot;ਤਸਵੀਰ&amp;quot;, &amp;quot;ਤਸਵੀਰ ਚਰਚਾ&amp;quot;, &amp;quot;ਮੀਡੀਆਵਿਕਿ&amp;quot;, &amp;quot;ਮੀਡੀਆਵਿਕਿ ਚਰਚਾ&amp;quot;, &amp;quot;ਨਮੂਨਾ&amp;quot;, &amp;quot;ਨਮੂਨਾ ਚਰਚਾ&amp;quot;, &amp;quot;ਮਦਦ&amp;quot;, &amp;quot;ਮਦਦ ਚਰਚਾ&amp;quot;, &amp;quot;ਸ਼੍ਰੇਣੀ&amp;quot;, &amp;quot;ਸ਼੍ਰੇਣੀ ਚਰਚਾ&amp;quot;],&lt;br /&gt;
		&amp;quot;pl&amp;quot;: [m, &amp;quot;Specjalna&amp;quot;, &amp;quot;Dyskusja&amp;quot;, &amp;quot;Wikipedysta&amp;quot;, &amp;quot;Dyskusja Wikipedysty&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Dyskusja Wikipedii&amp;quot;, &amp;quot;Grafika&amp;quot;, &amp;quot;Dyskusja grafiki&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Dyskusja MediaWiki&amp;quot;, &amp;quot;Szablon&amp;quot;, &amp;quot;Dyskusja szablonu&amp;quot;, &amp;quot;Pomoc&amp;quot;, &amp;quot;Dyskusja pomocy&amp;quot;, &amp;quot;Kategoria&amp;quot;, &amp;quot;Dyskusja kategorii&amp;quot;, &amp;quot;Portal&amp;quot;, &amp;quot;Dyskusja portalu&amp;quot;],&lt;br /&gt;
		&amp;quot;pt&amp;quot;: [m, &amp;quot;Especial&amp;quot;, &amp;quot;Discussão&amp;quot;, &amp;quot;Usuário&amp;quot;, &amp;quot;Usuário Discussão&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia Discussão&amp;quot;, &amp;quot;Imagem&amp;quot;, &amp;quot;Imagem Discussão&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki Discussão&amp;quot;, &amp;quot;Predefinição&amp;quot;, &amp;quot;Predefinição Discussão&amp;quot;, &amp;quot;Ajuda&amp;quot;, &amp;quot;Ajuda Discussão&amp;quot;, &amp;quot;Categoria&amp;quot;, &amp;quot;Categoria Discussão&amp;quot;],&lt;br /&gt;
		&amp;quot;ro&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Discuţie&amp;quot;, &amp;quot;Utilizator&amp;quot;, &amp;quot;Discuţie Utilizator&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Discuţie Wikipedia&amp;quot;, &amp;quot;Imagine&amp;quot;, &amp;quot;Discuţie Imagine&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Discuţie MediaWiki&amp;quot;, &amp;quot;Format&amp;quot;, &amp;quot;Discuţie Format&amp;quot;, &amp;quot;Ajutor&amp;quot;, &amp;quot;Discuţie Ajutor&amp;quot;, &amp;quot;Categorie&amp;quot;, &amp;quot;Discuţie Categorie&amp;quot;],&lt;br /&gt;
		&amp;quot;ru&amp;quot;: [&amp;quot;Медиа&amp;quot;, &amp;quot;Служебная&amp;quot;, &amp;quot;Обсуждение&amp;quot;, &amp;quot;Участник&amp;quot;, &amp;quot;Обсуждение участника&amp;quot;, &amp;quot;Википедия&amp;quot;, &amp;quot;Обсуждение Википедии&amp;quot;, &amp;quot;Изображение&amp;quot;, &amp;quot;Обсуждение изображения&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Обсуждение MediaWiki&amp;quot;, &amp;quot;Шаблон&amp;quot;, &amp;quot;Обсуждение шаблона&amp;quot;, &amp;quot;Справка&amp;quot;, &amp;quot;Обсуждение справки&amp;quot;, &amp;quot;Категория&amp;quot;, &amp;quot;Обсуждение категории&amp;quot;],&lt;br /&gt;
		&amp;quot;sc&amp;quot;: [&amp;quot;Speciale&amp;quot;, &amp;quot;Contièndha&amp;quot;, &amp;quot;Utente&amp;quot;, &amp;quot;Utente discussioni&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia discussioni&amp;quot;, &amp;quot;Immàgini&amp;quot;, &amp;quot;Immàgini contièndha&amp;quot;, m, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;sk&amp;quot;: [&amp;quot;Médiá&amp;quot;, &amp;quot;Špeciálne&amp;quot;, &amp;quot;Diskusia&amp;quot;, &amp;quot;Redaktor&amp;quot;, &amp;quot;Diskusia s redaktorom&amp;quot;, &amp;quot;Wikipédia&amp;quot;, &amp;quot;Diskusia k Wikipédii&amp;quot;, &amp;quot;Obrázok&amp;quot;, &amp;quot;Diskusia k obrázku&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Diskusia k MediaWiki&amp;quot;, &amp;quot;Šablóna&amp;quot;, &amp;quot;Diskusia k šablóne&amp;quot;, &amp;quot;Pomoc&amp;quot;, &amp;quot;Diskusia k pomoci&amp;quot;, &amp;quot;Kategória&amp;quot;, &amp;quot;Diskusia ku kategórii&amp;quot;],&lt;br /&gt;
		&amp;quot;sl&amp;quot;: [m, &amp;quot;Posebno&amp;quot;, &amp;quot;Pogovor&amp;quot;, &amp;quot;Uporabnik&amp;quot;, &amp;quot;Uporabniški pogovor&amp;quot;, &amp;quot;Wikipedija&amp;quot;, &amp;quot;Pogovor k Wikipediji&amp;quot;, &amp;quot;Slika&amp;quot;, &amp;quot;Pogovor k sliki&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki talk&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;sq&amp;quot;: [m, &amp;quot;Speciale&amp;quot;, &amp;quot;Diskutim&amp;quot;, &amp;quot;Përdoruesi&amp;quot;, &amp;quot;Përdoruesi diskutim&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia diskutim&amp;quot;, &amp;quot;Figura&amp;quot;, &amp;quot;Figura diskutim&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki diskutim&amp;quot;, &amp;quot;Stampa&amp;quot;, &amp;quot;Stampa diskutim&amp;quot;, &amp;quot;Ndihmë&amp;quot;, &amp;quot;Ndihmë diskutim&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;sr&amp;quot;: [m, &amp;quot;Посебно&amp;quot;, &amp;quot;Разговор&amp;quot;, &amp;quot;Корисник&amp;quot;, &amp;quot;Разговор са корисником&amp;quot;, &amp;quot;Википедија&amp;quot;, &amp;quot;Разговор о Википедији&amp;quot;, &amp;quot;Слика&amp;quot;, &amp;quot;Разговор о слици&amp;quot;, &amp;quot;МедијаВики&amp;quot;, &amp;quot;Разговор о МедијаВикију&amp;quot;, &amp;quot;Шаблон&amp;quot;, &amp;quot;Разговор о шаблону&amp;quot;, &amp;quot;Помоћ&amp;quot;, &amp;quot;Разговор о помоћи&amp;quot;, &amp;quot;Категорија&amp;quot;, &amp;quot;Разговор о категорији&amp;quot;, &amp;quot;Портал&amp;quot;, &amp;quot;Разговор о порталу&amp;quot;],&lt;br /&gt;
		&amp;quot;sv&amp;quot;: [m, &amp;quot;Special&amp;quot;, &amp;quot;Diskussion&amp;quot;, &amp;quot;Användare&amp;quot;, &amp;quot;Användardiskussion&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipediadiskussion&amp;quot;, &amp;quot;Bild&amp;quot;, &amp;quot;Bilddiskussion&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki diskussion&amp;quot;, &amp;quot;Mall&amp;quot;, &amp;quot;Malldiskussion&amp;quot;, &amp;quot;Hjälp&amp;quot;, &amp;quot;Hjälp diskussion&amp;quot;, &amp;quot;Kategori&amp;quot;, &amp;quot;Kategoridiskussion&amp;quot;],&lt;br /&gt;
		&amp;quot;ta&amp;quot;: [&amp;quot;ஊடகம்&amp;quot;, &amp;quot;சிறப்பு&amp;quot;, &amp;quot;பேச்சு&amp;quot;, &amp;quot;பயனர்&amp;quot;, &amp;quot;பயனர் பேச்சு&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia பேச்சு&amp;quot;, &amp;quot;படிமம்&amp;quot;, &amp;quot;படிமப் பேச்சு&amp;quot;, &amp;quot;மீடியாவிக்கி&amp;quot;, &amp;quot;மீடியாவிக்கி பேச்சு&amp;quot;, &amp;quot;வார்ப்புரு&amp;quot;, &amp;quot;வார்ப்புரு பேச்சு&amp;quot;, &amp;quot;உதவி&amp;quot;, &amp;quot;உதவி பேச்சு&amp;quot;, &amp;quot;பகுப்பு&amp;quot;, &amp;quot;பகுப்பு பேச்சு&amp;quot;],&lt;br /&gt;
		&amp;quot;th&amp;quot;: [m, &amp;quot;พิเศษ&amp;quot;, &amp;quot;พูดคุย&amp;quot;, &amp;quot;ผู้ใช้&amp;quot;, &amp;quot;คุยเกี่ยวกับผู้ใช้&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia talk&amp;quot;, &amp;quot;ภาพ&amp;quot;, &amp;quot;คุยเกี่ยวกับภาพ&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;คุยเกี่ยวกับ MediaWiki&amp;quot;, &amp;quot;Template&amp;quot;, &amp;quot;Template talk&amp;quot;, &amp;quot;Help&amp;quot;, &amp;quot;Help talk&amp;quot;, &amp;quot;Category&amp;quot;, &amp;quot;Category talk&amp;quot;],&lt;br /&gt;
		&amp;quot;tlh&amp;quot;: [&amp;quot;Doch&amp;quot;, &amp;quot;le&#039;&amp;quot;, &amp;quot;ja&#039;chuq&amp;quot;, &amp;quot;lo&#039;wI&#039;&amp;quot;, &amp;quot;lo&#039;wI&#039; ja&#039;chuq&amp;quot;, &amp;quot;wIqIpe&#039;DIya&amp;quot;, &amp;quot;wIqIpe&#039;DIya ja&#039;chuq&amp;quot;, &amp;quot;nagh beQ&amp;quot;, &amp;quot;nagh beQ ja&#039;chuq&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki ja&#039;chuq&amp;quot;, &amp;quot;chen&#039;ay&#039;&amp;quot;, &amp;quot;chen&#039;ay&#039; ja&#039;chuq&amp;quot;, &amp;quot;QaH&amp;quot;, &amp;quot;QaH ja&#039;chuq&amp;quot;, &amp;quot;Segh&amp;quot;, &amp;quot;Segh ja&#039;chuq&amp;quot;],&lt;br /&gt;
		&amp;quot;tr&amp;quot;: [m, &amp;quot;Özel&amp;quot;, &amp;quot;Tartışma&amp;quot;, &amp;quot;Kullanıcı&amp;quot;, &amp;quot;Kullanıcı mesaj&amp;quot;, &amp;quot;Vikipedi&amp;quot;, &amp;quot;Vikipedi tartışma&amp;quot;, &amp;quot;Resim&amp;quot;, &amp;quot;Resim tartışma&amp;quot;, &amp;quot;MedyaViki&amp;quot;, &amp;quot;MedyaViki tartışma&amp;quot;, &amp;quot;Şablon&amp;quot;, &amp;quot;Şablon tartışma&amp;quot;, &amp;quot;Yardım&amp;quot;, &amp;quot;Yardım tartışma&amp;quot;, &amp;quot;Kategori&amp;quot;, &amp;quot;Kategori tartışma&amp;quot;],&lt;br /&gt;
		&amp;quot;tt&amp;quot;: [m, &amp;quot;Maxsus&amp;quot;, &amp;quot;Bäxäs&amp;quot;, &amp;quot;Äğzä&amp;quot;, &amp;quot;Äğzä bäxäse&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia bäxäse&amp;quot;, &amp;quot;Räsem&amp;quot;, &amp;quot;Räsem bäxäse&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki bäxäse&amp;quot;, &amp;quot;Ürnäk&amp;quot;, &amp;quot;Ürnäk bäxäse&amp;quot;, &amp;quot;Yärdäm&amp;quot;, &amp;quot;Yärdäm bäxäse&amp;quot;, &amp;quot;Törkem&amp;quot;, &amp;quot;Törkem bäxäse&amp;quot;],&lt;br /&gt;
		&amp;quot;uk&amp;quot;: [&amp;quot;Медіа&amp;quot;, &amp;quot;Спеціальні&amp;quot;, &amp;quot;Обговорення&amp;quot;, &amp;quot;Користувач&amp;quot;, &amp;quot;Обговорення користувача&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Обговорення Wikipedia&amp;quot;, &amp;quot;Зображення&amp;quot;, &amp;quot;Обговорення зображення&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Обговорення MediaWiki&amp;quot;, &amp;quot;Шаблон&amp;quot;, &amp;quot;Обговорення шаблону&amp;quot;, &amp;quot;Довідка&amp;quot;, &amp;quot;Обговорення довідки&amp;quot;, &amp;quot;Категорія&amp;quot;, &amp;quot;Обговорення категорії&amp;quot;],&lt;br /&gt;
		&amp;quot;vi&amp;quot;: [&amp;quot;Phương tiện&amp;quot;, &amp;quot;Đặc biệt&amp;quot;, &amp;quot;Thảo luận&amp;quot;, &amp;quot;Thành viên&amp;quot;, &amp;quot;Thảo luận Thành viên&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Thảo luận Wikipedia&amp;quot;, &amp;quot;Hình&amp;quot;, &amp;quot;Thảo luận Hình&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;Thảo luận MediaWiki&amp;quot;, &amp;quot;Tiêu bản&amp;quot;, &amp;quot;Thảo luận Tiêu bản&amp;quot;, &amp;quot;Trợ giúp&amp;quot;, &amp;quot;Thảo luận Trợ giúp&amp;quot;, &amp;quot;Thể loại&amp;quot;, &amp;quot;Thảo luận Thể loại&amp;quot;],&lt;br /&gt;
		&amp;quot;wa&amp;quot;: [m, &amp;quot;Sipeciås&amp;quot;, &amp;quot;Copene&amp;quot;, &amp;quot;Uzeu&amp;quot;, &amp;quot;Uzeu copene&amp;quot;, &amp;quot;Wikipedia&amp;quot;, &amp;quot;Wikipedia copene&amp;quot;, &amp;quot;Imådje&amp;quot;, &amp;quot;Imådje copene&amp;quot;, &amp;quot;MediaWiki&amp;quot;, &amp;quot;MediaWiki copene&amp;quot;, &amp;quot;Modele&amp;quot;, &amp;quot;Modele copene&amp;quot;, &amp;quot;Aidance&amp;quot;, &amp;quot;Aidance copene&amp;quot;, &amp;quot;Categoreye&amp;quot;, &amp;quot;Categoreye copene&amp;quot;]&lt;br /&gt;
	}&lt;br /&gt;
	pg.ns.list = nsLists[pg.wiki.lang] || list;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function namespaceListToRegex(list) {return RegExp(&#039;^(&#039;+list.join(&#039;|&#039;).split(&#039; &#039;).join(&#039;[ _]&#039;)+&#039;):&#039;);};&lt;br /&gt;
// function setNamespaceList is ugly as sin, moved to later in the code&lt;br /&gt;
&lt;br /&gt;
function setNamespaces() {&lt;br /&gt;
	setNamespaceList();&lt;br /&gt;
	pg.ns.withTalkList=[null]; // NB root (article) corresponds with this entry, null&lt;br /&gt;
	pg.ns.talkList=[pg.ns.list[2]];&lt;br /&gt;
&lt;br /&gt;
	// if the number of namespaces changes then this will have to be changed&lt;br /&gt;
	// maybe the easiest way is to specify the arrays by hand as in the comments following the loop&lt;br /&gt;
&lt;br /&gt;
	for (var i=3; i+1&amp;lt;pg.ns.list.length; i=i+2) {&lt;br /&gt;
		pg.ns.withTalkList.push(pg.ns.list[i]);&lt;br /&gt;
		pg.ns.talkList.push(pg.ns.list[i+1]);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// ALERT! SILLY HARDCODED VALUES FOLLOW!&lt;br /&gt;
	pg.ns.special   = pg.ns.list[1];&lt;br /&gt;
	pg.ns.image     = pg.ns.list[7];&lt;br /&gt;
	pg.ns.user      = pg.ns.list[3];&lt;br /&gt;
	pg.ns.category  = pg.ns.list[15];&lt;br /&gt;
	pg.ns.nonArticleList=pg.ns.list.slice(0,2).concat(pg.ns.list.slice(2));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function setRedirs() {&lt;br /&gt;
	var r=&#039;redirect&#039;;&lt;br /&gt;
	var R=&#039;REDIRECT&#039;;&lt;br /&gt;
	var redirLists={&lt;br /&gt;
		&#039;be&#039;:  [ r, &#039;перанакіраваньне&#039; ],&lt;br /&gt;
		&#039;bg&#039;:  [ r, &#039;пренасочване&#039;, &#039;виж&#039; ],&lt;br /&gt;
		&#039;cs&#039;:  [ R, &#039;PŘESMĚRUJ&#039; ],&lt;br /&gt;
		&#039;cy&#039;:  [ r, &#039;ail-cyfeirio&#039; ],&lt;br /&gt;
		&#039;et&#039;:  [ r, &#039;suuna&#039; ],&lt;br /&gt;
		&#039;ga&#039;:  [ r, &#039;athsheoladh&#039; ],&lt;br /&gt;
		&#039;is&#039;:  [ &#039;tilvísun&#039;, &#039;TILVÍSUN&#039;, r ],&lt;br /&gt;
		&#039;mk&#039;:  [ r, &#039;пренасочување&#039;, &#039;види&#039; ],&lt;br /&gt;
		&#039;nds&#039;: [ r, &#039;wiederleiden&#039; ],&lt;br /&gt;
		&#039;nn&#039;:  [ r, &#039;omdiriger&#039; ],&lt;br /&gt;
		&#039;pt&#039;:  [ R, &#039;redir&#039; ],&lt;br /&gt;
		&#039;ru&#039;:  [ R, &#039;ПЕРЕНАПРАВЛЕНИЕ&#039;, &#039;ПЕРЕНАПР&#039;],&lt;br /&gt;
		&#039;sk&#039;:  [ r, &#039;presmeruj&#039; ],&lt;br /&gt;
		&#039;sr&#039;:  [ &#039;Преусмери&#039;, r, &#039;преусмери&#039;, &#039;ПРЕУСМЕРИ&#039; ],&lt;br /&gt;
		&#039;tt&#039;:  [ &#039;yünältü&#039; ],&lt;br /&gt;
		&#039;vi&#039;:  [ r , &#039;đổi&#039; ] // no comma&lt;br /&gt;
	}&lt;br /&gt;
	var redirList=redirLists[ pg.wiki.lang ] || [r, R];&lt;br /&gt;
	// Mediawiki is very tolerant about what comes after the #redirect at the start&lt;br /&gt;
	pg.re.redirect=RegExp(&#039;^\\s*[#](&#039; + redirList.join(&#039;|&#039;) + &#039;).*?\\[{2}([^\\|\\]]*)(|[^\\]]*)?\\]{2}\\s*(.*)&#039;, &#039;i&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setInterwiki() {&lt;br /&gt;
	if (pg.wiki.wikimedia) {&lt;br /&gt;
		pg.wiki.interwiki=&#039;aa|ab|af|ak|als|am|an|ang|ar|arc|as|ast|av|ay|az|ba|be|ber|bg|bh|bi|bm|bn|bdf|bo|br|bs|ca|ce|ceb|ch|cho|chr|chy|co|commons|cr|cs|csb|cu|cv|cy|da|de|dv|dz|el|en|eo|es|et|eu|fa|ff|fi|fiu-vro|fj|fo|fr|fur|fy|ga|gd|gil|gl|gn|got|gu|gv|ha|haw|he|hi|ho|hr|ht|hu|hy|hz|ia|id|ie|ig|ii|ik|io|is|it|iu|ja|jbo|jv|ka|kg|ki|kj|kk|kl|km|kn|ko|kr|ks|ku|kv|kw|ky|la|lad|lan|lb|lg|li|ln|lo|lt|lu|lv|mg|mh|mi|mk|ml|mn|mo|mr|ms|mt|mus|my|na|nah|nap|nb|nd|nds|ne|ng|nl|nn|no|nr|nv|ny|oc|oj|om|or|os|pa|pam|pi|pl|ps|pt|qu|rm|rn|ro|roa-rup|ru|rw|sa|sc|scn|sco|sd|se|sg|sh|si|simple|sk|sl|sm|smg|sn|so|sq|sr|ss|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tlh|tn|to|tpi|tr|ts|tt|tum|tw|ty|ug|uk|ur|uz|ve|vi|vk|vo|wa|war|wen|wo|xh|yi|yo|za|zh|zh-min-nan|zu&#039;;&lt;br /&gt;
		pg.re.interwiki=RegExp(&#039;^&#039;+pg.wiki.interwiki+&#039;:&#039;);&lt;br /&gt;
	} else {&lt;br /&gt;
		pg.wiki.interwiki=null;&lt;br /&gt;
		pg.re.interwiki=RegExp(&#039;^$&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: namespaces.js&lt;br /&gt;
// STARTFILE: selpop.js&lt;br /&gt;
function getEditboxSelection() {&lt;br /&gt;
	// see http://www.webgurusforum.com/8/12/0&lt;br /&gt;
	try {&lt;br /&gt;
		var editbox=document.editform.wpTextbox1;&lt;br /&gt;
	} catch (dang) { return; }&lt;br /&gt;
	// IE, Opera&lt;br /&gt;
	if (document.selection) { return document.selection.createRange().text; }&lt;br /&gt;
	// Mozilla&lt;br /&gt;
	var selStart = editbox.selectionStart;&lt;br /&gt;
	var selEnd = editbox.selectionEnd;&lt;br /&gt;
	return (editbox.value).substring(selStart, selEnd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function doSelectionPopup() {&lt;br /&gt;
	// popup if the selection looks like [[foo|anything afterwards at all&lt;br /&gt;
	// or [[foo|bar]]text without &#039;]]&#039;&lt;br /&gt;
	// or [[foo|bar]]&lt;br /&gt;
	var sel=getEditboxSelection();&lt;br /&gt;
	var open=sel.indexOf(&#039;[[&#039;);&lt;br /&gt;
	var pipe=sel.indexOf(&#039;|&#039;);&lt;br /&gt;
	var close=sel.indexOf(&#039;]]&#039;);&lt;br /&gt;
	if (open == -1 || ( pipe == -1 &amp;amp;&amp;amp; close == -1) ) { return; }&lt;br /&gt;
	if (pipe != -1 &amp;amp;&amp;amp; open &amp;gt; pipe || close != -1 &amp;amp;&amp;amp; open &amp;gt; close) { return; }&lt;br /&gt;
	var article=new Title(sel.substring(open+2, (pipe &amp;lt; 0) ? close : pipe)).urlString();&lt;br /&gt;
	if (close &amp;gt; 0 &amp;amp;&amp;amp; sel.substring(close+2).indexOf(&#039;[[&#039;) &amp;gt;= 0) { return; }&lt;br /&gt;
	var a=document.createElement(&#039;a&#039;);&lt;br /&gt;
	a.href=pg.wiki.titlebase + article;&lt;br /&gt;
	mouseOverWikiLink2(a);&lt;br /&gt;
	if (a.navpopup) {&lt;br /&gt;
		a.navpopup.addHook(function(){runStopPopupTimer(a.navpopup);}, &#039;unhide&#039;, &#039;after&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: selpop.js&lt;br /&gt;
// STARTFILE: navpopup.js&lt;br /&gt;
/**&lt;br /&gt;
   @fileoverview  Defines two classes: {@link Navpopup} and {@link Mousetracker}.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;Navpopup&amp;lt;/code&amp;gt; describes popups: when they appear, where, what&lt;br /&gt;
   they look like and so on.&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;Mousetracker&amp;lt;/code&amp;gt; &amp;quot;captures&amp;quot; the mouse using&lt;br /&gt;
   &amp;lt;code&amp;gt;document.onmousemove&amp;lt;/code&amp;gt;.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates a new Mousetracker.&lt;br /&gt;
   @constructor&lt;br /&gt;
   @class The Mousetracker class. This monitors mouse movements and manages associated hooks.&lt;br /&gt;
*/&lt;br /&gt;
function Mousetracker() {&lt;br /&gt;
	/**&lt;br /&gt;
	   Flag - are we switched on?&lt;br /&gt;
	   @type Boolean&lt;br /&gt;
	*/&lt;br /&gt;
	this.active=false;&lt;br /&gt;
	/**&lt;br /&gt;
	   Array of hook functions.&lt;br /&gt;
	   @private&lt;br /&gt;
	   @type Array&lt;br /&gt;
	*/&lt;br /&gt;
	this.hooks=[];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Adds a hook, to be called when we get events.&lt;br /&gt;
   @param {Function} f A function which is called as&lt;br /&gt;
   &amp;lt;code&amp;gt;f(x,y)&amp;lt;/code&amp;gt;. It should return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; when it&lt;br /&gt;
   wants to be removed, and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; otherwise.&lt;br /&gt;
*/&lt;br /&gt;
Mousetracker.prototype.addHook = function (f) {&lt;br /&gt;
	this.hooks.push(f);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Runs hooks, passing them the x&lt;br /&gt;
   and y coords of the mouse.  Hook functions that return true are&lt;br /&gt;
   passed to {@link Mousetracker#removeHooks} for removal.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Mousetracker.prototype.runHooks = function () {&lt;br /&gt;
	var remove=false;&lt;br /&gt;
	var removeObj={};&lt;br /&gt;
	// this method gets called a LOT -&lt;br /&gt;
	// pre-cache some variables&lt;br /&gt;
	var x=this.x, y=this.y, len = this.hooks.length;&lt;br /&gt;
&lt;br /&gt;
	for (var i=0; i&amp;lt;len; ++i) {&lt;br /&gt;
		//~ run the hook function, and remove it if it returns true&lt;br /&gt;
		if (this.hooks[i](x, y)===true) {&lt;br /&gt;
			remove=true;&lt;br /&gt;
			removeObj[i]=true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (remove) { this.removeHooks(removeObj); }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Removes hooks.&lt;br /&gt;
   @private&lt;br /&gt;
   @param {Object} removeObj An object whose keys are the index&lt;br /&gt;
   numbers of functions for removal, with values that evaluate to true&lt;br /&gt;
*/&lt;br /&gt;
Mousetracker.prototype.removeHooks = function(removeObj) {&lt;br /&gt;
	var newHooks=[];&lt;br /&gt;
	var len = this.hooks.length;&lt;br /&gt;
	for (var i=0; i&amp;lt;len; ++i) {&lt;br /&gt;
		if (! removeObj[i]) { newHooks.push(this.hooks[i]); }&lt;br /&gt;
	}&lt;br /&gt;
	this.hooks=newHooks;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Event handler for mouse wiggles.&lt;br /&gt;
   We simply grab the event, set x and y and run the hooks.&lt;br /&gt;
   This makes the cpu all hot and bothered :-(&lt;br /&gt;
   @private&lt;br /&gt;
   @param {Event} e Mousemove event&lt;br /&gt;
*/&lt;br /&gt;
Mousetracker.prototype.track=function (e) {&lt;br /&gt;
	//log (&#039;Mousetracker.track&#039;);&lt;br /&gt;
	//~ Apparently this is needed in IE.&lt;br /&gt;
	e = e || window.event;&lt;br /&gt;
	var x, y;&lt;br /&gt;
	if (e) {&lt;br /&gt;
		if (e.pageX) { x=e.pageX; y=e.pageY; }&lt;br /&gt;
		else if (typeof e.clientX!=&#039;undefined&#039;) {&lt;br /&gt;
			var left, top, docElt = window.document.documentElement;&lt;br /&gt;
&lt;br /&gt;
			if (docElt) { left=docElt.scrollLeft; }&lt;br /&gt;
			left = left || window.document.body.scrollLeft || window.document.scrollLeft || 0;&lt;br /&gt;
&lt;br /&gt;
			if (docElt) { top=docElt.scrollTop; }&lt;br /&gt;
			top = top || window.document.body.scrollTop || window.document.scrollTop || 0;&lt;br /&gt;
&lt;br /&gt;
			x=e.clientX + left;&lt;br /&gt;
			y=e.clientY + top;&lt;br /&gt;
		} else { return; }&lt;br /&gt;
		this.x = x;&lt;br /&gt;
		this.y = y;&lt;br /&gt;
		if (this.hooks.length === 0) { return; }&lt;br /&gt;
		if (typeof this.lastHook_x != &#039;number&#039;) { this.lastHook_x = -100; this.lastHook_y=-100; }&lt;br /&gt;
		var diff = (this.lastHook_x - x)*(this.lastHook_y - y);&lt;br /&gt;
		diff = (diff &amp;gt;= 0) ? diff : -diff;&lt;br /&gt;
		if ( diff &amp;gt; 1 ) {&lt;br /&gt;
			this.lastHook_x=x;&lt;br /&gt;
			this.lastHook_y=y;&lt;br /&gt;
			this.runHooks();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Sets things in motion, unless they are already that is, registering an event handler on &amp;lt;code&amp;gt;document.onmousemove&amp;lt;/code&amp;gt;.&lt;br /&gt;
   A half-hearted attempt is made to preserve the old event handler if there is one.&lt;br /&gt;
*/&lt;br /&gt;
Mousetracker.prototype.enable = function () {&lt;br /&gt;
	if (this.active) { return; }&lt;br /&gt;
	this.active=true;&lt;br /&gt;
	//~ Save the current handler for mousemove events. This isn&#039;t too&lt;br /&gt;
	//~ robust, of course.&lt;br /&gt;
	this.savedHandler=document.onmousemove;&lt;br /&gt;
	//~ Gotta save @tt{this} again for the closure, and use apply for&lt;br /&gt;
	//~ the member function.&lt;br /&gt;
	var savedThis=this;&lt;br /&gt;
	document.onmousemove=function (e) {savedThis.track.apply(savedThis, [e]);};&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Disables the tracker, removing the event handler.&lt;br /&gt;
*/&lt;br /&gt;
Mousetracker.prototype.disable = function () {&lt;br /&gt;
	if (!this.active) { return; }&lt;br /&gt;
	if (typeof this.savedHandler==&#039;function&#039;) {&lt;br /&gt;
		document.onmousemove=this.savedHandler;&lt;br /&gt;
	} else { delete document.onmousemove; }&lt;br /&gt;
	this.active=false;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates a new Navpopup.&lt;br /&gt;
   Gets a UID for the popup and&lt;br /&gt;
   @param init Contructor object. If &amp;lt;code&amp;gt;init.draggable&amp;lt;/code&amp;gt; is true or absent, the popup becomes draggable.&lt;br /&gt;
   @constructor&lt;br /&gt;
   @class The Navpopup class. This generates popup hints, and does some management of them.&lt;br /&gt;
*/&lt;br /&gt;
function Navpopup(init) {&lt;br /&gt;
	//alert(&#039;new Navpopup(init)&#039;);&lt;br /&gt;
	/** UID for each Navpopup instance.&lt;br /&gt;
	    Read-only.&lt;br /&gt;
	    @type integer&lt;br /&gt;
	*/&lt;br /&gt;
	this.uid=Navpopup.uid++;&lt;br /&gt;
	/**&lt;br /&gt;
	   Read-only flag for current visibility of the popup.&lt;br /&gt;
	   @type boolean&lt;br /&gt;
	   @private&lt;br /&gt;
	*/&lt;br /&gt;
	this.visible=false;&lt;br /&gt;
	/** Flag to be set when we want to cancel a previous request to&lt;br /&gt;
	    show the popup in a little while.&lt;br /&gt;
	    @private&lt;br /&gt;
	    @type boolean&lt;br /&gt;
	*/&lt;br /&gt;
	this.noshow=false;&lt;br /&gt;
	/** Categorised list of hooks.&lt;br /&gt;
	    @see #runHooks&lt;br /&gt;
	    @see #addHook&lt;br /&gt;
	    @private&lt;br /&gt;
	    @type Object&lt;br /&gt;
	*/&lt;br /&gt;
	this.hooks={&lt;br /&gt;
		&#039;create&#039;: [],&lt;br /&gt;
		&#039;unhide&#039;: [],&lt;br /&gt;
		&#039;hide&#039;: []&lt;br /&gt;
	};&lt;br /&gt;
	/** List of downloads associated with the popup.&lt;br /&gt;
	    @private&lt;br /&gt;
	    @type Array&lt;br /&gt;
	*/&lt;br /&gt;
	this.downloads=[];&lt;br /&gt;
	/** Number of uncompleted downloads.&lt;br /&gt;
	    @type integer&lt;br /&gt;
	*/&lt;br /&gt;
	this.pending=null;&lt;br /&gt;
	/** Tolerance in pixels when detecting whether the mouse has left the popup.&lt;br /&gt;
	    @type integer&lt;br /&gt;
	*/&lt;br /&gt;
	this.fuzz=5;&lt;br /&gt;
	/** Flag to toggle running {@link #limitHorizontalPosition} to regulate the popup&#039;s position.&lt;br /&gt;
	    @type boolean&lt;br /&gt;
	*/&lt;br /&gt;
	this.constrained=true;&lt;br /&gt;
	/** The popup width in pixels.&lt;br /&gt;
	    @private&lt;br /&gt;
	    @type integer&lt;br /&gt;
	*/&lt;br /&gt;
	this.width=0;&lt;br /&gt;
	/** The popup width in pixels.&lt;br /&gt;
	    @private&lt;br /&gt;
	    @type integer&lt;br /&gt;
	*/&lt;br /&gt;
	this.height=0;&lt;br /&gt;
	/** The main content DIV element.&lt;br /&gt;
	    @type HTMLDivElement&lt;br /&gt;
	*/&lt;br /&gt;
	this.mainDiv=null;&lt;br /&gt;
	this.createMainDiv();&lt;br /&gt;
&lt;br /&gt;
	if (!init || typeof init.draggable==&#039;undefined&#039; || init.draggable) {&lt;br /&gt;
		this.makeDraggable();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   A UID for each Navpopup. This constructor property is just a counter.&lt;br /&gt;
   @type integer&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.uid=0;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Retrieves the {@link #visible} attribute, indicating whether the popup is currently visible.&lt;br /&gt;
   @type boolean&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.isVisible=function() {&lt;br /&gt;
	return this.visible;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Repositions popup using CSS style.&lt;br /&gt;
   @private&lt;br /&gt;
   @param {integer} x x-coordinate (px)&lt;br /&gt;
   @param {integer} y y-coordinate (px)&lt;br /&gt;
   @param {boolean} noLimitHor Don&#039;t call {@link #limitHorizontalPosition}&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.reposition= function (x,y, noLimitHor) {&lt;br /&gt;
	log (&#039;reposition(&#039;+x+&#039;,&#039;+y+&#039;,&#039;+noLimitHor+&#039;)&#039;);&lt;br /&gt;
	if (typeof x != &#039;undefined&#039; &amp;amp;&amp;amp; x!==null) { this.left=x; }&lt;br /&gt;
	if (typeof y != &#039;undefined&#039; &amp;amp;&amp;amp; y!==null) { this.top=y; }&lt;br /&gt;
	if (typeof this.left != &#039;undefined&#039; &amp;amp;&amp;amp; typeof this.top != &#039;undefined&#039;) {&lt;br /&gt;
		this.mainDiv.style.left=this.left + &#039;px&#039;;&lt;br /&gt;
		this.mainDiv.style.top=this.top + &#039;px&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	if (!noLimitHor) { this.limitHorizontalPosition(); }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Prevents popups from being in silly locations. Hopefully.&lt;br /&gt;
   Should not be run if {@link #constrained} is true.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.limitHorizontalPosition=function() {&lt;br /&gt;
	if (!this.constrained || this.tooWide) { return; }&lt;br /&gt;
	//var x=this.left; //findPosX(this.mainDiv);&lt;br /&gt;
	var x=parseInt(this.mainDiv.style.left, 10);&lt;br /&gt;
	var w=parseInt(this.mainDiv.offsetWidth, 10);&lt;br /&gt;
	var cWidth=document.body.clientWidth;&lt;br /&gt;
	&lt;br /&gt;
	/*&lt;br /&gt;
	  log(&#039;limitHorizontalPosition: x=&#039;+x+&lt;br /&gt;
	    &#039;, this.left=&#039; + this.left +&lt;br /&gt;
	    &#039;, this.width=&#039; + this.width +&lt;br /&gt;
	    &#039;, cWidth=&#039; + cWidth);&lt;br /&gt;
	*/&lt;br /&gt;
&lt;br /&gt;
	if ( (x+w) &amp;gt;= cWidth ||&lt;br /&gt;
	     ( x &amp;gt; 0 &amp;amp;&amp;amp; this.maxWidth &amp;amp;&amp;amp; this.width &amp;lt; this.maxWidth &amp;amp;&amp;amp; this.height &amp;gt; this.width&lt;br /&gt;
	       &amp;amp;&amp;amp; x &amp;gt; cWidth - this.maxWidth ) ) {&lt;br /&gt;
		// This is a very nasty hack. There has to be a better way!&lt;br /&gt;
		// We find the &amp;quot;natural&amp;quot; width of the div by positioning it at the far left&lt;br /&gt;
		// then reset it so that it should be flush right (well, nearly)&lt;br /&gt;
		this.mainDiv.style.left=&#039;-10000px&#039;;&lt;br /&gt;
		this.mainDiv.style.width = this.maxWidth + &#039;px&#039;;&lt;br /&gt;
		var naturalWidth=parseInt(this.mainDiv.offsetWidth, 10);&lt;br /&gt;
		var newLeft=cWidth - naturalWidth - 1;&lt;br /&gt;
		if (newLeft &amp;lt; 0) { newLeft = 0; this.tooWide=true; } // still unstable for really wide popups?&lt;br /&gt;
		log (&#039;limitHorizontalPosition: moving to (&#039;+newLeft + &#039;,&#039;+ this.top+&#039;);&#039; +&lt;br /&gt;
		     &#039; naturalWidth=&#039; + naturalWidth + &#039;, clientWidth=&#039; + cWidth);&lt;br /&gt;
		this.reposition(newLeft, null, true);&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Counter indicating the z-order of the &amp;quot;highest&amp;quot; popup.&lt;br /&gt;
   We start the z-index at 1000 so that popups are above everything&lt;br /&gt;
   else on the screen.&lt;br /&gt;
   @private&lt;br /&gt;
   @type integer&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.highest=1000;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Brings popup to the top of the z-order.&lt;br /&gt;
   We increment the {@link #highest} property of the contructor here.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.raise = function () {&lt;br /&gt;
	this.mainDiv.style.zIndex=Navpopup.highest + 1;&lt;br /&gt;
	++Navpopup.highest;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Shows the popup provided {@link #noshow} is not true.&lt;br /&gt;
   Updates the position, brings the popup to the top of the z-order and unhides it.&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.show = function () {&lt;br /&gt;
	//document.title+=&#039;s&#039;;&lt;br /&gt;
	if (this.noshow) { return; }&lt;br /&gt;
	//document.title+=&#039;t&#039;;&lt;br /&gt;
	this.reposition();&lt;br /&gt;
	this.raise();&lt;br /&gt;
	this.unhide();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Runs the {@link #show} method in a little while, unless we&#039;re&lt;br /&gt;
   already visible.&lt;br /&gt;
   @param {integer} time Delay in milliseconds&lt;br /&gt;
   @see #showSoonIfStable&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.showSoon = function (time) {&lt;br /&gt;
	if (this.visible) { return; }&lt;br /&gt;
	this.noshow=false;&lt;br /&gt;
	//~ We have to save the value of @tt{this} so that the closure below&lt;br /&gt;
	//~ works.&lt;br /&gt;
	var savedThis=this;&lt;br /&gt;
	//this.start_x = Navpopup.tracker.x;&lt;br /&gt;
	//this.start_y = Navpopup.tracker.y;&lt;br /&gt;
	pop.runOnce(function () {&lt;br /&gt;
		if (Navpopup.tracker.active) {&lt;br /&gt;
			savedThis.reposition.apply(savedThis, [Navpopup.tracker.x + 2, Navpopup.tracker.y + 2]);&lt;br /&gt;
		}&lt;br /&gt;
		//~ Have to use apply to invoke his member function here&lt;br /&gt;
		savedThis.show.apply(savedThis, []);&lt;br /&gt;
	}, time);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Checks to see if the mouse pointer has&lt;br /&gt;
   stabilised (checking every &amp;lt;code&amp;gt;time&amp;lt;/code&amp;gt;/2 milliseconds) and runs the&lt;br /&gt;
   {@link #show} method if it has. This method makes {@link #showSoon} redundant.&lt;br /&gt;
   @param {integer} time The minimum time (ms) before the popup may be shown.&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.showSoonIfStable = function (time) {&lt;br /&gt;
	log (&#039;showSoonIfStable, time=&#039;+time);&lt;br /&gt;
	if (this.visible) { return; }&lt;br /&gt;
	this.noshow = false;&lt;br /&gt;
&lt;br /&gt;
	//~ initialize these variables so that we never run @tt{show} after&lt;br /&gt;
	//~ just half the time&lt;br /&gt;
	this.stable_x = -10000; this.stable_y = -10000;&lt;br /&gt;
&lt;br /&gt;
	var stableShow = function() {&lt;br /&gt;
		log(&#039;stableShow called&#039;);&lt;br /&gt;
		var new_x = Navpopup.tracker.x, new_y = Navpopup.tracker.y;&lt;br /&gt;
		var dx = savedThis.stable_x - new_x, dy = savedThis.stable_y - new_y;&lt;br /&gt;
		var fuzz2 = 0; // savedThis.fuzz * savedThis.fuzz;&lt;br /&gt;
		//document.title += &#039;[&#039; + [savedThis.stable_x,new_x, savedThis.stable_y,new_y, dx, dy, fuzz2].join(&#039;,&#039;) + &#039;] &#039;;&lt;br /&gt;
		if ( dx * dx &amp;lt;= fuzz2 &amp;amp;&amp;amp; dy * dy &amp;lt;= fuzz2 ) {&lt;br /&gt;
			log (&#039;mouse is stable&#039;);&lt;br /&gt;
			clearInterval(savedThis.showSoonStableTimer);&lt;br /&gt;
			savedThis.reposition.apply(savedThis, [new_x + 2, new_y + 2]);&lt;br /&gt;
			savedThis.show.apply(savedThis, []);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		savedThis.stable_x = new_x; savedThis.stable_y = new_y;&lt;br /&gt;
	};&lt;br /&gt;
	var savedThis = this;&lt;br /&gt;
	this.showSoonStableTimer = setInterval(stableShow, time/2);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Makes the popup unhidable until we call {@link #unstick}.&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.stick=function() {&lt;br /&gt;
	this.noshow=false;&lt;br /&gt;
	this.sticky=true;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Allows the popup to be hidden.&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.unstick=function() {&lt;br /&gt;
	this.sticky=false;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Sets the {@link #noshow} flag and hides the popup. This should be called&lt;br /&gt;
   when the mouse leaves the link before&lt;br /&gt;
   (or after) it&#039;s actually been displayed.&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.banish = function () {&lt;br /&gt;
	log (&#039;banish called&#039;);&lt;br /&gt;
	// hide and prevent showing with showSoon in the future&lt;br /&gt;
	this.noshow=true;&lt;br /&gt;
	if (this.showSoonStableTimer) {&lt;br /&gt;
		log(&#039;clearing showSoonStableTimer&#039;);&lt;br /&gt;
		clearInterval(this.showSoonStableTimer);&lt;br /&gt;
	}&lt;br /&gt;
	this.hide();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Runs hooks added with {@link #addHook}.&lt;br /&gt;
   @private&lt;br /&gt;
   @param {String} key Key name of the {@link #hooks} array - one of &#039;create&#039;, &#039;unhide&#039;, &#039;hide&#039;&lt;br /&gt;
   @param {String} when Controls exactly when the hook is run: either &#039;before&#039; or &#039;after&#039;&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.runHooks = function (key, when) {&lt;br /&gt;
	if (!this.hooks[key]) { return; }&lt;br /&gt;
	var keyHooks=this.hooks[key];&lt;br /&gt;
	var len=keyHooks.length;&lt;br /&gt;
	for (var i=0; i&amp;lt; len; ++i) {&lt;br /&gt;
		if (keyHooks[i].when == when) { keyHooks[i].hook.apply(this, []); }&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Adds a hook to the popup. Hook functions are run with &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; set to refer to the Navpopup instance, and no arguments.&lt;br /&gt;
   @param {Function} hook The hook function.&lt;br /&gt;
   @param {String} key Key name of the {@link #hooks} array - one of &#039;create&#039;, &#039;unhide&#039;, &#039;hide&#039;&lt;br /&gt;
   @param {String} when Controls exactly when the hook is run: either &#039;before&#039; or &#039;after&#039;&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.addHook = function ( hook, key, when ) {&lt;br /&gt;
	when = when || &#039;after&#039;;&lt;br /&gt;
	if (!this.hooks[key]) { return; }&lt;br /&gt;
	this.hooks[key].push( {hook: hook, when: when} );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Creates the main DIV element, which contains all the actual popup content.&lt;br /&gt;
   Runs hooks with key &#039;create&#039;.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.createMainDiv = function () {&lt;br /&gt;
	if (this.mainDiv) { return; }&lt;br /&gt;
	this.runHooks(&#039;create&#039;, &#039;before&#039;);&lt;br /&gt;
	var mainDiv=document.createElement(&#039;div&#039;);&lt;br /&gt;
&lt;br /&gt;
	var savedThis=this;&lt;br /&gt;
	mainDiv.onclick=function(e) {savedThis.onclickHandler(e);};&lt;br /&gt;
	mainDiv.className=(this.className) ? this.className : &#039;navpopup_maindiv&#039;;&lt;br /&gt;
	mainDiv.id=mainDiv.className + this.uid;&lt;br /&gt;
&lt;br /&gt;
	mainDiv.style.position=&#039;absolute&#039;;&lt;br /&gt;
	mainDiv.style.display=&#039;none&#039;;&lt;br /&gt;
	mainDiv.className=&#039;navpopup&#039;;&lt;br /&gt;
&lt;br /&gt;
	// easy access to javascript object through DOM functions&lt;br /&gt;
	mainDiv.navpopup=this;&lt;br /&gt;
&lt;br /&gt;
	this.mainDiv=mainDiv;&lt;br /&gt;
	document.body.appendChild(mainDiv);&lt;br /&gt;
	this.runHooks(&#039;create&#039;, &#039;after&#039;);&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
   Calls the {@link #raise} method.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.onclickHandler=function(e) {&lt;br /&gt;
	this.raise();&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
   Makes the popup draggable, using a {@link Drag} object.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.makeDraggable=function(e) {&lt;br /&gt;
	if (!this.mainDiv) { this.createMainDiv(); }&lt;br /&gt;
	var drag=new Drag();&lt;br /&gt;
	drag.startCondition=function(e) {&lt;br /&gt;
		try { if (!e.shiftKey) { return false; } } catch (err) { return false; }&lt;br /&gt;
		return true;&lt;br /&gt;
	};&lt;br /&gt;
	var np=this;&lt;br /&gt;
	drag.endHook=function(x,y) { np.reposition(x,y); };&lt;br /&gt;
	drag.init(this.mainDiv);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/** Hides the popup using CSS. Runs hooks with key &#039;hide&#039;.&lt;br /&gt;
    Sets {@link #visible} appropriately.     {@link #banish} should be called externally instead of this method.&lt;br /&gt;
&lt;br /&gt;
    @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.hide = function () {&lt;br /&gt;
	this.runHooks(&#039;hide&#039;, &#039;before&#039;);&lt;br /&gt;
	this.abortDownloads();&lt;br /&gt;
	if (this.sticky) { return; }&lt;br /&gt;
	if (typeof this.visible != &#039;undefined&#039; &amp;amp;&amp;amp; this.visible) {&lt;br /&gt;
		this.mainDiv.style.display=&#039;none&#039;;&lt;br /&gt;
		this.visible=false;&lt;br /&gt;
	}&lt;br /&gt;
	this.runHooks(&#039;hide&#039;, &#039;after&#039;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/** Shows the popup using CSS. Runs hooks with key &#039;unhide&#039;.&lt;br /&gt;
    Sets {@link #visible} appropriately.   {@link #show} should be called externally instead of this method.&lt;br /&gt;
    @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.unhide = function () {&lt;br /&gt;
	this.runHooks(&#039;unhide&#039;, &#039;before&#039;);&lt;br /&gt;
	if (typeof this.visible != &#039;undefined&#039; &amp;amp;&amp;amp; !this.visible) {&lt;br /&gt;
		this.mainDiv.style.display=&#039;inline&#039;;&lt;br /&gt;
		this.visible=true;&lt;br /&gt;
	}&lt;br /&gt;
	this.runHooks(&#039;unhide&#039;, &#039;after&#039;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Sets the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; attribute of the main div containing the popup content.&lt;br /&gt;
   @param {String} html The HTML to set.&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.setInnerHTML = function (html) {&lt;br /&gt;
	this.mainDiv.innerHTML = html;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Updates the {@link #width} and {@link #height} attributes with the CSS properties.&lt;br /&gt;
   @private&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.updateDimensions = function () {&lt;br /&gt;
	this.width=parseInt(this.mainDiv.offsetWidth, 10);&lt;br /&gt;
	this.height=parseInt(this.mainDiv.offsetHeight, 10);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Checks if the point (x,y) is within {@link #fuzz} of the&lt;br /&gt;
   {@link #mainDiv}.&lt;br /&gt;
   @param {integer} x x-coordinate (px)&lt;br /&gt;
   @param {integer} y y-coordinate (px)&lt;br /&gt;
   @type boolean&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.isWithin = function(x,y) {&lt;br /&gt;
	//~ If we&#039;re not even visible, no point should be considered as&lt;br /&gt;
	//~ being within the popup.&lt;br /&gt;
	if (!this.visible) { return false; }&lt;br /&gt;
	this.updateDimensions();&lt;br /&gt;
	var fuzz=this.fuzz || 0;&lt;br /&gt;
	//~ Use a simple box metric here.&lt;br /&gt;
	return (x+fuzz &amp;gt;= this.left &amp;amp;&amp;amp; x-fuzz &amp;lt;= this.left + this.width &amp;amp;&amp;amp;&lt;br /&gt;
		y+fuzz &amp;gt;= this.top  &amp;amp;&amp;amp; y-fuzz &amp;lt;= this.top  + this.height);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   Adds a download to {@link #downloads}.&lt;br /&gt;
   @param {Downloader} download&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.addDownload=function(download) {&lt;br /&gt;
	if (!download) { return; }&lt;br /&gt;
	this.downloads.push(download);&lt;br /&gt;
};&lt;br /&gt;
/**&lt;br /&gt;
   Aborts the downloads listed in {@link #downloads}.&lt;br /&gt;
   @see Downloader#abort&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.prototype.abortDownloads=function() {&lt;br /&gt;
	for(var i=0; i&amp;lt;this.downloads.length; ++i) {&lt;br /&gt;
		var d=this.downloads[i];&lt;br /&gt;
		if (d &amp;amp;&amp;amp; d.abort) { d.abort(); }&lt;br /&gt;
	}&lt;br /&gt;
	this.downloads=[];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
   A {@link Mousetracker} instance which is a property of the constructor (pseudo-global).&lt;br /&gt;
*/&lt;br /&gt;
Navpopup.tracker=new Mousetracker();&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: navpopup.js&lt;br /&gt;
// STARTFILE: diff.js&lt;br /&gt;
/*&lt;br /&gt;
 * Javascript Diff Algorithm&lt;br /&gt;
 *  By John Resig (http://ejohn.org/) and [[:en:User:Lupin]]&lt;br /&gt;
 *&lt;br /&gt;
 * More Info:&lt;br /&gt;
 *  http://ejohn.org/projects/javascript-diff-algorithm/&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
function diffEscape(n) {&lt;br /&gt;
	return n.entify();&lt;br /&gt;
}&lt;br /&gt;
function delFmt(x) {&lt;br /&gt;
	if (!x.length) { return &#039;&#039;; }&lt;br /&gt;
	return &amp;quot;&amp;lt;del style=&#039;background:#FFE6E6;&#039;&amp;gt;&amp;quot; + /*diffEscape*/(x.join(&#039;&#039;)).split(&#039;\n&#039;).join(&#039;&amp;amp;para;\n&#039;) +&amp;quot;&amp;lt;/del&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
function insFmt(x) {&lt;br /&gt;
	if (!x.length) { return &#039;&#039;; }&lt;br /&gt;
	return &amp;quot;&amp;lt;ins style=&#039;background:#AAFFEE;&#039;&amp;gt;&amp;quot; + /*diffEscape*/(x.join(&#039;&#039;)).split(&#039;\n&#039;).join(&#039;&amp;amp;para;\n&#039;) +&amp;quot;&amp;lt;/ins&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function copyDiffObj(x){&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	for (var i=0; i&amp;lt;x.length; ++i) {&lt;br /&gt;
		if (typeof x[i] == &#039;string&#039;) { ret[i]=x[i]; }&lt;br /&gt;
		else {&lt;br /&gt;
			ret[i]={};&lt;br /&gt;
			for (var prop in x[i]) { ret[i][prop]=x[i][prop]; }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function countCrossings(a, b, i, eject) {&lt;br /&gt;
	// count the crossings on the edge starting at b[i]&lt;br /&gt;
	if (!b[i].row &amp;amp;&amp;amp; b[i].row !== 0) { return -1; }&lt;br /&gt;
	var count=0;&lt;br /&gt;
	for (var j=0; j&amp;lt;a.length; ++j) {&lt;br /&gt;
		if (!a[j].row &amp;amp;&amp;amp; a[j].row !== 0) { continue; }&lt;br /&gt;
		if ( (j-b[i].row)*(i-a[j].row) &amp;gt; 0) {&lt;br /&gt;
			if(eject) { return true; }&lt;br /&gt;
			count++;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return count;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function untangle( a, b) {&lt;br /&gt;
	// try to remove crossing edges from an ordered bipartite graph,&lt;br /&gt;
	// removing the least number possible&lt;br /&gt;
	var aa=copyDiffObj(a);&lt;br /&gt;
	var bb=copyDiffObj(b);&lt;br /&gt;
&lt;br /&gt;
	// remove the edge with the largest number of crossings until no&lt;br /&gt;
	// crossings remain&lt;br /&gt;
	do {&lt;br /&gt;
		var maxCrossings=0;&lt;br /&gt;
		var worstEdge=null;&lt;br /&gt;
		for (var i=0; i&amp;lt;bb.length; ++i) {&lt;br /&gt;
			var c=countCrossings(aa,bb,i);&lt;br /&gt;
			if (c &amp;gt; maxCrossings) { maxCrossings=c; worstEdge=i; }&lt;br /&gt;
		}&lt;br /&gt;
		if (worstEdge || worstEdge === 0) {&lt;br /&gt;
			aa[ bb[worstEdge].row ] = aa[ bb[worstEdge].row ].text;&lt;br /&gt;
			bb[worstEdge] = bb[worstEdge].text;&lt;br /&gt;
		}&lt;br /&gt;
	} while (maxCrossings &amp;gt; 0);&lt;br /&gt;
	return { a: aa, b: bb };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function max(a,b){return a&amp;lt;b ? b : a;}&lt;br /&gt;
function min(a,b){return a&amp;gt;b ? b : a;}&lt;br /&gt;
&lt;br /&gt;
function shortenDiffString(str, context) {&lt;br /&gt;
	var re=RegExp(&#039;(&amp;lt;del[\\s\\S]*?&amp;lt;/del&amp;gt;|&amp;lt;ins[\\s\\S]*?&amp;lt;/ins&amp;gt;)&#039;);&lt;br /&gt;
	var splitted=str.parenSplit(re);&lt;br /&gt;
	var ret=[&#039;&#039;];&lt;br /&gt;
	for (var i=0; i&amp;lt;splitted.length; i+=2) {&lt;br /&gt;
		if (splitted[i].length &amp;lt; 2*context) {&lt;br /&gt;
			ret[ret.length-1] += splitted[i];&lt;br /&gt;
			if (i+1&amp;lt;splitted.length) { ret[ret.length-1] += splitted[i+1]; }&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			if (i &amp;gt; 0) { ret[ret.length-1] += splitted[i].substring(0,context); }&lt;br /&gt;
			if (i+1 &amp;lt; splitted.length) { ret.push(splitted[i].substring(splitted[i].length-context) + splitted[i+1]); }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	while (ret.length &amp;gt; 0 &amp;amp;&amp;amp; !ret[0]) {&lt;br /&gt;
		ret = ret.slice(1);&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function diffString( o, n, simpleSplit, slow ) {&lt;br /&gt;
	var splitRe=RegExp(&#039;([[]{2}|[\]]{2}|[{]{2,3}|[}]{2,3}|[|]|=|[*:]+|\\b)&#039;);&lt;br /&gt;
&lt;br /&gt;
	o=diffEscape(o); n=diffEscape(n);&lt;br /&gt;
	var out, i;&lt;br /&gt;
	if (simpleSplit) { out = diff( o.split(/\b/), n.split(/\b/) ); }&lt;br /&gt;
	else { out = diff( o.parenSplit(splitRe), n.parenSplit(splitRe) ); }&lt;br /&gt;
	var str = &amp;quot;&amp;quot;;&lt;br /&gt;
	var acc=[]; // accumulator for prettier output&lt;br /&gt;
&lt;br /&gt;
	// crossing pairings -- &#039;A B&#039; vs &#039;B A&#039; -- cause problems, so let&#039;s iron them out&lt;br /&gt;
	if (slow) {&lt;br /&gt;
		var untangled=untangle(out.o, out.n); // &amp;lt;-- too slow!&lt;br /&gt;
		out.o=untangled.a; out.n=untangled.b;&lt;br /&gt;
	} else {&lt;br /&gt;
		var maxOutputPair=0;&lt;br /&gt;
		for (i=0; i&amp;lt;out.n.length; ++i) {&lt;br /&gt;
			if ( out.n[i].row || out.n[i].row === 0 ) {&lt;br /&gt;
				if( maxOutputPair &amp;gt; out.n[i].row ) {&lt;br /&gt;
					// tangle - delete pairing&lt;br /&gt;
					out.o[ out.n[i].row ]=out.o[ out.n[i].row ].text;&lt;br /&gt;
					out.n[i]=out.n[i].text;&lt;br /&gt;
				}&lt;br /&gt;
				if (maxOutputPair &amp;lt; out.n[i].row) { maxOutputPair = out.n[i].row; }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// output the stuff preceding the first paired old line&lt;br /&gt;
	for (i=0; i&amp;lt;out.o.length &amp;amp;&amp;amp; (!out.o[i].text &amp;amp;&amp;amp; out.o[i] !== 0); ++i) { acc.push( out.o[i] ); }&lt;br /&gt;
	str += delFmt(acc); acc=[];&lt;br /&gt;
&lt;br /&gt;
	// main loop&lt;br /&gt;
	for ( i = 0; i &amp;lt; out.n.length; ++i ) {&lt;br /&gt;
		// output unpaired new &amp;quot;lines&amp;quot;&lt;br /&gt;
		while ( i &amp;lt; out.n.length &amp;amp;&amp;amp; ( !out.n[i].text &amp;amp;&amp;amp; out.n[i].text !== &#039;&#039; ) ) { acc.push( out.n[i++] ); }&lt;br /&gt;
		str += insFmt(acc); acc=[];&lt;br /&gt;
		if ( i &amp;lt; out.n.length ) { // this new &amp;quot;line&amp;quot; is paired with the (out.n[i].row)th old &amp;quot;line&amp;quot;&lt;br /&gt;
			str += out.n[i].text;&lt;br /&gt;
			// output unpaired old rows starting after this new line&#039;s partner&lt;br /&gt;
			var m = out.n[i].row + 1;&lt;br /&gt;
			while ( m &amp;lt; out.o.length &amp;amp;&amp;amp; !out.o[m].text &amp;amp;&amp;amp; out.o[m].text !== &#039;&#039; ) { acc.push ( out.o[m++] ); }&lt;br /&gt;
			str += delFmt(acc); acc=[];&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object&lt;br /&gt;
window.jsReservedProperties=RegExp(&#039;^(constructor|prototype|__((define|lookup)[GS]etter)__|eval|hasOwnProperty|propertyIsEnumerable|to(Source|String|LocaleString)|(un)?watch|valueOf)$&#039;);&lt;br /&gt;
// FIXME: use obj.hasOwnProperty instead of this kludge!&lt;br /&gt;
&lt;br /&gt;
window.diffBugAlerts=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function diffBugAlert(word) {&lt;br /&gt;
	if (diffBugAlerts.indexOf(word+&#039;\n&#039;)==-1) {&lt;br /&gt;
		diffBugAlerts+=word+&#039;\n&#039;;&lt;br /&gt;
		alert(&#039;Bad word: &#039;+word+&#039;\n\nPlease report this bug.&#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function diff( o, n ) {&lt;br /&gt;
	var ns = {};&lt;br /&gt;
	var os = {};&lt;br /&gt;
	var i;&lt;br /&gt;
&lt;br /&gt;
	// pass 1: make hashtable ns with new rows as keys&lt;br /&gt;
	for ( i = 0; i &amp;lt; n.length; i++ ) {&lt;br /&gt;
		if ( jsReservedProperties.test(n[i]) ) { n[i] += &#039;&amp;lt;!-- --&amp;gt;&#039;; }&lt;br /&gt;
		if ( !ns[ n[i] ] ) {&lt;br /&gt;
			ns[ n[i] ] = { rows: [], o: null };&lt;br /&gt;
		}&lt;br /&gt;
		try { ns[ n[i] ].rows.push( i ); } catch (err) { diffBugAlert(n[i]); }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pass 2: make hashtable os with old rows as keys&lt;br /&gt;
	for ( i = 0; i &amp;lt; o.length; i++ ) {&lt;br /&gt;
		if ( jsReservedProperties.test(o[i]) ) { o[i] += &#039;&amp;lt;!-- --&amp;gt;&#039;; }&lt;br /&gt;
		if ( !os[ o[i] ] ) {&lt;br /&gt;
			os[ o[i] ] = { rows: [], n: null };&lt;br /&gt;
		}&lt;br /&gt;
		try {os[ o[i] ].rows.push( i ); } catch (err) { diffBugAlert(n[i]); }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pass 3: pair unique new rows and matching unique old rows&lt;br /&gt;
	for ( i in ns ) {&lt;br /&gt;
		if ( ns[i].rows.length == 1 &amp;amp;&amp;amp; typeof(os[i]) != &amp;quot;undefined&amp;quot; &amp;amp;&amp;amp; os[i].rows.length == 1 ) {&lt;br /&gt;
			n[ ns[i].rows[0] ] = { text: n[ ns[i].rows[0] ], row: os[i].rows[0] };&lt;br /&gt;
			o[ os[i].rows[0] ] = { text: o[ os[i].rows[0] ], row: ns[i].rows[0] };&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pass 4: pair matching rows immediately following paired rows (not necessarily unique)&lt;br /&gt;
	for ( i = 0; i &amp;lt; n.length - 1; i++ ) {&lt;br /&gt;
		if ( ( n[i].text || n[i].text===&#039;&#039; )  &amp;amp;&amp;amp; ( ! n[i+1].text &amp;amp;&amp;amp; n[i+1].text !== &#039;&#039; ) &amp;amp;&amp;amp;&lt;br /&gt;
		     n[i].row &amp;lt; o.length - 1 &amp;amp;&amp;amp; ( ! o[ n[i].row + 1 ].text || o[ n[i].row + 1 ].text === &#039;&#039; ) &amp;amp;&amp;amp;&lt;br /&gt;
		     n[i+1] == o[ n[i].row + 1 ] ) {&lt;br /&gt;
			n[i+1] = { text: n[i+1], row: n[i].row + 1 };&lt;br /&gt;
			o[n[i].row+1] = { text: o[n[i].row+1], row: i + 1 };&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pass 5: pair matching rows immediately preceding paired rows (not necessarily unique)&lt;br /&gt;
	for ( i = n.length - 1; i &amp;gt; 0; i-- ) {&lt;br /&gt;
		if ( ( n[i].text || n[i].text===&#039;&#039; ) &amp;amp;&amp;amp; ( ! n[i-1].text &amp;amp;&amp;amp; n[i-1].text !== &#039;&#039; ) &amp;amp;&amp;amp;&lt;br /&gt;
		     n[i].row &amp;gt; 0 &amp;amp;&amp;amp; ( ! o[ n[i].row - 1 ].text || o[ n[i].row - 1 ].text=== &#039;&#039; ) &amp;amp;&amp;amp;&lt;br /&gt;
		     n[i-1] == o[ n[i].row - 1 ] ) {&lt;br /&gt;
			n[i-1] = { text: n[i-1], row: n[i].row - 1 };&lt;br /&gt;
			o[n[i].row-1] = { text: o[n[i].row-1], row: i - 1 };&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return { o: o, n: n };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: diff.js&lt;br /&gt;
// STARTFILE: init.js&lt;br /&gt;
function setSiteInfo() {&lt;br /&gt;
	pg.wiki.hostname = location.hostname; // use in preference to location.hostname for flexibility (?)&lt;br /&gt;
	pg.wiki.lang = pg.wiki.hostname.split(&#039;.&#039;)[0];&lt;br /&gt;
	pg.wiki.wikimedia=RegExp(&#039;(wiki([pm]edia|source|books|news|quote)|wiktionary)[.]org&#039;).test(pg.wiki.hostname);&lt;br /&gt;
	pg.wiki.wikia=RegExp(&#039;[.]wikia[.]com$&#039;, &#039;i&#039;).test(pg.wiki.hostname);&lt;br /&gt;
	pg.wiki.isLocal=RegExp(&#039;^localhost&#039;).test(pg.wiki.hostname);&lt;br /&gt;
	pg.wiki.commons=&#039;commons.wikimedia.org&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setTitleBase() {&lt;br /&gt;
	var articlePath=&#039;&#039;; // as in http://some.thing.com/wiki/Article&lt;br /&gt;
&lt;br /&gt;
	// default mediawiki setting is paths like http://some.thing.com/articlePath/index.php?title=foo&lt;br /&gt;
	var botInterfacePath = articlePath;&lt;br /&gt;
&lt;br /&gt;
	if (pg.wiki.wikimedia) { botInterfacePath = &#039;&#039;; } // as in http://some.thing.com/w/index.php?title=foo&lt;br /&gt;
	else if (pg.wiki.wikia) { botInterfacePath = &#039;&#039;; }&lt;br /&gt;
&lt;br /&gt;
	var titletail = joinPath([botInterfacePath, &#039;/&#039;]);&lt;br /&gt;
&lt;br /&gt;
	// other sites may need to add code here to set titletail depending on how their urls work&lt;br /&gt;
&lt;br /&gt;
	pg.wiki.titlebase = location.protocol + &#039;//&#039; + pg.wiki.hostname + &#039;/&#039;;&lt;br /&gt;
	pg.wiki.wikibase  = location.protocol + &#039;//&#039; + joinPath([pg.wiki.hostname, botInterfacePath]);&lt;br /&gt;
&lt;br /&gt;
	pg.wiki.botInterfacePath = botInterfacePath;&lt;br /&gt;
	pg.wiki.articlePath = articlePath;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function removeNulls(list) {&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	for (var i=0; i&amp;lt;list.length; ++i) {&lt;br /&gt;
		if (list[i]) {&lt;br /&gt;
			ret.push(list[i]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
function joinPath(list) {&lt;br /&gt;
	return removeNulls(list).join(&#039;/&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// Global regexps&lt;br /&gt;
&lt;br /&gt;
function setMainRegex() {&lt;br /&gt;
	var reStart=&#039;[^:]*://&#039;;&lt;br /&gt;
	var preTitles = joinPath([literalizeRegex(pg.wiki.botInterfacePath), &#039;(?:index[.]php|wiki[.]phtml)[?]title=&#039;]);&lt;br /&gt;
	// slightly ugly hack when pg.wiki.articlePath is empty&lt;br /&gt;
	preTitles += &#039;|&#039; + literalizeRegex( ( pg.wiki.articlePath ? pg.wiki.articlePath + &#039;/&#039; : &#039;&#039;));&lt;br /&gt;
&lt;br /&gt;
	var reEnd=&#039;/(&#039; + preTitles + &#039;)([^&amp;amp;?]*)&#039;;&lt;br /&gt;
	pg.re.main = RegExp(reStart + literalizeRegex(pg.wiki.hostname) + reEnd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setRegexps() {&lt;br /&gt;
	setMainRegex();&lt;br /&gt;
	pg.re.stub= RegExp(&#039;stub[}][}]|This .*-related article is a .*stub&#039;, &#039;im&#039;) ;&lt;br /&gt;
	pg.re.disambig=RegExp(&#039;([{][{]\\s*disambig|disambig\\s*[}][}]|disamb\\s*[}][}]|dab\\s*[}][}])&#039; +&lt;br /&gt;
			      &#039;|[{][{]\\s*(((geo|hn)dis)|[234]cc)(\\s*[|][^}]*)?\\s*[}][}]&#039; + // explicit, whole template names on this line&lt;br /&gt;
			      &#039;|is a .*disambiguation.*page&#039;, &#039;im&#039;) ;&lt;br /&gt;
&lt;br /&gt;
	pg.re.urlNoPopup=RegExp(&#039;((title=|/)&#039; + pg.ns.special + &#039;:|section=[0-9])&#039;) ;&lt;br /&gt;
	pg.re.contribs  =RegExp(&#039;(title=|/)&#039;  + pg.ns.special + &#039;:Contributions&#039; + &#039;(&amp;amp;target=|/|/&#039; + pg.ns.user+&#039;:)(.*)&#039;) ;&lt;br /&gt;
	pg.re.email     =RegExp(&#039;(title=|/)&#039;  + pg.ns.special + &#039;:Emailuser&#039;     + &#039;(&amp;amp;target=|/|/&#039; + pg.ns.user+&#039;:)(.*)&#039;) ;&lt;br /&gt;
&lt;br /&gt;
	// note: tries to get images in infobox templates too, e.g. movie pages, album pages etc&lt;br /&gt;
	//                      (^|\[\[)image: *([^|\]]*[^|\] ]) *&lt;br /&gt;
	//                      (^|\[\[)image: *([^|\]]*[^|\] ])([^0-9\]]*([0-9]+) *px)?&lt;br /&gt;
	//                                                        $4 = 120 as in 120px&lt;br /&gt;
	pg.re.image = RegExp(&#039;(^|\\[\\[)&#039; + pg.ns.image + &#039;: *([^|\\]]*[^|\\] ])([^0-9\\]]*([0-9]+) *px)?|\\n *[|]? *(image|cover) *= *([^|]*?) *[|]? *\\n&#039;, &#039;img&#039;) ;&lt;br /&gt;
	pg.re.imageBracketCount = 6;&lt;br /&gt;
&lt;br /&gt;
	pg.re.category = RegExp(&#039;\\[\\[&#039; +pg.ns.category + &#039;: *([^|\\]]*[^|\\] ]) *&#039;, &#039;i&#039;);&lt;br /&gt;
	pg.re.categoryBracketCount = 1;&lt;br /&gt;
&lt;br /&gt;
	pg.re.ipUser=RegExp(&#039;(&#039;+pg.ns.user+&#039;:)?&#039; + &#039;((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}&#039; +&lt;br /&gt;
			    &#039;(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])&#039;);&lt;br /&gt;
&lt;br /&gt;
	// FIXME replace with general parameter parsing function, this is daft&lt;br /&gt;
	pg.re.oldid=RegExp(&#039;[?&amp;amp;]oldid=([^&amp;amp;]*)&#039;);&lt;br /&gt;
	pg.re.diff=RegExp(&#039;[?&amp;amp;]diff=([^&amp;amp;]*)&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// Image sources&lt;br /&gt;
&lt;br /&gt;
function setImageSources() {&lt;br /&gt;
	pg.wiki.imageSources=[];&lt;br /&gt;
&lt;br /&gt;
	// frequently seen thumbs&lt;br /&gt;
	pg.wiki.imageSources.push(&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: true,  width: 180}, // default&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: true,  width: 120} // gallery&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
	// frequently seen thumbs on commons&lt;br /&gt;
	if (pg.wiki.wikimedia &amp;amp;&amp;amp; pg.wiki.hostname!=pg.wiki.commons) {&lt;br /&gt;
		pg.wiki.imageSources.push(&lt;br /&gt;
		{wiki: pg.wiki.commons, thumb: true,  width: 180},&lt;br /&gt;
		{wiki: pg.wiki.commons, thumb: true,  width: 120}&lt;br /&gt;
			);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// unusual thumb sizes and full-size&lt;br /&gt;
	pg.wiki.imageSources.push(&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: true,  width: 200}, // common?&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: true,  width: 250}, // common?&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: true,  width: 300},&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: true,  width: 210},&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: true,  width: 230},&lt;br /&gt;
	{wiki: pg.wiki.hostname, thumb: false, width: 0} // no comma&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
	// full-size on commons&lt;br /&gt;
	if (pg.wiki.wikimedia &amp;amp;&amp;amp; pg.wiki.hostname!=pg.wiki.commons) {&lt;br /&gt;
		pg.wiki.imageSources.push({wiki: pg.wiki.commons, thumb: false, width: 0});&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// miscellany&lt;br /&gt;
&lt;br /&gt;
function setMisc() {&lt;br /&gt;
	pg.current.link=null;&lt;br /&gt;
&lt;br /&gt;
	// downloading images are put here&lt;br /&gt;
	pg.misc.imageArray=[];&lt;br /&gt;
&lt;br /&gt;
	// page caching&lt;br /&gt;
	pg.cache.pages = [];&lt;br /&gt;
	pg.cache.images = [];&lt;br /&gt;
&lt;br /&gt;
	// FIXME what is this for?&lt;br /&gt;
	pg.misc.gImage=null; // global for image&lt;br /&gt;
&lt;br /&gt;
	// check to see if images are done with this timer&lt;br /&gt;
	pg.timer.image=null;&lt;br /&gt;
&lt;br /&gt;
	// These are for checkImages()&lt;br /&gt;
	pg.counter.checkImages=0;&lt;br /&gt;
	pg.timer.checkImages=null;&lt;br /&gt;
	pg.timer.checkPopupPosition=null;&lt;br /&gt;
	pg.counter.loop=0;&lt;br /&gt;
&lt;br /&gt;
	// ids change with each popup: popupImage0, popupImage1 etc&lt;br /&gt;
	pg.idNumber=0;&lt;br /&gt;
&lt;br /&gt;
	// for myDecodeURI&lt;br /&gt;
	pg.misc.decodeExtras = [&lt;br /&gt;
		{from: &#039;%2C&#039;, to: &#039;,&#039; },&lt;br /&gt;
		{from: &#039;_&#039;,   to: &#039; &#039; },&lt;br /&gt;
		{from: &#039;%24&#039;, to: &#039;$&#039;},&lt;br /&gt;
		{from: &#039;%26&#039;,   to: &#039;&amp;amp;&#039; } // no ,&lt;br /&gt;
		];&lt;br /&gt;
&lt;br /&gt;
	// for setPopupHTML - needed for timers and stuff&lt;br /&gt;
	pg.timer.popupHTML=[];&lt;br /&gt;
	pg.misc.popupHTMLLoopFunctions = [];&lt;br /&gt;
&lt;br /&gt;
	// FIXME - eliminate this&lt;br /&gt;
	pg.counter.redir=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setBrowserHacks() {&lt;br /&gt;
	// browser-specific hacks&lt;br /&gt;
	if (typeof window.opera != &#039;undefined&#039;) {&lt;br /&gt;
		setDefault(&#039;popupStructure&#039;,&#039;original&#039;);&lt;br /&gt;
	} else if (navigator.appName==&#039;Konqueror&#039;) {&lt;br /&gt;
		setDefault(&#039;popupNavLinkSeparator&#039;, &#039; &amp;amp;bull; &#039;);&lt;br /&gt;
		pg.flag.isKonq=true;&lt;br /&gt;
	} else if ( navigator.vendor &amp;amp;&amp;amp; navigator.vendor.toLowerCase().indexOf(&#039;apple computer&#039;)===0) {&lt;br /&gt;
		pg.flag.isSafari=true;&lt;br /&gt;
	} else if (navigator.appName.indexOf(&amp;quot;Microsoft&amp;quot;)!=-1) {&lt;br /&gt;
		setDefault(&#039;popupNavLinkSeparator&#039;, &#039; &amp;amp;#183; &#039;);&lt;br /&gt;
		setDefault(&#039;popupStructure&#039;,&#039;original&#039;);&lt;br /&gt;
		pg.flag.isIE=true;&lt;br /&gt;
	}&lt;br /&gt;
	if (pg.flag.isIE || pg.flag.isKonq || pg.flag.isSafari) {&lt;br /&gt;
		pg.flag.linksLikeIE=true;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setupPopups() {&lt;br /&gt;
	// NB translatable strings should be set up first (strings.js)&lt;br /&gt;
&lt;br /&gt;
	// basics&lt;br /&gt;
	setSiteInfo();&lt;br /&gt;
	setTitleBase();&lt;br /&gt;
&lt;br /&gt;
	// namespaces etc&lt;br /&gt;
	setNamespaces();&lt;br /&gt;
	setInterwiki();&lt;br /&gt;
&lt;br /&gt;
	// regexps&lt;br /&gt;
	setRegexps();&lt;br /&gt;
	setRedirs();&lt;br /&gt;
&lt;br /&gt;
	// other stuff&lt;br /&gt;
	setImageSources();&lt;br /&gt;
	setOptions(); // see options.js&lt;br /&gt;
	setBrowserHacks();&lt;br /&gt;
	setMisc();&lt;br /&gt;
	setupDebugging();&lt;br /&gt;
	setupLivePreview();&lt;br /&gt;
&lt;br /&gt;
	// main deal here&lt;br /&gt;
	setupTooltips();&lt;br /&gt;
	Navpopup.tracker.enable();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: init.js&lt;br /&gt;
// STARTFILE: navlinks.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// navlinks... let the fun begin&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
function defaultNavlinkSpec() {&lt;br /&gt;
	var str=&#039;&#039;;&lt;br /&gt;
	str += &#039;&amp;lt;b&amp;gt;&amp;lt;&amp;lt;mainlink|shortcut= &amp;gt;&amp;gt;&amp;lt;/b&amp;gt;&#039;;&lt;br /&gt;
	if (getValueOf(&#039;popupLastEditLink&#039;)) {&lt;br /&gt;
		str += &#039;*&amp;lt;&amp;lt;lastEdit|shortcut=/&amp;gt;&amp;gt;|&amp;lt;&amp;lt;lastContrib&amp;gt;&amp;gt;|&amp;lt;&amp;lt;sinceMe&amp;gt;&amp;gt;if(oldid){|&amp;lt;&amp;lt;oldEdit&amp;gt;&amp;gt;|&amp;lt;&amp;lt;diffCur&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// user links&lt;br /&gt;
	// contribs - log - count - email - block&lt;br /&gt;
	// count only if applicable; block only if popupAdminLinks&lt;br /&gt;
	str += &#039;if(user){&amp;lt;br&amp;gt;&amp;lt;&amp;lt;contribs|shortcut=c&amp;gt;&amp;gt;*&amp;lt;&amp;lt;userlog|shortcut=L|log&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	str+=&#039;if(ipuser){*&amp;lt;&amp;lt;arin&amp;gt;&amp;gt;}if(wikimedia){*&amp;lt;&amp;lt;count|shortcut=#&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
	str+=&#039;if(ipuser){}else{*&amp;lt;&amp;lt;email|shortcut=E&amp;gt;&amp;gt;}if(admin){*&amp;lt;&amp;lt;block|shortcut=b&amp;gt;&amp;gt;}}&#039;;&lt;br /&gt;
&lt;br /&gt;
	// editing links&lt;br /&gt;
	// talkpage   -&amp;gt; edit|new - history - un|watch - article|edit&lt;br /&gt;
	// other page -&amp;gt; edit - history - un|watch - talk|edit|new&lt;br /&gt;
	var editstr=&#039;&amp;lt;&amp;lt;edit|shortcut=e&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
	var editOldidStr=&#039;if(oldid){&amp;lt;&amp;lt;editOld|shortcut=e&amp;gt;&amp;gt;|&amp;lt;&amp;lt;revert|shortcut=v|rv&amp;gt;&amp;gt;|&amp;lt;&amp;lt;edit|cur&amp;gt;&amp;gt;}else{&#039; + editstr + &#039;}&#039;&lt;br /&gt;
		var historystr=&#039;&amp;lt;&amp;lt;history|shortcut=h&amp;gt;&amp;gt;if(mainspace_en){|&amp;lt;&amp;lt;editors|shortcut=E|&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
	var watchstr=&#039;&amp;lt;&amp;lt;unwatch|unwatchShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;watch|shortcut=w|watchThingy&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	str+=&#039;&amp;lt;br&amp;gt;if(talk){&#039; +&lt;br /&gt;
		editOldidStr+&#039;|&amp;lt;&amp;lt;new|shortcut=+&amp;gt;&amp;gt;&#039; + &#039;*&#039; + historystr+&#039;*&#039;+watchstr + &#039;*&#039; +&lt;br /&gt;
		&#039;&amp;lt;b&amp;gt;&amp;lt;&amp;lt;article|shortcut=a&amp;gt;&amp;gt;&amp;lt;/b&amp;gt;|&amp;lt;&amp;lt;editArticle|edit&amp;gt;&amp;gt;&#039; +&lt;br /&gt;
		&#039;}else{&#039; + // not a talk page&lt;br /&gt;
		editOldidStr + &#039;*&#039; + historystr + &#039;*&#039; + watchstr + &#039;*&#039; +&lt;br /&gt;
		&#039;&amp;lt;b&amp;gt;&amp;lt;&amp;lt;talk|shortcut=t&amp;gt;&amp;gt;&amp;lt;/b&amp;gt;|&amp;lt;&amp;lt;editTalk|edit&amp;gt;&amp;gt;|&amp;lt;&amp;lt;newTalk|shortcut=+|new&amp;gt;&amp;gt;&#039;&lt;br /&gt;
		+ &#039;}&#039;;&lt;br /&gt;
&lt;br /&gt;
	// misc links&lt;br /&gt;
	str += &#039;&amp;lt;br&amp;gt;&amp;lt;&amp;lt;whatLinksHere|shortcut=l&amp;gt;&amp;gt;*&amp;lt;&amp;lt;relatedChanges|shortcut=r&amp;gt;&amp;gt;*&amp;lt;&amp;lt;move|shortcut=m&amp;gt;&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// admin links&lt;br /&gt;
	str += &#039;if(admin){&amp;lt;br&amp;gt;&amp;lt;&amp;lt;unprotect|unprotectShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;protect|shortcut=p&amp;gt;&amp;gt;*&#039; +&lt;br /&gt;
		&#039;&amp;lt;&amp;lt;undelete|undeleteShort&amp;gt;&amp;gt;|&amp;lt;&amp;lt;delete|shortcut=d&amp;gt;&amp;gt;}&#039;;&lt;br /&gt;
	return str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function navLinksHTML (article, hint, oldid) {&lt;br /&gt;
	var str = &#039;&amp;lt;span class=&amp;quot;popupNavLinks&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	var style=getValueOf(&#039;popupNavLinkStyle&#039;);&lt;br /&gt;
	switch (style) {&lt;br /&gt;
	case &#039;default&#039;:&lt;br /&gt;
		str += defaultNavlinkSpec();&lt;br /&gt;
		break;&lt;br /&gt;
	default:&lt;br /&gt;
		if (typeof style == &#039;function&#039;) str += style();&lt;br /&gt;
		else str+=String(style);&lt;br /&gt;
	}&lt;br /&gt;
	str += &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
&lt;br /&gt;
	// BAM&lt;br /&gt;
	return navlinkStringToHTML(str, article, oldid);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function expandConditionalNavlinkString(s,article,oldid,recursionCount) {&lt;br /&gt;
	// nested conditionals (up to 10 deep) are ok, hopefully! (work from the inside out)&lt;br /&gt;
	if (typeof recursionCount!=typeof 0) { recursionCount=0; }&lt;br /&gt;
	var conditionalSplitRegex=RegExp(&lt;br /&gt;
		//(1     if    \\(    (2    2)    \\)      {(3    3)}  (4   else      {(5     5)}  4)1)&lt;br /&gt;
		&#039;(;?\\s*if\\s*\\(\\s*([\\w]*)\\s*\\)\\s*\\{([^{}]*)\\}(\\s*else\\s*\\{([^{}]*?)\\}|))&#039;, &#039;i&#039;);&lt;br /&gt;
	var splitted=s.parenSplit(conditionalSplitRegex);&lt;br /&gt;
	// $1: whole conditional&lt;br /&gt;
	// $2: test condition&lt;br /&gt;
	// $3: true expansion&lt;br /&gt;
	// $4: else clause (possibly empty)&lt;br /&gt;
	// $5: false expansion (possibly null)&lt;br /&gt;
	var numParens=5;&lt;br /&gt;
	ret = splitted[0];&lt;br /&gt;
	for (var i=1; i&amp;lt;splitted.length; i=i+numParens+1) {&lt;br /&gt;
&lt;br /&gt;
		var testString=splitted[i+2-1];&lt;br /&gt;
		var trueString=splitted[i+3-1];&lt;br /&gt;
		var falseString=splitted[i+5-1];&lt;br /&gt;
		if (typeof falseString==&#039;undefined&#039; || !falseString) { falseString=&#039;&#039;; }&lt;br /&gt;
		var testResult=null;&lt;br /&gt;
&lt;br /&gt;
		switch (testString) {&lt;br /&gt;
		case &#039;user&#039;:&lt;br /&gt;
			testResult=(article.userName())?true:false;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;talk&#039;:&lt;br /&gt;
			testResult=(article.talkPage())?false:true; // talkPage converts _articles_ to talkPages&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;admin&#039;:&lt;br /&gt;
			testResult=getValueOf(&#039;popupAdminLinks&#039;)?true:false;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;oldid&#039;:&lt;br /&gt;
			testResult=(typeof oldid != &#039;undefined&#039; &amp;amp;&amp;amp; oldid)?true:false;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;ipuser&#039;:&lt;br /&gt;
			testResult=(article.isIpUser())?true:false;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;mainspace_en&#039;:&lt;br /&gt;
			testResult=isInMainNamespace(article) &amp;amp;&amp;amp; pg.wiki.hostname==&#039;en.wikipedia.org&#039;;&lt;br /&gt;
			break;&lt;br /&gt;
		case &#039;wikimedia&#039;:&lt;br /&gt;
			testResult=(pg.wiki.wikimedia) ? true : false;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		switch(testResult) {&lt;br /&gt;
		case null: ret+=splitted[i];  break;&lt;br /&gt;
		case true: ret+=trueString;   break;&lt;br /&gt;
		case false: ret+=falseString; break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// append non-conditional string&lt;br /&gt;
		ret += splitted[i+numParens];&lt;br /&gt;
	}&lt;br /&gt;
	if (conditionalSplitRegex.test(ret) &amp;amp;&amp;amp; recursionCount &amp;lt; 10) {&lt;br /&gt;
		return expandConditionalNavlinkString(ret,article,oldid,recursionCount+1);&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function navlinkStringToArray(s, article, oldid) {&lt;br /&gt;
	s=expandConditionalNavlinkString(s,article,oldid);&lt;br /&gt;
	var splitted=s.parenSplit(RegExp(&#039;&amp;lt;&amp;lt;(.*?)&amp;gt;&amp;gt;&#039;));&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	for (var i=0; i&amp;lt;splitted.length; ++i) {&lt;br /&gt;
		if (i%2) { // i odd, so s is a tag&lt;br /&gt;
			var t=new navlinkTag();&lt;br /&gt;
			var ss=splitted[i].split(&#039;|&#039;);&lt;br /&gt;
			t.id=ss[0];&lt;br /&gt;
			for (var j=1; j&amp;lt;ss.length; ++j) {&lt;br /&gt;
				var sss=ss[j].split(&#039;=&#039;);&lt;br /&gt;
				if (sss.length&amp;gt;1) {&lt;br /&gt;
					t[sss[0]]=sss[1];&lt;br /&gt;
				}&lt;br /&gt;
				else { // no assignment (no &amp;quot;=&amp;quot;), so treat this as a title (overwriting the last one)&lt;br /&gt;
					t.text=popupString(sss[0]);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			t.article=article;&lt;br /&gt;
			if (typeof oldid != &#039;undefined&#039; &amp;amp;&amp;amp; oldid != null) { t.oldid=oldid; }&lt;br /&gt;
			if (!t.text &amp;amp;&amp;amp; t.id != &#039;mainlink&#039;) { t.text=popupString(t.id); }&lt;br /&gt;
			ret.push(t);&lt;br /&gt;
		}&lt;br /&gt;
		else { // plain HTML&lt;br /&gt;
			ret.push(splitted[i]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function navlinkSubstituteHTML(s) {&lt;br /&gt;
	return s.split(&#039;*&#039;).join(getValueOf(&#039;popupNavLinkSeparator&#039;))&lt;br /&gt;
		.split(&#039;&amp;lt;menurow&amp;gt;&#039;).join(&#039;&amp;lt;li class=&amp;quot;popup_menu_row&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
		.split(&#039;&amp;lt;/menurow&amp;gt;&#039;).join(&#039;&amp;lt;/li&amp;gt;&#039;)&lt;br /&gt;
		.split(&#039;&amp;lt;menu&amp;gt;&#039;).join(&#039;&amp;lt;ul class=&amp;quot;popup_menu&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
		.split(&#039;&amp;lt;/menu&amp;gt;&#039;).join(&#039;&amp;lt;/ul&amp;gt;&#039;);&lt;br /&gt;
		&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function navlinkDepth(magic,s) {&lt;br /&gt;
	return s.split(&#039;&amp;lt;&#039; + magic + &#039;&amp;gt;&#039;).length - s.split(&#039;&amp;lt;/&#039; + magic + &#039;&amp;gt;&#039;).length;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// navlinkString: * becomes the separator&lt;br /&gt;
//                &amp;lt;&amp;lt;foo|bar=baz|fubar&amp;gt;&amp;gt; becomes a foo-link with attribute bar=&#039;baz&#039;&lt;br /&gt;
//                                      and visible text &#039;fubar&#039;&lt;br /&gt;
//                if(test){...} and if(test){...}else{...} work too (nested ok)&lt;br /&gt;
&lt;br /&gt;
function navlinkStringToHTML(s,article,oldid) {&lt;br /&gt;
	//limitAlert(navlinkStringToHTML, 5, &#039;navlinkStringToHTML\n&#039; + article + &#039;\n&#039; + (typeof article));&lt;br /&gt;
	var p=navlinkStringToArray(s,article,oldid);&lt;br /&gt;
	var html=&#039;&#039;;&lt;br /&gt;
	var menudepth = 0; // nested menus not currently allowed, but doesn&#039;t do any harm to code for it&lt;br /&gt;
	var menurowdepth = 0; &lt;br /&gt;
	var wrapping = null;&lt;br /&gt;
	for (var i=0; i&amp;lt;p.length; ++i) {&lt;br /&gt;
		if (typeof p[i] == typeof &#039;&#039;) {&lt;br /&gt;
			html+=navlinkSubstituteHTML(p[i]);&lt;br /&gt;
			menudepth += navlinkDepth(&#039;menu&#039;, p[i]);&lt;br /&gt;
			menurowdepth += navlinkDepth(&#039;menurow&#039;, p[i]);&lt;br /&gt;
// 			if (menudepth === 0) { &lt;br /&gt;
// 				tagType=&#039;span&#039;; &lt;br /&gt;
// 			} else if (menurowdepth === 0) {&lt;br /&gt;
// 				tagType=&#039;li&#039;;&lt;br /&gt;
// 			} else {&lt;br /&gt;
// 				tagType = null;&lt;br /&gt;
// 			}&lt;br /&gt;
		} else if (typeof p[i].type != &#039;undefined&#039; &amp;amp;&amp;amp; p[i].type==&#039;navlinkTag&#039;) {&lt;br /&gt;
			if (menudepth &amp;gt; 0 &amp;amp;&amp;amp; menurowdepth === 0) {&lt;br /&gt;
				html += &#039;&amp;lt;li class=&amp;quot;popup_menu_item&amp;quot;&amp;gt;&#039; + p[i].html() + &#039;&amp;lt;/li&amp;gt;&#039;;&lt;br /&gt;
			} else {&lt;br /&gt;
				html+=p[i].html();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function navlinkTag() {&lt;br /&gt;
	this.type=&#039;navlinkTag&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
navlinkTag.prototype.html=function () {&lt;br /&gt;
	this.getNewWin();&lt;br /&gt;
	this.getPrintFunction();&lt;br /&gt;
	var html=&#039;&#039;;&lt;br /&gt;
	var opening, closing;&lt;br /&gt;
	var tagType=&#039;span&#039;;&lt;br /&gt;
	if (!tagType) {&lt;br /&gt;
		opening = &#039;&#039;; closing = &#039;&#039;;&lt;br /&gt;
	} else {&lt;br /&gt;
		opening = &#039;&amp;lt;&#039; + tagType + &#039; class=&amp;quot;popup_&#039; + this.id + &#039;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
		closing = &#039;&amp;lt;/&#039; + tagType + &#039;&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	if (typeof this.print!=&#039;function&#039;) {&lt;br /&gt;
		errlog (&#039;Oh dear - invalid print function for a navlinkTag, id=&#039;+this.id);&lt;br /&gt;
	} else {&lt;br /&gt;
		html=this.print(this);&lt;br /&gt;
		if (typeof html != typeof &#039;&#039;) {html=&#039;&#039;;}&lt;br /&gt;
		else if (typeof this.shortcut!=&#039;undefined&#039;) html=addPopupShortcut(html, this.shortcut);&lt;br /&gt;
	}&lt;br /&gt;
	return opening + html + closing;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
navlinkTag.prototype.getNewWin=function() {&lt;br /&gt;
	getValueOf(&#039;popupLinksNewWindow&#039;);&lt;br /&gt;
	if (typeof pg.option.popupLinksNewWindow[this.id] === &#039;undefined&#039;) { this.newWin=null; }&lt;br /&gt;
	this.newWin=pg.option.popupLinksNewWindow[this.id];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
navlinkTag.prototype.getPrintFunction=function() { //think about this some more&lt;br /&gt;
	// this.id and this.article should already be defined&lt;br /&gt;
	if (typeof this.id!=typeof &#039;&#039; || typeof this.article!=typeof {} ) { return; }&lt;br /&gt;
	var html=&#039;&#039;;&lt;br /&gt;
	var a,t;&lt;br /&gt;
&lt;br /&gt;
	switch (this.id) {&lt;br /&gt;
	case &#039;email&#039;:     case &#039;contribs&#039;:  case &#039;block&#039;:     case &#039;unblock&#039;:&lt;br /&gt;
	case &#039;userlog&#039;:   case &#039;userSpace&#039;:&lt;br /&gt;
		this.article=this.article.userName();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	switch (this.id) {&lt;br /&gt;
		case &#039;userTalk&#039;: case &#039;newUserTalk&#039;: case &#039;editUserTalk&#039;:&lt;br /&gt;
		case &#039;userPage&#039;: case &#039;monobook&#039;: case &#039;editMonobook&#039;: case &#039;blocklog&#039;:&lt;br /&gt;
		delete this.oldid;&lt;br /&gt;
		this.article=this.article.userName(true);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (this.id==&#039;editMonobook&#039; || this.id==&#039;monobook&#039;) { this.article.append(&#039;/monobook.js&#039;); }&lt;br /&gt;
&lt;br /&gt;
	if (this.id != &#039;mainlink&#039;) {&lt;br /&gt;
		// FIXME anchor handling should be done differently with Title object&lt;br /&gt;
		// this.article=removeAnchor(this.article);&lt;br /&gt;
		// if (typeof this.text==&#039;undefined&#039;) this.text=popupString(this.id);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	switch (this.id) {&lt;br /&gt;
		case &#039;undelete&#039;:       this.print=specialLink; this.specialpage=&#039;Undelete&#039;; this.sep=&#039;/&#039;; break;&lt;br /&gt;
		case &#039;whatLinksHere&#039;:  this.print=specialLink; this.specialpage=&#039;Whatlinkshere&#039;; break;&lt;br /&gt;
		case &#039;relatedChanges&#039;: this.print=specialLink; this.specialpage=&#039;Recentchangeslinked&#039;; break;&lt;br /&gt;
		case &#039;move&#039;:           this.print=specialLink; this.specialpage=&#039;Movepage&#039;; break;&lt;br /&gt;
		case &#039;contribs&#039;:       this.print=specialLink; this.specialpage=&#039;Contributions&#039;; break;&lt;br /&gt;
		case &#039;email&#039;:          this.print=specialLink; this.specialpage=&#039;Emailuser&#039;; break;&lt;br /&gt;
		case &#039;block&#039;:          this.print=specialLink; this.specialpage=&#039;Blockip&#039;; this.sep=&#039;&amp;amp;ip=&#039;; break;&lt;br /&gt;
		case &#039;unblock&#039;:        this.print=specialLink; this.specialpage=&#039;Ipblocklist&#039;; this.sep=&#039;&amp;amp;action=unblock&amp;amp;ip=&#039;; break;&lt;br /&gt;
		case &#039;userlog&#039;:        this.print=specialLink; this.specialpage=&#039;Log&#039;; this.sep=&#039;&amp;amp;user=&#039;; break;&lt;br /&gt;
		case &#039;blocklog&#039;:       this.print=specialLink; this.specialpage=&#039;Log&#039;; this.sep=&#039;&amp;amp;type=block&amp;amp;page=&#039;; break;&lt;br /&gt;
		case &#039;userSpace&#039;:      this.print=specialLink; this.specialpage=&#039;Prefixindex&#039;; this.sep=&#039;&amp;amp;namespace=2&amp;amp;from=&#039;; break;&lt;br /&gt;
		case &#039;search&#039;:         this.print=specialLink; this.specialpage=&#039;Search&#039;; this.sep=&#039;&amp;amp;fulltext=Search&amp;amp;search=&#039;; break;&lt;br /&gt;
		case &#039;history&#039;: case &#039;unwatch&#039;: case &#039;watch&#039;:&lt;br /&gt;
		case &#039;unprotect&#039;: case &#039;protect&#039;:&lt;br /&gt;
		this.print=wikiLink; this.action=this.id; break;&lt;br /&gt;
&lt;br /&gt;
		case &#039;delete&#039;:&lt;br /&gt;
		this.print=wikiLink; this.action=&#039;delete&#039;;&lt;br /&gt;
		if (isImagePage(this.article)) {&lt;br /&gt;
			var img=this.article.stripNamespace();&lt;br /&gt;
			this.action+=&#039;&amp;amp;image=&#039;+img;&lt;br /&gt;
		}&lt;br /&gt;
		break;&lt;br /&gt;
&lt;br /&gt;
		case &#039;edit&#039;: case &#039;view&#039;:&lt;br /&gt;
		this.print=wikiLink;&lt;br /&gt;
		delete this.oldid;&lt;br /&gt;
		this.action=this.id; break;&lt;br /&gt;
		case &#039;new&#039;:&lt;br /&gt;
		this.print=wikiLink; this.action=&#039;edit&amp;amp;section=new&#039;; break;&lt;br /&gt;
		case &#039;mainlink&#039;:&lt;br /&gt;
		if (typeof this.text==&#039;undefined&#039;) { this.text=safeDecodeURI(this.article); }&lt;br /&gt;
		if (getValueOf(&#039;popupSimplifyMainLink&#039;) &amp;amp;&amp;amp; isInStrippableNamespace(this.article)) {&lt;br /&gt;
			var s=this.text.split(&#039;/&#039;); this.text=s[s.length-1];&lt;br /&gt;
			if (this.text==&#039;&#039; &amp;amp;&amp;amp; s.length &amp;gt; 1) { this.text=s[s.length-2]; }&lt;br /&gt;
		}&lt;br /&gt;
		this.print=titledWikiLink;&lt;br /&gt;
		if (typeof this.title==&#039;undefined&#039; &amp;amp;&amp;amp; pg.current.link &amp;amp;&amp;amp; typeof pg.current.link.href != &#039;undefined&#039;) {&lt;br /&gt;
			this.title=safeDecodeURI((pg.current.link.originalTitle)?pg.current.link.originalTitle:this.article);&lt;br /&gt;
			if (typeof this.oldid != &#039;undefined&#039; &amp;amp;&amp;amp; this.oldid) {&lt;br /&gt;
				this.title=tprintf(&#039;Revision %s of %s&#039;, [this.oldid, this.title]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		this.action=&#039;view&#039;; break;&lt;br /&gt;
		case &#039;userPage&#039;:&lt;br /&gt;
		case &#039;article&#039;:&lt;br /&gt;
		case &#039;monobook&#039;:&lt;br /&gt;
		case &#039;editMonobook&#039;:&lt;br /&gt;
		case &#039;editArticle&#039;:&lt;br /&gt;
		//alert(this.id+&#039;\n&#039;+this.article + &#039;\n&#039;+ typeof this.article);&lt;br /&gt;
		this.article=this.article.articleFromTalkOrArticle();&lt;br /&gt;
		//alert(this.id+&#039;\n&#039;+this.article + &#039;\n&#039;+ typeof this.article);&lt;br /&gt;
		this.print=wikiLink;&lt;br /&gt;
		this.action=&#039;view&#039;; break;&lt;br /&gt;
		if (this.id.indexOf(&#039;edit&#039;)==0) {&lt;br /&gt;
			this.action=&#039;edit&#039;;&lt;br /&gt;
		} else { this.action=&#039;view&#039;;}&lt;br /&gt;
		break;&lt;br /&gt;
		case &#039;userTalk&#039;:&lt;br /&gt;
		case &#039;talk&#039;:&lt;br /&gt;
		this.article=this.article.talkPage();&lt;br /&gt;
		this.print=wikiLink;&lt;br /&gt;
		this.action=&#039;view&#039;; break;&lt;br /&gt;
		case &#039;arin&#039;:&lt;br /&gt;
		this.print=arinLink; break;&lt;br /&gt;
		case &#039;count&#039;:&lt;br /&gt;
		this.print=kateLink; break;&lt;br /&gt;
		case &#039;google&#039;:&lt;br /&gt;
		this.print=googleLink; break;&lt;br /&gt;
		case &#039;contribsTree&#039;:&lt;br /&gt;
		this.print=contribsTreeLink; break;&lt;br /&gt;
		case &#039;editors&#039;:&lt;br /&gt;
		this.print=editorListLink; break;&lt;br /&gt;
		case &#039;globalsearch&#039;:&lt;br /&gt;
		this.print=globalSearchLink; break;&lt;br /&gt;
		case &#039;lastEdit&#039;:&lt;br /&gt;
		this.print=titledDiffLink;&lt;br /&gt;
		this.title=popupString(&#039;Show the last edit&#039;);&lt;br /&gt;
		this.from=&#039;prev&#039;; this.to=&#039;cur&#039;; break;&lt;br /&gt;
		case &#039;oldEdit&#039;:&lt;br /&gt;
		this.print=titledDiffLink;&lt;br /&gt;
		this.title=popupString(&#039;Show the edit made to get revision&#039;) + &#039; &#039; + this.oldid;&lt;br /&gt;
		this.from=&#039;prev&#039;; this.to=this.oldid; break;&lt;br /&gt;
		case &#039;editOld&#039;:&lt;br /&gt;
		this.print=wikiLink; this.action=&#039;edit&#039;; break;&lt;br /&gt;
		case &#039;revert&#039;:&lt;br /&gt;
		this.print=wikiLink; this.action=&#039;revert&#039;; break;&lt;br /&gt;
		case &#039;nullEdit&#039;:&lt;br /&gt;
		this.print=wikiLink; this.action=&#039;nullEdit&#039;; break;&lt;br /&gt;
		case &#039;diffCur&#039;:&lt;br /&gt;
		this.print=titledDiffLink;&lt;br /&gt;
		this.title=tprintf(&#039;Show changes since revision %s&#039;, [this.oldid]);&lt;br /&gt;
		this.from=this.oldid; this.to=&#039;cur&#039;; break;&lt;br /&gt;
		case &#039;editUserTalk&#039;:&lt;br /&gt;
		case &#039;editTalk&#039;:&lt;br /&gt;
		this.article=this.article.talkPage();&lt;br /&gt;
		this.action=&#039;edit&#039;; this.print=wikiLink; break;&lt;br /&gt;
		case &#039;newUserTalk&#039;:&lt;br /&gt;
		case &#039;newTalk&#039;:&lt;br /&gt;
		this.article=this.article.talkPage();&lt;br /&gt;
		this.action=&#039;edit&amp;amp;section=new&#039;; this.print=wikiLink; break;&lt;br /&gt;
		case &#039;lastContrib&#039;:&lt;br /&gt;
		case &#039;sinceMe&#039;:&lt;br /&gt;
		this.print=magicHistoryLink;&lt;br /&gt;
		break;&lt;br /&gt;
		default:&lt;br /&gt;
		this.print=function () {return &#039;Unknown navlink type: &#039;+this.id+&#039;&#039;};&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
//&lt;br /&gt;
//  end navlinks&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: navlinks.js&lt;br /&gt;
// STARTFILE: shortcutkeys.js&lt;br /&gt;
function popupHandleKeypress(evt) {&lt;br /&gt;
	var keyCode = window.event ? window.event.keyCode : ( evt.keyCode ? evt.keyCode : evt.which);&lt;br /&gt;
	if (!keyCode || !pg.current.link || !pg.current.link.navpopup) { return; }&lt;br /&gt;
	if (keyCode==27) { // escape&lt;br /&gt;
		killPopup();&lt;br /&gt;
		return false; // swallow keypress&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var letter=String.fromCharCode(keyCode);&lt;br /&gt;
	var links=pg.current.link.navpopup.mainDiv.getElementsByTagName(&#039;A&#039;);&lt;br /&gt;
	var startLink=0;&lt;br /&gt;
	var i,j;&lt;br /&gt;
&lt;br /&gt;
	if (popupHandleKeypress.lastPopupLinkSelected) {&lt;br /&gt;
		for (i=0; i&amp;lt;links.length; ++i) {&lt;br /&gt;
			if (links[i]==popupHandleKeypress.lastPopupLinkSelected) { startLink=i; }&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	for (j=0; j&amp;lt;links.length; ++j) {&lt;br /&gt;
		i=(startLink + j + 1) % links.length;&lt;br /&gt;
		if (links[i].getAttribute(&#039;popupkey&#039;)==letter) {&lt;br /&gt;
			if (evt &amp;amp;&amp;amp; evt.preventDefault) evt.preventDefault();&lt;br /&gt;
			links[i].focus();&lt;br /&gt;
			popupHandleKeypress.lastPopupLinkSelected=links[i];&lt;br /&gt;
			return false; // swallow keypress&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pass keypress on&lt;br /&gt;
	if (document.oldPopupOnkeypress) { return document.oldPopupOnkeypress(evt); }&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function addPopupShortcuts() {&lt;br /&gt;
	if (document.onkeypress &amp;amp;&amp;amp; document.onkeypress.toString()==popupHandleKeypress.toString()) return;&lt;br /&gt;
	document.oldPopupOnkeypress=document.onkeypress;&lt;br /&gt;
	document.onkeypress=popupHandleKeypress;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function rmPopupShortcuts() {&lt;br /&gt;
	popupHandleKeypress.lastPopupLinkSelected=null;&lt;br /&gt;
	try {&lt;br /&gt;
		if (document.oldPopupOnkeypress &amp;amp;&amp;amp; document.oldPopupOnkeypress.toString()==popupHandleKeypress.toString()) {&lt;br /&gt;
			// panic&lt;br /&gt;
			document.onkeypress=null; //function () {};&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		document.onkeypress=document.oldPopupOnkeypress;&lt;br /&gt;
	} catch (nasties) { /* IE goes here */ }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function addLinkProperty(html, property) {&lt;br /&gt;
	// take &amp;quot;&amp;lt;a href=...&amp;gt;...&amp;lt;/a&amp;gt; and add a property&lt;br /&gt;
	// not sophisticated at all, easily broken&lt;br /&gt;
	var i=html.indexOf(&#039;&amp;gt;&#039;);&lt;br /&gt;
	if (i&amp;lt;0) { return html; }&lt;br /&gt;
	return html.substring(0,i) + &#039; &#039; + property + html.substring(i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function addPopupShortcut(html, key) {&lt;br /&gt;
	if (!getValueOf(&#039;popupShortcutKeys&#039;)) { return html; }&lt;br /&gt;
	var ret= addLinkProperty(html, &#039;popupkey=&amp;quot;&#039;+key+&#039;&amp;quot;&#039;);&lt;br /&gt;
	if (key==&#039; &#039;) { key=popupString(&#039;spacebar&#039;); }&lt;br /&gt;
	return ret.replace(RegExp(&#039;^(.*?)(title=&amp;quot;)(.*?)(&amp;quot;.*)$&#039;, &#039;i&#039;),&#039;$1$2$3 [&#039;+key+&#039;]$4&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: shortcutkeys.js&lt;br /&gt;
// STARTFILE: diffpreview.js&lt;br /&gt;
function loadDiff(article, oldid, diff) {&lt;br /&gt;
	pg.diffData={}; // FIXME this is very unreliable; should be done on a per-popup basis&lt;br /&gt;
	var oldRev, newRev;&lt;br /&gt;
	switch (diff) {&lt;br /&gt;
	case &#039;cur&#039;:&lt;br /&gt;
		switch ( oldid ) {&lt;br /&gt;
		case null:&lt;br /&gt;
		case &#039;&#039;:&lt;br /&gt;
		case &#039;prev&#039;:&lt;br /&gt;
			// eg newmessages diff link&lt;br /&gt;
			oldRev=&#039;0&amp;amp;direction=prev&#039;;&lt;br /&gt;
			newRev=0;&lt;br /&gt;
			break;&lt;br /&gt;
		default:&lt;br /&gt;
			oldRev = oldid;&lt;br /&gt;
			newRev = 0;&lt;br /&gt;
		}&lt;br /&gt;
		break;&lt;br /&gt;
	case &#039;prev&#039;:&lt;br /&gt;
		oldRev = ( oldid || 0 ) + &#039;&amp;amp;direction=prev&#039;; newRev = oldid; break;&lt;br /&gt;
	case &#039;next&#039;:&lt;br /&gt;
		oldRev = oldid; newRev = oldid + &#039;&amp;amp;direction=next&#039;;&lt;br /&gt;
		break;&lt;br /&gt;
	default:&lt;br /&gt;
		oldRev = oldid || 0; newRev = diff || 0; break;&lt;br /&gt;
	}&lt;br /&gt;
	oldRev = oldRev || 0;&lt;br /&gt;
	newRev = newRev || 0;&lt;br /&gt;
&lt;br /&gt;
	getWiki(article, doneDiffNew, newRev);&lt;br /&gt;
	getWiki(article, doneDiffOld, oldRev);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function doneDiffNew(download) {&lt;br /&gt;
	if (download.id != pg.idNumber) { return; }&lt;br /&gt;
	pg.diffData.New=download;&lt;br /&gt;
	if (pg.diffData.Old &amp;amp;&amp;amp; pg.diffData.Old.id == pg.idNumber) { insertDiff(); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function doneDiffOld(download) {&lt;br /&gt;
	if (download.id != pg.idNumber) { return; }&lt;br /&gt;
	pg.diffData.Old=download;&lt;br /&gt;
	if (pg.diffData.New &amp;amp;&amp;amp; pg.diffData.New.id == pg.idNumber) { insertDiff(); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function rmBoringLines(a,b,context) {&lt;br /&gt;
&lt;br /&gt;
	if (typeof context == &#039;undefined&#039;) { context=2; }&lt;br /&gt;
	// this is fairly slow... i think it&#039;s quicker than doing a word-based diff from the off, though&lt;br /&gt;
	var aa=[], aaa=[];&lt;br /&gt;
	var bb=[], bbb=[];&lt;br /&gt;
	var i, j;&lt;br /&gt;
&lt;br /&gt;
	// first, gather all disconnected nodes in a and all crossing nodes in a and b&lt;br /&gt;
	for (i=0; i&amp;lt;a.length; ++i ) {&lt;br /&gt;
		if(!a[i].row || a[i].row===0) { aa[i]=1; }&lt;br /&gt;
		else if (countCrossings(b,a,i, true)) {&lt;br /&gt;
			aa[i]=1;&lt;br /&gt;
			bb[ a[i].row ] = 1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pick up remaining disconnected nodes in b&lt;br /&gt;
	for (i=0; i&amp;lt;b.length; ++i ) {&lt;br /&gt;
		if (bb[i]==1) { continue; }&lt;br /&gt;
		if(!b[i].row || b[i].row===0) { bb[i]=1; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// another pass to gather context: we want the neighbours of included nodes which are not yet included&lt;br /&gt;
	// we have to add in partners of these nodes, but we don&#039;t want to add context for *those* nodes in the next pass&lt;br /&gt;
	for (i=0; i&amp;lt;b.length; ++i) {&lt;br /&gt;
		if ( bb[i] == 1 ) {&lt;br /&gt;
			for (j=max(0,i-context); j &amp;lt; min(b.length, i+context); ++j) {&lt;br /&gt;
				if ( !bb[j] ) { bb[j] = 1; aa[ b[j].row ] = 0.5; }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for (i=0; i&amp;lt;a.length; ++i) {&lt;br /&gt;
		if ( aa[i] == 1 ) {&lt;br /&gt;
			for (j=max(0,i-context); j &amp;lt; min(a.length, i+context); ++j) {&lt;br /&gt;
				if ( !aa[j] ) { aa[j] = 1; bb[ a[j].row ] = 0.5; }&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	for (i=0; i&amp;lt;bb.length; ++i) {&lt;br /&gt;
		if (bb[i] &amp;gt; 0) { // it&#039;s a row we need&lt;br /&gt;
			if (b[i].row || b[i].row===0) { bbb.push(b[i].text); } // joined; partner should be in aa&lt;br /&gt;
			else {&lt;br /&gt;
				bbb.push(b[i]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	for (i=0; i&amp;lt;aa.length; ++i) {&lt;br /&gt;
		if (aa[i] &amp;gt; 0) { // it&#039;s a row we need&lt;br /&gt;
			if (a[i].row || a[i].row===0) { aaa.push(a[i].text); } // joined; partner should be in aa&lt;br /&gt;
			else {&lt;br /&gt;
				aaa.push(a[i]);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return { a: aaa, b: bbb};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function stripOuterCommonLines(a,b,context) {&lt;br /&gt;
	var i=0;&lt;br /&gt;
	while (i&amp;lt;a.length &amp;amp;&amp;amp; i &amp;lt; b.length &amp;amp;&amp;amp; a[i]==b[i]) { ++i; }&lt;br /&gt;
	var j=a.length-1; var k=b.length-1;&lt;br /&gt;
	while ( j&amp;gt;=0 &amp;amp;&amp;amp; k&amp;gt;=0 &amp;amp;&amp;amp; a[j]==b[k] ) { --j; --k; }&lt;br /&gt;
&lt;br /&gt;
	return { a: a.slice(max(0,i - 1 - context), min(a.length+1, j + context+1)),&lt;br /&gt;
			    b: b.slice(max(0,i - 1 - context), min(b.length+1, k + context+1)) };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function insertDiff() {&lt;br /&gt;
	// for speed reasons, we first do a line-based diff, discard stuff that seems boring, then do a word-based diff&lt;br /&gt;
	// FIXME: sometimes this gives misleading diffs as distant chunks are squashed together&lt;br /&gt;
	var oldlines=pg.diffData.Old.data.split(&#039;\n&#039;);&lt;br /&gt;
	var newlines=pg.diffData.New.data.split(&#039;\n&#039;);&lt;br /&gt;
	getValueOf(&#039;popupDiffContextLines&#039;);&lt;br /&gt;
	var inner=stripOuterCommonLines(oldlines,newlines,pg.option.popupDiffContextLines);&lt;br /&gt;
	oldlines=inner.a; newlines=inner.b;&lt;br /&gt;
	var truncated=false;&lt;br /&gt;
	getValueOf(&#039;popupDiffMaxLines&#039;);&lt;br /&gt;
	if (oldlines.length &amp;gt; pg.option.popupDiffMaxLines || newlines.length &amp;gt; pg.option.popupDiffMaxLines) {&lt;br /&gt;
		// truncate&lt;br /&gt;
		truncated=true;&lt;br /&gt;
		inner=stripOuterCommonLines(oldlines.slice(0,pg.option.popupDiffMaxLines),&lt;br /&gt;
					    newlines.slice(0,pg.option.popupDiffMaxLines),&lt;br /&gt;
					    pg.option.popupDiffContextLines);&lt;br /&gt;
		oldlines=inner.a; newlines=inner.b;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var lineDiff=diff(oldlines, newlines);&lt;br /&gt;
	var lines2=rmBoringLines(lineDiff.o, lineDiff.n);&lt;br /&gt;
	var oldlines2=lines2.a; var newlines2=lines2.b;&lt;br /&gt;
&lt;br /&gt;
	var simpleSplit = (String.prototype.parenSplit.toString().indexOf(&#039;native code&#039;)==-1);&lt;br /&gt;
	var html=&#039;&amp;lt;hr&amp;gt;&#039;;&lt;br /&gt;
	if (getValueOf(&#039;popupDiffDates&#039;)) {&lt;br /&gt;
		html += diffDatesTable(pg.diffData.Old, pg.diffData.New);&lt;br /&gt;
		html += &#039;&amp;lt;hr&amp;gt;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	html += shortenDiffString(&lt;br /&gt;
		diffString(oldlines2.join(&#039;\n&#039;), newlines2.join(&#039;\n&#039;), simpleSplit),&lt;br /&gt;
		getValueOf(&#039;popupDiffContextCharacters&#039;) ).join(&#039;&amp;lt;hr&amp;gt;&#039;);&lt;br /&gt;
	setPopupHTML(html.split(&#039;\n&#039;).join(&#039;&amp;lt;br&amp;gt;&#039;) +&lt;br /&gt;
		     (truncated ? &#039;&amp;lt;hr&amp;gt;&amp;lt;b&amp;gt;&#039;+popupString(&#039;Diff truncated for performance reasons&#039;)+&#039;&amp;lt;/b&amp;gt;&#039; : &#039;&#039;) ,&lt;br /&gt;
		     &#039;popupPreview&#039;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function diffDatesTable( oldDl, newDl ) {&lt;br /&gt;
	var html=&#039;&amp;lt;table class=&amp;quot;popup_diff_dates&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
	html += diffDatesTableRow( newDl, tprintf(&#039;New revision&#039;));&lt;br /&gt;
	html += diffDatesTableRow( oldDl, tprintf(&#039;Old revision&#039;));&lt;br /&gt;
	html += &#039;&amp;lt;/table&amp;gt;&#039;;&lt;br /&gt;
	return html;&lt;br /&gt;
}&lt;br /&gt;
function diffDatesTableRow( dl, label ) {&lt;br /&gt;
	var txt=&#039;&#039;;&lt;br /&gt;
	if (!dl) {&lt;br /&gt;
		txt=popupString(&#039;Something went wrong :-(&#039;);&lt;br /&gt;
	} else if (!dl.lastModified) {&lt;br /&gt;
		txt= (/^\s*$/.test(dl.data)) ?&lt;br /&gt;
			popupString(&#039;Empty revision, maybe non-existent&#039;) : popupString(&#039;Unknown date&#039;);&lt;br /&gt;
	} else {&lt;br /&gt;
		var datePrint=getValueOf(&#039;popupDiffDatePrinter&#039;);&lt;br /&gt;
		if (typeof dl.lastModified[datePrint] == &#039;function&#039;) {&lt;br /&gt;
			txt = dl.lastModified[datePrint]();&lt;br /&gt;
		} else {&lt;br /&gt;
			txt = tprintf(&#039;Invalid %s %s&#039;, [&#039;popupDiffDatePrinter&#039;, datePrint]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return simplePrintf(&#039;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;%s&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;%s&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&#039;, [ label, txt ]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: diffpreview.js&lt;br /&gt;
// STARTFILE: links.js&lt;br /&gt;
/////////////////////&lt;br /&gt;
// LINK GENERATION //&lt;br /&gt;
/////////////////////&lt;br /&gt;
&lt;br /&gt;
// titledDiffLink --&amp;gt; titledWikiLink --&amp;gt; generalLink&lt;br /&gt;
// wikiLink       --&amp;gt; titledWikiLink --&amp;gt; generalLink&lt;br /&gt;
// kateLink --&amp;gt; generalLink&lt;br /&gt;
&lt;br /&gt;
function titledDiffLink(l) { // article, text, title, from, to) {&lt;br /&gt;
	return titledWikiLink({article: l.article, action: l.to + &#039;&amp;amp;oldid=&#039; + l.from,&lt;br /&gt;
						newWin: l.newWin,&lt;br /&gt;
						text: l.text, title: l.title,&lt;br /&gt;
						/* hack: no oldid here */&lt;br /&gt;
						actionName: &#039;diff&#039;});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function wikiLink(l) {&lt;br /&gt;
	//{article:article, action:action, text:text, oldid}) {&lt;br /&gt;
	if (! (typeof l.article == typeof {}&lt;br /&gt;
	       &amp;amp;&amp;amp; typeof l.action == typeof &#039;&#039; &amp;amp;&amp;amp; typeof l.text==typeof &#039;&#039;)) return null;&lt;br /&gt;
	if (typeof l.oldid == &#039;undefined&#039;) l.oldid=null;&lt;br /&gt;
	if (l.action!=&#039;edit&#039; &amp;amp;&amp;amp; l.action!=&#039;view&#039; &amp;amp;&amp;amp; l.action != &#039;revert&#039;) l.oldid=null;&lt;br /&gt;
	var hint=popupString(l.action + &#039;Hint&#039;);&lt;br /&gt;
	switch (l.action) {&lt;br /&gt;
	case &#039;edit&amp;amp;section=new&#039;: hint = popupString(&#039;newSectionHint&#039;);  break;&lt;br /&gt;
	case &#039;revert&#039;:&lt;br /&gt;
		l.action=&#039;edit&amp;amp;autoclick=wpSave&amp;amp;autosummary=&#039; + revertSummary(l.oldid);&lt;br /&gt;
		if (getValueOf(&#039;popupRevertSummaryPrompt&#039;)) { l.action += &#039;&amp;amp;autosummaryprompt=true&#039;; }&lt;br /&gt;
		break;&lt;br /&gt;
	case &#039;nullEdit&#039;:&lt;br /&gt;
		l.action=&#039;edit&amp;amp;autoclick=wpSave&amp;amp;autosummary=null&#039;;&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (hint) {&lt;br /&gt;
		if (l.oldid) {&lt;br /&gt;
			hint = simplePrintf(hint, [tprintf(&#039;revision %s of %s&#039;, [l.oldid, safeDecodeURI(l.article)])]);&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			hint = simplePrintf(hint, [safeDecodeURI(l.article)]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		hint = safeDecodeURI(l.article + &#039;&amp;amp;action=&#039; + l.action) + (l.oldid) ? &#039;&amp;amp;oldid=&#039;+l.oldid : &#039;&#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return titledWikiLink({article: l.article, action: l.action, text: l.text, newWin:l.newWin,&lt;br /&gt;
						title: hint, oldid: l.oldid});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function revertSummary(oldid) {&lt;br /&gt;
	if (typeof getValueOf(&#039;popupTimeOffset&#039;) == &#039;number&#039; &amp;amp;&amp;amp; /[?&amp;amp;]action=history/.test(document.location.href)) {&lt;br /&gt;
		var links=document.links;&lt;br /&gt;
		var numlinks=links.length;&lt;br /&gt;
		var date=null, editor=null;&lt;br /&gt;
		var dateRe = RegExp(&#039;^([0-9]{2}:[0-9]{2}),\s*(.*[1-3][0-9]{3})$&#039;);&lt;br /&gt;
		for (var i=0; i&amp;lt;numlinks-1; ++i) {&lt;br /&gt;
			if (RegExp(&#039;oldid=&#039;+oldid).test(links[i].href) &amp;amp;&amp;amp; dateRe.test(links[i].innerHTML)) {&lt;br /&gt;
				// help konqueror out by putting the time at the end&lt;br /&gt;
				var ds = links[i].innerHTML.replace(dateRe, &#039;$2 $1&#039;);&lt;br /&gt;
				// d is parsed according to current locale, in FF at least&lt;br /&gt;
				// this is only OK if the user has set the time offset in prefs!&lt;br /&gt;
				var d=new Date(+(new Date(ds)) - 1000*3600*getValueOf(&#039;popupTimeOffset&#039;));&lt;br /&gt;
				// strip out zero seconds and timezone in date, since they&#039;re prolly bogus&lt;br /&gt;
				date=d.toString().replace(/([0-9]{2}:[0-9]{2}):00.*/, &#039;$1&#039;);&lt;br /&gt;
				editor=Title.fromURL(links[i+1].href).userName();&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if (date &amp;amp;&amp;amp; editor) {&lt;br /&gt;
			return simplePrintf(getValueOf(&#039;popupExtendedRevertSummary&#039;), [date, editor, oldid]);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	return simplePrintf(getValueOf(&#039;popupRevertSummary&#039;), [ oldid ]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function titledWikiLink(l) {&lt;br /&gt;
	// possible properties of argument:&lt;br /&gt;
	// article, action, text, title, oldid, actionName, className&lt;br /&gt;
	// oldid = null is fine here&lt;br /&gt;
&lt;br /&gt;
	// article and action are mandatory args&lt;br /&gt;
&lt;br /&gt;
	if (typeof l.article == &#039;undefined&#039; || typeof l.action==&#039;undefined&#039;) {&lt;br /&gt;
		errlog(&#039;got undefined article or actino in titledWikiLink&#039;);&lt;br /&gt;
		return null;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var base = pg.wiki.titlebase +  l.article.urlString();&lt;br /&gt;
	var url=base;&lt;br /&gt;
&lt;br /&gt;
	if (typeof l.actionName==&#039;undefined&#039; || !l.actionName) { l.actionName=&#039;action&#039;; }&lt;br /&gt;
&lt;br /&gt;
	// no need to add &amp;amp;action=view, and this confuses anchors&lt;br /&gt;
	if (l.action != &#039;view&#039;) { url = base + &#039;&amp;amp;&#039; + l.actionName + &#039;=&#039; + l.action; }&lt;br /&gt;
&lt;br /&gt;
	if (typeof l.oldid!=&#039;undefined&#039; &amp;amp;&amp;amp; l.oldid) { url+=&#039;&amp;amp;oldid=&#039;+l.oldid; }&lt;br /&gt;
&lt;br /&gt;
	var cssClass=pg.misc.defaultNavlinkClassname;&lt;br /&gt;
	if (typeof l.className!=&#039;undefined&#039; &amp;amp;&amp;amp; l.className) { cssClass=l.className; }&lt;br /&gt;
&lt;br /&gt;
	return generalNavLink({url: url, newWin: l.newWin,&lt;br /&gt;
					    title: (typeof l.title != &#039;undefined&#039;) ? l.title : null,&lt;br /&gt;
					    text: (typeof l.text!=&#039;undefined&#039;)?l.text:null,&lt;br /&gt;
					    className: cssClass});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getLastContrib(wikipage, newWin) {&lt;br /&gt;
	getHistoryInfo(wikipage, function(x){processLastContribInfo(x,{page: wikipage, newWin: newWin})});&lt;br /&gt;
}&lt;br /&gt;
function processLastContribInfo(info, stuff) {&lt;br /&gt;
	if(!info.edits || !info.edits.length) { alert(&#039;Popups: an odd thing happened. Please retry.&#039;); return; }&lt;br /&gt;
	if(!info.firstNewEditor) {&lt;br /&gt;
		alert(tprintf(&#039;Only found one editor: %s made %s edits&#039;, [info.edits[0].editor,info.edits.length]));&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + &#039;&amp;amp;diff=cur&amp;amp;oldid=&#039;+info.firstNewEditor.oldid;&lt;br /&gt;
	displayUrl(newUrl, stuff.newWin);&lt;br /&gt;
}&lt;br /&gt;
function getDiffSinceMyEdit(wikipage, newWin) {&lt;br /&gt;
	getHistoryInfo(wikipage, function(x){processDiffSinceMyEdit(x,{page: wikipage, newWin: newWin})});&lt;br /&gt;
}&lt;br /&gt;
function processDiffSinceMyEdit(info, stuff) {&lt;br /&gt;
	if(!info.edits || !info.edits.length) { alert(&#039;Popups: something fishy happened. Please try again.&#039;); return; }&lt;br /&gt;
	var friendlyName=stuff.page.split(&#039;_&#039;).join(&#039; &#039;);&lt;br /&gt;
	if(!info.myLastEdit) {&lt;br /&gt;
		alert(tprintf(&#039;Couldn\&#039;t find an edit by %s\nin the last %s edits to\n%s&#039;,&lt;br /&gt;
			      [info.userName, getValueOf(&#039;popupHistoryLimit&#039;), friendlyName]));&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	if(info.myLastEdit.index==0) {&lt;br /&gt;
		alert(tprintf(&amp;quot;%s seems to be the last editor to the page %s&amp;quot;, [info.userName, friendlyName]));&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + &#039;&amp;amp;diff=cur&amp;amp;oldid=&#039;+ info.myLastEdit.oldid;&lt;br /&gt;
	displayUrl(newUrl, stuff.newWin);&lt;br /&gt;
}&lt;br /&gt;
function displayUrl(url, newWin){&lt;br /&gt;
	if(newWin) window.open(url);&lt;br /&gt;
	else document.location=url;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function magicHistoryLink(l) {&lt;br /&gt;
	// FIXME use onclick change href trick to sort this out instead of window.open&lt;br /&gt;
&lt;br /&gt;
	var jsUrl=&#039;&#039;, title=&#039;&#039;;&lt;br /&gt;
	switch(l.id) {&lt;br /&gt;
	case &#039;lastContrib&#039;:&lt;br /&gt;
		jsUrl=simplePrintf(&#039;javascript:getLastContrib(\&#039;%s\&#039;, %s)&#039;, &lt;br /&gt;
			[l.article.toString(true).split(&amp;quot;&#039;&amp;quot;).join(&amp;quot;\\&#039;&amp;quot;), l.newWin]);&lt;br /&gt;
		title=popupString(&#039;lastContribHint&#039;);&lt;br /&gt;
		break;&lt;br /&gt;
	case &#039;sinceMe&#039;:&lt;br /&gt;
		jsUrl=simplePrintf(&#039;javascript:getDiffSinceMyEdit(\&#039;%s\&#039;, %s)&#039;, &lt;br /&gt;
			[l.article.toString(true).split(&amp;quot;&#039;&amp;quot;).join(&amp;quot;\\&#039;&amp;quot;), l.newWin]);&lt;br /&gt;
		title=popupString(&#039;sinceMeHint&#039;);&lt;br /&gt;
		break;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return generalNavLink({url: jsUrl, newWin: false, // can&#039;t have new windows with JS links, I think&lt;br /&gt;
					    title: title,&lt;br /&gt;
					    text: l.text});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function specialLink(l) {&lt;br /&gt;
	// properties: article, specialpage, text, sep&lt;br /&gt;
	if (typeof l.specialpage==&#039;undefined&#039;||!l.specialpage) return null;&lt;br /&gt;
	var base = pg.wiki.titlebase +  pg.ns.special+&#039;:&#039;+l.specialpage;&lt;br /&gt;
	if (typeof l.sep == &#039;undefined&#039; || l.sep===null) l.sep=&#039;&amp;amp;target=&#039;;&lt;br /&gt;
	var article=l.article.urlString();&lt;br /&gt;
	var hint=popupString(l.specialpage+&#039;Hint&#039;);&lt;br /&gt;
	switch (l.specialpage) {&lt;br /&gt;
	case &#039;Log&#039;: hint=(l.sep==&#039;&amp;amp;user=&#039;) ? popupString(&#039;userLogHint&#039;) : popupString(&#039;blockLogHint&#039;); break;&lt;br /&gt;
	case &#039;Search&#039;:  article=l.article.toString(); break;&lt;br /&gt;
	}&lt;br /&gt;
	if (hint) hint = simplePrintf(hint, [safeDecodeURI(l.article)]);&lt;br /&gt;
	else hint = safeDecodeURI(l.specialpage+&#039;:&#039;+l.article) ;&lt;br /&gt;
&lt;br /&gt;
	var url = base + l.sep + article;&lt;br /&gt;
	return generalNavLink({url: url, title: hint, text: l.text, newWin:l.newWin});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function generalLink(l) {&lt;br /&gt;
	// l.url, l.text, l.title, l.newWin, l.className&lt;br /&gt;
&lt;br /&gt;
	if (typeof l.url==&#039;undefined&#039;) return null;&lt;br /&gt;
&lt;br /&gt;
	// only quotation marks in the url can screw us up now... I think&lt;br /&gt;
	var url=l.url.split(&#039;&amp;quot;&#039;).join(&#039;%22&#039;);&lt;br /&gt;
&lt;br /&gt;
	var ret=&#039;&amp;lt;a href=&amp;quot;&#039; + url + &#039;&amp;quot;&#039;;&lt;br /&gt;
	if (typeof l.title!=&#039;undefined&#039; &amp;amp;&amp;amp; l.title) ret += &#039; title=&amp;quot;&#039; + l.title + &#039;&amp;quot;&#039;;&lt;br /&gt;
	var newWin;&lt;br /&gt;
	if (typeof l.newWin==&#039;undefined&#039; || l.newWin===null) newWin=getValueOf(&#039;popupNewWindows&#039;);&lt;br /&gt;
	else newWin=l.newWin;&lt;br /&gt;
	if (newWin) ret += &#039; target=&amp;quot;_blank&amp;quot;&#039;;&lt;br /&gt;
	if (typeof l.className!=&#039;undefined&#039;&amp;amp;&amp;amp;l.className) ret+=&#039; class=&amp;quot;&#039;+l.className+&#039;&amp;quot;&#039;;&lt;br /&gt;
	ret += &#039;&amp;gt;&#039;;&lt;br /&gt;
	if (typeof l.text==typeof &#039;&#039;) ret+= l.text;&lt;br /&gt;
	ret +=&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function appendParamsToLink(linkstr, params) {&lt;br /&gt;
	var sp=linkstr.parenSplit(RegExp(&#039;(href=&amp;quot;[^&amp;quot;]+?)&amp;quot;&#039;, &#039;i&#039;));&lt;br /&gt;
	if (sp.length&amp;lt;2) return null;&lt;br /&gt;
	var ret=sp.shift() + sp.shift();&lt;br /&gt;
	ret += &#039;&amp;amp;&#039; + params + &#039;&amp;quot;&#039;;&lt;br /&gt;
	ret += sp.join(&#039;&#039;);&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function changeLinkTargetLink(x) { // newTarget, text, hint, summary, clickButton, minor) {&lt;br /&gt;
	if (x.newTarget) {&lt;br /&gt;
		log (&#039;changeLinkTargetLink: newTarget=&#039; + x.newTarget);&lt;br /&gt;
	}&lt;br /&gt;
	// optional: oldTarget (in wikitext)&lt;br /&gt;
	// if x.newTarget omitted or null, remove the link&lt;br /&gt;
&lt;br /&gt;
	// escape &#039;&amp;amp;&#039; and other nasties&lt;br /&gt;
	if(x.newTarget) {&lt;br /&gt;
		x.newTarget=encodeURI(x.newTarget);&lt;br /&gt;
		log(&#039;changeLinkTargetLink: newTarget encoded to &#039; + x.newTarget);&lt;br /&gt;
	}&lt;br /&gt;
	//x.text=encodeURI(x.text);  // this buggers things up on zh.wikipedia.org and doesn&#039;t seem necessary&lt;br /&gt;
	x.clickButton=encodeURI(x.clickButton);&lt;br /&gt;
&lt;br /&gt;
	// this&#039;ll break if charAt(0) is nasty&lt;br /&gt;
	if (typeof x.oldTarget != typeof &#039;&#039;) x.oldTarget=safeDecodeURI(pg.current.article);&lt;br /&gt;
	var cA=literalizeRegex(x.oldTarget);&lt;br /&gt;
	var chs=cA.charAt(0).toUpperCase();&lt;br /&gt;
	chs=&#039;[&#039;+chs + chs.toLowerCase()+&#039;]&#039;;&lt;br /&gt;
	var currentArticleRegexBit=chs+cA.substring(1);&lt;br /&gt;
	currentArticleRegexBit=currentArticleRegexBit&lt;br /&gt;
		.split(RegExp(&#039;[_ ]+&#039;, &#039;g&#039;)).join(&#039;[_ ]+&#039;)&lt;br /&gt;
		.split(&#039;\\(&#039;).join(&#039;(?:%2528|\\()&#039;)&lt;br /&gt;
		.split(&#039;\\)&#039;).join(&#039;(?:%2529|\\))&#039;);&lt;br /&gt;
	currentArticleRegexBit = &#039;\\s*(&#039; + currentArticleRegexBit + &#039;)\\s*&#039;;&lt;br /&gt;
	// e.g. Computer (archaic) -&amp;gt; \s*([Cc]omputer[_ ](?:%2528|\()archaic(?:%2528|\)))\s*&lt;br /&gt;
&lt;br /&gt;
	// autoedit=s~\[\[([Cc]ad)\]\]~[[Computer-aided%20design|$1]]~g;s~\[\[([Cc]AD)[|]~[[Computer-aided%20design|~g&lt;br /&gt;
&lt;br /&gt;
	// get the page to edit from the title&lt;br /&gt;
	try {&lt;br /&gt;
		//var title=document.getElementsByTagName(&#039;h1&#039;)[0].innerHTML.replace(RegExp(&#039; &#039;, &#039;g&#039;), &#039;_&#039;);&lt;br /&gt;
		var title=document.title.split(&#039; - &#039;);&lt;br /&gt;
		title[title.length-1]=&#039;&#039;;&lt;br /&gt;
		title=title.join(&#039; - &#039;).replace(/ - $/, &#039;&#039;);&lt;br /&gt;
	} catch (err) { return; }&lt;br /&gt;
&lt;br /&gt;
	var lk=titledWikiLink({article: new Title(title), newWin:x.newWin,&lt;br /&gt;
						action:  &#039;edit&#039;,&lt;br /&gt;
						text:    x.text,&lt;br /&gt;
						title:   x.hint,&lt;br /&gt;
						className: &#039;popup_change_title_link&#039;&lt;br /&gt;
						});&lt;br /&gt;
	var cmd=&#039;&#039;;&lt;br /&gt;
	if (x.newTarget) {&lt;br /&gt;
		cmd +=&#039;s~\\[\\[&#039;+currentArticleRegexBit+&#039;\\]\\]~[[&#039;+x.newTarget+&#039;|$1]]~g;&#039;;&lt;br /&gt;
		cmd +=  &#039;s~\\[\\[&#039;+currentArticleRegexBit+&#039;[|]~[[&#039;+x.newTarget+&#039;|~g&#039;;&lt;br /&gt;
	} else {&lt;br /&gt;
		cmd += &#039;s~\\[\\[&#039;+currentArticleRegexBit+&#039;\\]\\]~$1~g;&#039;;&lt;br /&gt;
		cmd += &#039;s~\\[\\[&#039;+currentArticleRegexBit+&#039;[|](.*?)\\]\\]~$2~g&#039;;&lt;br /&gt;
	}&lt;br /&gt;
	cmd += &#039;&amp;amp;autoclick=&#039;+x.clickButton;&lt;br /&gt;
	cmd += ( x.minor == null ) ? &#039;&#039; : &#039;&amp;amp;autominor=&#039;+x.minor;&lt;br /&gt;
	cmd += ( x.watch == null ) ? &#039;&#039; : &#039;&amp;amp;autowatch=&#039;+x.watch;&lt;br /&gt;
	cmd += &#039;&amp;amp;autosummary=&#039;+x.summary;&lt;br /&gt;
	return appendParamsToLink(lk, &#039;autoedit=&#039;+cmd);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function redirLink(redirMatch) {&lt;br /&gt;
	// NB redirMatch is in wikiText&lt;br /&gt;
	var ret=&#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	if (getValueOf(&#039;popupAppendRedirNavLinks&#039;) &amp;amp;&amp;amp; getValueOf(&#039;popupNavLinks&#039;)) {&lt;br /&gt;
		ret += &#039;&amp;lt;hr&amp;gt;&#039;;&lt;br /&gt;
		if (getValueOf(&#039;popupFixRedirs&#039;) &amp;amp;&amp;amp; typeof autoEdit != &#039;undefined&#039; &amp;amp;&amp;amp; autoEdit) {&lt;br /&gt;
			log(&#039;redirLink: newTarget=&#039; + redirMatch);&lt;br /&gt;
			ret += addPopupShortcut(&lt;br /&gt;
				changeLinkTargetLink(&lt;br /&gt;
				{newTarget: redirMatch, text: popupString(&#039;Redirects&#039;),&lt;br /&gt;
					      hint: popupString(&#039;Fix this redirect&#039;),&lt;br /&gt;
					      summary: simplePrintf(getValueOf(&#039;popupFixRedirsSummary&#039;),&lt;br /&gt;
								    [pg.current.article.split(&#039;_&#039;).join(&#039; &#039;), redirMatch ]),&lt;br /&gt;
					      clickButton: getValueOf(&#039;popupRedirAutoClick&#039;), minor: true,&lt;br /&gt;
					      watch: getValueOf(&#039;popupWatchRedirredPages&#039;)})&lt;br /&gt;
				, &#039;R&#039;);&lt;br /&gt;
			ret += popupString(&#039; to &#039;);&lt;br /&gt;
		}&lt;br /&gt;
		else ret += popupString(&#039;Redirects&#039;) + popupString(&#039; to &#039;);&lt;br /&gt;
		return ret;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	else return &#039;&amp;lt;br&amp;gt; &#039; + popupString(&#039;Redirects&#039;) + popupString(&#039; to &#039;) +&lt;br /&gt;
		     titledWikiLink({article: new Title().fromWikiText(redirMatch), action: &#039;view&#039;,  /* FIXME: newWin */&lt;br /&gt;
						      text: safeDecodeURI(redirMatch), title: popupString(&#039;Bypass redirect&#039;)});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function arinLink(l) {&lt;br /&gt;
	if (!saneLinkCheck(l)) { return null; }&lt;br /&gt;
	if ( ! l.article.isIpUser() || ! pg.wiki.wikimedia) return null;&lt;br /&gt;
&lt;br /&gt;
	var uN=safeDecodeURI(l.article.userName());&lt;br /&gt;
&lt;br /&gt;
	return generalNavLink({url:&#039;http://ws.arin.net/cgi-bin/whois.pl?queryinput=&#039; + uN, newWin:l.newWin,&lt;br /&gt;
					   title: tprintf(&#039;Look up %s in ARIN whois database&#039;, [uN]),&lt;br /&gt;
					   text: l.text});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function toolDbName() {&lt;br /&gt;
	var ret=null;&lt;br /&gt;
	var theWiki=pg.wiki.hostname.split(&#039;.&#039;)[1];&lt;br /&gt;
	if (pg.wiki.hostname==pg.wiki.commons) {&lt;br /&gt;
		ret = &#039;commonswiki&#039;;&lt;br /&gt;
	} else {&lt;br /&gt;
		switch(theWiki) {&lt;br /&gt;
		case &#039;wikipedia&#039;:&lt;br /&gt;
			ret = pg.wiki.lang + &#039;wiki&#039;;&lt;br /&gt;
			break;&lt;br /&gt;
		default:&lt;br /&gt;
			ret = pg.wiki.lang + theWiki;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	ret+= &#039;_p&#039;;&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function saneLinkCheck(l) {&lt;br /&gt;
	if (typeof l.article != typeof {} || typeof l.text != typeof &#039;&#039;) { return false; }&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
function kateLink(l) {&lt;br /&gt;
	if(!saneLinkCheck(l)) return null;&lt;br /&gt;
	if (! pg.wiki.wikimedia) return null;&lt;br /&gt;
	var uN=safeDecodeURI(l.article.userName());&lt;br /&gt;
&lt;br /&gt;
	var url=&#039;http://tools.wikimedia.de/~&#039; + getValueOf(&#039;popupEditCounterTool&#039;) + &#039;/cgi-bin/count_edits?dbname=&#039;;&lt;br /&gt;
	url += toolDbName() + &#039;&amp;amp;user=&#039; + uN;&lt;br /&gt;
&lt;br /&gt;
	return generalNavLink({url:url, title: tprintf(&#039;katelinkHint&#039;, [uN]), newWin:l.newWin, text: l.text});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function contribsTreeLink(l) {&lt;br /&gt;
	if(!saneLinkCheck(l)) return null;&lt;br /&gt;
	if (! pg.wiki.wikimedia) return null;&lt;br /&gt;
	var uN=safeDecodeURI(l.article.userName());&lt;br /&gt;
&lt;br /&gt;
	var url=&#039;http://tools.wikimedia.de/~interiot/cgi-bin/contribution_tree?dbname=&#039;;&lt;br /&gt;
	url += toolDbName() + &#039;&amp;amp;user=&#039;+ uN;&lt;br /&gt;
&lt;br /&gt;
	return generalNavLink({url:url, title: tprintf(&#039;contribsTreeHint&#039;, [uN]), newWin:l.newWin, text: l.text});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function globalSearchLink(l) {&lt;br /&gt;
	if(!saneLinkCheck(l)) return null;&lt;br /&gt;
&lt;br /&gt;
	var base=&#039;http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&amp;amp;search=&#039;;&lt;br /&gt;
	var article=l.article.urlString();&lt;br /&gt;
&lt;br /&gt;
	return generalNavLink({url:base + article, newWin:l.newWin,&lt;br /&gt;
					   title: tprintf(&#039;globalSearchHint&#039;, [article]),&lt;br /&gt;
					   text: l.text});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function googleLink(l) {&lt;br /&gt;
	if(!saneLinkCheck(l)) return null;&lt;br /&gt;
&lt;br /&gt;
	var base=&#039;http://www.google.com/search?q=&#039;;&lt;br /&gt;
	var article=l.article.urlString();&lt;br /&gt;
&lt;br /&gt;
	return generalNavLink({url:base + &#039;%22&#039; + article + &#039;%22&#039;, newWin:l.newWin,&lt;br /&gt;
					   title: tprintf(&#039;googleSearchHint&#039;, [article]),&lt;br /&gt;
					   text: l.text});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function editorListLink(l) {&lt;br /&gt;
	if(!saneLinkCheck(l)) return null;&lt;br /&gt;
	var article= l.article.articleFromTalkPage() || l.article;&lt;br /&gt;
	var base=&#039;http://tools.wikimedia.de/~tim/counter/?page=&#039;;&lt;br /&gt;
	return generalNavLink({url:base+article.urlString(), &lt;br /&gt;
		title: tprintf(&#039;editorListHint&#039;, [article]), newWin:l.newWin, text: l.text});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function generalNavLink(l) {&lt;br /&gt;
	l.className = (l.className==null) ? &#039;popupNavLink&#039; : l.className;&lt;br /&gt;
	return generalLink(l);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// magic history links&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
function getHistoryInfo(wikipage, whatNext) {&lt;br /&gt;
	getHistory(wikipage, whatNext ? function(d){whatNext(processHistory(d));} : processHistory);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getHistory(wikipage, onComplete) {&lt;br /&gt;
	var url = pg.wiki.titlebase + new Title(wikipage).urlString() + &#039;&amp;amp;action=history&#039; + &#039;&amp;amp;limit=&#039; + getValueOf(&#039;popupHistoryLimit&#039;);&lt;br /&gt;
	return startDownload(url, pg.idNumber+&#039;history&#039;, onComplete);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function processHistory(download) {&lt;br /&gt;
	// screen scrape alert&lt;br /&gt;
	var histInfo={};&lt;br /&gt;
&lt;br /&gt;
	var d=download.data;&lt;br /&gt;
	// pg.misc.data=d; // for debugging&lt;br /&gt;
&lt;br /&gt;
	var edits=[];&lt;br /&gt;
	var split=d.split(&#039;&amp;lt;li&amp;gt;&#039;);&lt;br /&gt;
&lt;br /&gt;
	for (var i=0; i&amp;lt;split.length; ++i) {&lt;br /&gt;
		var histRe=RegExp(&lt;br /&gt;
			&#039;^[(].*?type=&amp;quot;radio&amp;quot; value=&amp;quot;([0-9]*)&amp;quot;.*?class=\&#039;history-user\&#039;&amp;gt;&#039; +&lt;br /&gt;
			&#039;&amp;lt;a href=&amp;quot;(/wiki/User:|/w/index.php[?]title=(Special:Contributions&amp;amp;amp;target=|User:))([^&amp;amp;&amp;quot;]*)&#039;);&lt;br /&gt;
		var match=histRe.exec(split[i]);&lt;br /&gt;
		if (match) {&lt;br /&gt;
			edits.push({ oldid: match[1], editor: match[4] });&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	histInfo.edits=edits;&lt;br /&gt;
&lt;br /&gt;
	var userName=getValueOf(&#039;popupUserName&#039;) || Cookie.read(&#039;enwikiUserName&#039;).split(&#039;+&#039;).join(&#039;_&#039;);&lt;br /&gt;
	histInfo.userName=userName;&lt;br /&gt;
&lt;br /&gt;
	for (var i=0; i&amp;lt;edits.length; ++i) {&lt;br /&gt;
		if (typeof histInfo.myLastEdit == &#039;undefined&#039; &amp;amp;&amp;amp; userName &amp;amp;&amp;amp; edits[i].editor==userName) {&lt;br /&gt;
			histInfo.myLastEdit={index: i, oldid: edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};&lt;br /&gt;
		}&lt;br /&gt;
		if (typeof histInfo.firstNewEditor == &#039;undefined&#039; &amp;amp;&amp;amp; edits[i].editor != edits[0].editor) {&lt;br /&gt;
			histInfo.firstNewEditor={index:i, oldid:edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	//pg.misc.historyInfo=histInfo;&lt;br /&gt;
	return histInfo;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: links.js&lt;br /&gt;
// STARTFILE: options.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// options&lt;br /&gt;
&lt;br /&gt;
// check for cookies and existing value, else use default&lt;br /&gt;
function defaultize(x) {&lt;br /&gt;
	var val=null;&lt;br /&gt;
	if (x!=&#039;popupCookies&#039;) {&lt;br /&gt;
		defaultize(&#039;popupCookies&#039;);&lt;br /&gt;
		if (pg.option.popupCookies &amp;amp;&amp;amp; (val=Cookie.read(x))) {&lt;br /&gt;
			pg.option[x]=val;&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (pg.option[x]===null) {&lt;br /&gt;
		if (typeof window[x] != &#039;undefined&#039; ) pg.option[x]=window[x];&lt;br /&gt;
		else pg.option[x]=pg.optionDefault[x];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function newOption(x, def) {&lt;br /&gt;
	if (typeof pg.option[x]==&#039;undefined&#039;) {&lt;br /&gt;
		pg.option[x]=null;&lt;br /&gt;
	}&lt;br /&gt;
	pg.optionDefault[x]=def;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setDefault(x, def) {&lt;br /&gt;
	return newOption(x, def);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getValueOf(varName) {&lt;br /&gt;
	defaultize(varName);&lt;br /&gt;
	return pg.option[varName];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setOptions() {&lt;br /&gt;
	// user-settable parameters and defaults&lt;br /&gt;
&lt;br /&gt;
	// Basic options&lt;br /&gt;
	newOption(&#039;popupDelay&#039;,               0.5);&lt;br /&gt;
	newOption(&#039;simplePopups&#039;,             false);&lt;br /&gt;
	newOption(&#039;popupStructure&#039;,           &#039;menus&#039;);   // see later - default for popupStructure is &#039;original&#039; if simplePopups is true&lt;br /&gt;
	newOption(&#039;popupActionsMenu&#039;,         true);&lt;br /&gt;
	newOption(&#039;popupAdminLinks&#039;,          false);&lt;br /&gt;
	newOption(&#039;popupShortcutKeys&#039;,        false);&lt;br /&gt;
	newOption(&#039;popupHistoricalLinks&#039;,     true);&lt;br /&gt;
	newOption(&#039;popupOnlyArticleLinks&#039;,    true);&lt;br /&gt;
	newOption(&#039;removeTitles&#039;,             true);&lt;br /&gt;
	newOption(&#039;popupMaxWidth&#039;,            350);&lt;br /&gt;
	newOption(&#039;popupInitialWidth&#039;,        false); // integer or false&lt;br /&gt;
	newOption(&#039;popupSimplifyMainLink&#039;,    true);&lt;br /&gt;
	newOption(&#039;popupAppendRedirNavLinks&#039;, true);&lt;br /&gt;
	newOption(&#039;popupTocLinks&#039;,            false);&lt;br /&gt;
	newOption(&#039;popupSubpopups&#039;,           true);&lt;br /&gt;
&lt;br /&gt;
	// images&lt;br /&gt;
	newOption(&#039;popupImages&#039;,                 true);&lt;br /&gt;
	newOption(&#039;imagePopupsForImages&#039;,        true);&lt;br /&gt;
	newOption(&#039;popupNeverGetThumbs&#039;,         false);&lt;br /&gt;
	newOption(&#039;popupImagesFromThisWikiOnly&#039;, false);&lt;br /&gt;
	newOption(&#039;popupMinImageWidth&#039;,          50);&lt;br /&gt;
	newOption(&#039;popupLoadImagesSequentially&#039;, false);&lt;br /&gt;
	newOption(&#039;popupImagesToggleSize&#039;,       true);&lt;br /&gt;
	newOption(&#039;popupImageSize&#039;,              60);&lt;br /&gt;
&lt;br /&gt;
	// redirs, dabs, reversion&lt;br /&gt;
	newOption(&#039;popupFixRedirs&#039;,             false);&lt;br /&gt;
	newOption(&#039;popupRedirAutoClick&#039;,        &#039;wpDiff&#039;);&lt;br /&gt;
	newOption(&#039;popupFixDabs&#039;,               false);&lt;br /&gt;
	newOption(&#039;popupRevertSummaryPrompt&#039;,   false);&lt;br /&gt;
	newOption(&#039;popupRedlinkRemoval&#039;,        false);&lt;br /&gt;
	newOption(&#039;popupWatchDisambiggedPages&#039;, null);&lt;br /&gt;
	newOption(&#039;popupWatchRedirredPages&#039;,    null);&lt;br /&gt;
&lt;br /&gt;
	// navlinks&lt;br /&gt;
	newOption(&#039;popupNavLinks&#039;,          true);&lt;br /&gt;
	newOption(&#039;popupNavLinkStyle&#039;,      &#039;default&#039;);   // FIXME what&#039;s this do?&lt;br /&gt;
	newOption(&#039;popupNavLinkSeparator&#039;,  &#039; &amp;amp;sdot; &#039;);&lt;br /&gt;
	newOption(&#039;popupLastEditLink&#039;,      true);&lt;br /&gt;
	newOption(&#039;popupEditCounterTool&#039;,   &#039;interiot&#039;);&lt;br /&gt;
	newOption(&#039;popupExtraUserMenu&#039;,     &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	// previews etc&lt;br /&gt;
	newOption(&#039;popupPreviews&#039;,             true);&lt;br /&gt;
	newOption(&#039;popupSummaryData&#039;,          true);&lt;br /&gt;
	newOption(&#039;popupMaxPreviewSentences&#039;,  4);&lt;br /&gt;
	newOption(&#039;popupMaxPreviewCharacters&#039;, 600);&lt;br /&gt;
	newOption(&#039;popupLastModified&#039;,         true);&lt;br /&gt;
	newOption(&#039;popupPreviewKillTemplates&#039;, true);&lt;br /&gt;
	newOption(&#039;popupPreviewRawTemplates&#039;,  false);&lt;br /&gt;
	newOption(&#039;popupPreviewFirstParOnly&#039;,  true);&lt;br /&gt;
&lt;br /&gt;
	// diffs&lt;br /&gt;
	newOption(&#039;popupPreviewDiffs&#039;,          true);&lt;br /&gt;
	newOption(&#039;popupDiffMaxLines&#039;,          100);&lt;br /&gt;
	newOption(&#039;popupDiffContextLines&#039;,      2);&lt;br /&gt;
	newOption(&#039;popupDiffContextCharacters&#039;, 40);&lt;br /&gt;
	newOption(&#039;popupDiffDates&#039;,             true);&lt;br /&gt;
	newOption(&#039;popupDiffDatePrinter&#039;,       &#039;toLocaleString&#039;);&lt;br /&gt;
&lt;br /&gt;
	// edit summaries&lt;br /&gt;
	newOption(&#039;popupFixDabsSummary&#039;,           popupString(&#039;defaultpopupFixDabsSummary&#039;) );&lt;br /&gt;
	newOption(&#039;popupExtendedRevertSummary&#039;,    popupString(&#039;defaultpopupExtendedRevertSummary&#039;) );&lt;br /&gt;
	newOption(&#039;popupTimeOffset&#039;,               null);&lt;br /&gt;
	newOption(&#039;popupRevertSummary&#039;,            popupString(&#039;defaultpopupRevertSummary&#039;) );&lt;br /&gt;
	newOption(&#039;popupFixRedirsSummary&#039;,         popupString(&#039;defaultpopupFixRedirsSummary&#039;) );&lt;br /&gt;
	newOption(&#039;popupRedlinkSummary&#039;,           popupString(&#039;defaultpopupRedlinkSummary&#039;) );&lt;br /&gt;
	newOption(&#039;popupRmDabLinkSummary&#039;,         popupString(&#039;defaultpopupRmDabLinkSummary&#039;) );&lt;br /&gt;
&lt;br /&gt;
	// misc&lt;br /&gt;
	newOption(&#039;popupLiveOptions&#039;,         false);&lt;br /&gt;
	newOption(&#039;popupLiveOptionsExpanded&#039;, false);&lt;br /&gt;
	newOption(&#039;popupCookies&#039;,             false);&lt;br /&gt;
	newOption(&#039;popupUnsimplifyLink&#039;,      false);&lt;br /&gt;
	newOption(&#039;popupHistoryLimit&#039;,        50);&lt;br /&gt;
	newOption(&#039;popupFilters&#039;,             [popupFilterStubDetect,     popupFilterDisambigDetect,&lt;br /&gt;
					       popupFilterPageSize,       popupFilterCountLinks,&lt;br /&gt;
					       popupFilterCountImages,    popupFilterCountCategories,&lt;br /&gt;
					       popupFilterLastModified]);&lt;br /&gt;
	newOption(&#039;extraPopupFilters&#039;,        []);&lt;br /&gt;
	newOption(&#039;popupOnEditSelection&#039;,     true);&lt;br /&gt;
&lt;br /&gt;
	// new windows&lt;br /&gt;
	newOption(&#039;popupNewWindows&#039;,     false);&lt;br /&gt;
	newOption(&#039;popupLinksNewWindow&#039;, {&#039;lastContrib&#039;: true, &#039;sinceMe&#039;: true});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: options.js&lt;br /&gt;
// STARTFILE: strings.js&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
// Translatable strings&lt;br /&gt;
//////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Notes for translators&lt;br /&gt;
// ---------------------&lt;br /&gt;
//&lt;br /&gt;
// If there&#039;s a string that I&#039;ve not included below, please drop a&lt;br /&gt;
// note at [[:en:User_talk:Lupin]].&lt;br /&gt;
//&lt;br /&gt;
// These strings can be changed if they&#039;re impossible to translate to&lt;br /&gt;
// more flexible versions.  Just ask.&lt;br /&gt;
//&lt;br /&gt;
// New translation method: copy the pg.string block below, translate&lt;br /&gt;
// the strings on the right and change the line&lt;br /&gt;
//&lt;br /&gt;
// pg.string = {&lt;br /&gt;
//&lt;br /&gt;
// into&lt;br /&gt;
//&lt;br /&gt;
// popupStrings = {&lt;br /&gt;
//&lt;br /&gt;
// Save this file on your wiki and load that file &#039;&#039;&#039;as well as&#039;&#039;&#039;&lt;br /&gt;
// popups.js or popupsdev.js from your user javascript file.&lt;br /&gt;
// &lt;br /&gt;
// Note that you can either use %s as a replacement parameter in &lt;br /&gt;
// your strings, OR you can use $1 $2 $3 ... if you want to reorder &lt;br /&gt;
// the replacement parameters.&lt;br /&gt;
&lt;br /&gt;
pg.string = {&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	// summary data, searching etc.&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	&#039;article&#039;: &#039;article&#039;,&lt;br /&gt;
  &#039;category&#039;: &#039;catégorie&#039;,&lt;br /&gt;
  &#039;categories&#039;: &#039;catégories&#039;,&lt;br /&gt;
  &#039;image&#039;: &#039;image&#039;,&lt;br /&gt;
  &#039;images&#039;: &#039;images&#039;,&lt;br /&gt;
  &#039;stub&#039;: &#039;ébauche&#039;,&lt;br /&gt;
  &#039;Empty page&#039;: &#039;Page vide&#039;,&lt;br /&gt;
  &#039;kB&#039;: &#039;ko&#039;,&lt;br /&gt;
  &#039;bytes&#039;: &#039;octets&#039;,&lt;br /&gt;
  &#039;day&#039;: &#039;jour&#039;,&lt;br /&gt;
  &#039;days&#039;: &#039;jours&#039;,&lt;br /&gt;
  &#039;hour&#039;: &#039;heure&#039;,&lt;br /&gt;
  &#039;hours&#039;: &#039;heures&#039;,&lt;br /&gt;
  &#039;minute&#039;: &#039;minute&#039;,&lt;br /&gt;
  &#039;minutes&#039;: &#039;minutes&#039;,&lt;br /&gt;
  &#039;second&#039;: &#039;seconde&#039;,&lt;br /&gt;
  &#039;seconds&#039;: &#039;secondes&#039;,&lt;br /&gt;
  &#039;week&#039;: &#039;semaine&#039;,&lt;br /&gt;
  &#039;weeks&#039;: &#039;semaines&#039;,&lt;br /&gt;
  &#039;search&#039;: &#039;rechercher&#039;,&lt;br /&gt;
  &#039;SearchHint&#039;: &#039;Trouver les articles de ce site contenant %s&#039;,&lt;br /&gt;
  &#039;web&#039;: &#039;web&#039;,&lt;br /&gt;
  &#039;global&#039;: &#039;global&#039;,&lt;br /&gt;
  &#039;globalSearchHint&#039;: &#039;Trouver les articles dans toutes les langues contenant %s&#039;,&lt;br /&gt;
  &#039;googleSearchHint&#039;: &#039;Rechercher %s avec Google&#039;,&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	// article-related actions and info&lt;br /&gt;
	// (some actions also apply to user pages)&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	&#039;actions&#039;: &#039;actions&#039;,         ///// view articles and view talk&lt;br /&gt;
  &#039;space&#039;: &#039;espace&#039;,&lt;br /&gt;
  &#039;spacebar&#039;: &#039;barre d\&#039;espace&#039;,&lt;br /&gt;
  &#039;view article&#039;: &#039;voir l\&#039;article&#039;,&lt;br /&gt;
  &#039;viewHint&#039;: &#039;Voir %s&#039;,&lt;br /&gt;
  &#039;talk&#039;: &#039;discussion&#039;,&lt;br /&gt;
  &#039;talk page&#039;: &#039;page de discussion&#039;,&lt;br /&gt;
  &#039;this&amp;amp;nbsp;revision&#039;: &#039;cette&amp;amp;nbsp;version&#039;,&lt;br /&gt;
  &#039;revision %s of %s&#039;: &#039;version %s sur %s&#039;,&lt;br /&gt;
  &#039;Revision %s of %s&#039;: &#039;Version %s sur %s&#039;,&lt;br /&gt;
  &#039;Toggle image size&#039;: &#039;Changer la taille de l\&#039;image&#039;,&lt;br /&gt;
  &#039;del&#039;: &#039;effacer&#039;,                 ///// delete, protect, move&lt;br /&gt;
  &#039;delete&#039;: &#039;effacer&#039;,&lt;br /&gt;
  &#039;deleteHint&#039;: &#039;Effacer %s&#039;,&lt;br /&gt;
  &#039;undeleteShort&#039;: &#039;restaurer&#039;,&lt;br /&gt;
  &#039;UndeleteHint&#039;: &#039;Voir l\&#039;historique d\&#039;effacement de %s&#039;,&lt;br /&gt;
  &#039;protect&#039;: &#039;protéger&#039;,&lt;br /&gt;
  &#039;protectHint&#039;: &#039;Restreindre les droits d\&#039;édition de %s&#039;,&lt;br /&gt;
  &#039;unprotectShort&#039;: &#039;dé&#039;,&lt;br /&gt;
  &#039;unprotectHint&#039;: &#039;Déprotéger %s&#039;,&lt;br /&gt;
  &#039;move&#039;: &#039;déplacer&#039;,&lt;br /&gt;
  &#039;move page&#039;: &#039;déplacer la page&#039;,&lt;br /&gt;
  &#039;MovepageHint&#039;: &#039;Changer le titre de %s&#039;,&lt;br /&gt;
  &#039;edit&#039;: &#039;éditer&#039;,               ///// edit articles and talk&lt;br /&gt;
  &#039;edit article&#039;: &#039;éditer l\&#039;article&#039;,&lt;br /&gt;
  &#039;editHint&#039;: &#039;Changer le contenu de %s&#039;,&lt;br /&gt;
  &#039;edit talk&#039;: &#039;éditer la page de discussion&#039;,&lt;br /&gt;
  &#039;new&#039;: &#039;nouveau&#039;,&lt;br /&gt;
  &#039;new topic&#039;: &#039;nouveau sujet&#039;,&lt;br /&gt;
  &#039;newSectionHint&#039;: &#039;Démarrer une nouvelle section dans %s&#039;,&lt;br /&gt;
  &#039;null edit&#039;: &#039;édition nulle&#039;,&lt;br /&gt;
  &#039;nullEditHint&#039;: &#039;Éditer %s, sans faire de changements&#039;,&lt;br /&gt;
  &#039;hist&#039;: &#039;hist&#039;,               ///// history, diffs, editors, related&lt;br /&gt;
  &#039;history&#039;: &#039;historique&#039;,&lt;br /&gt;
  &#039;History&#039;: &#039;Historique&#039;, // what appears in the titles of history pages&lt;br /&gt;
  &#039;historyHint&#039;: &#039;Afficher l\&#039;historique de %s&#039;,&lt;br /&gt;
  &#039;last&#039;: &#039;dernière&#039;,&lt;br /&gt;
  &#039;lastEdit&#039;: &#039;dernière modification&#039;,&lt;br /&gt;
  &#039;show last edit&#039;: &#039;voir dernière modif&#039;,&lt;br /&gt;
  &#039;Show the last edit&#039;: &#039;Voir les effets de la dernière modification&#039;,&lt;br /&gt;
  &#039;lastContrib&#039;: &#039;dernière contribution&#039;,&lt;br /&gt;
  &#039;last set of edits&#039;: &#039;dernières éditions&#039;,&lt;br /&gt;
  &#039;lastContribHint&#039;: &#039;Voir les effets de la dernière contribution&#039;,&lt;br /&gt;
  &#039;cur&#039;: &#039;act&#039;,&lt;br /&gt;
  &#039;diffCur&#039;: &#039;diff/act&#039;,&lt;br /&gt;
  &#039;Show changes since revision %s&#039;: &#039;Voir les modifications depuis la version %s&#039;,&lt;br /&gt;
  &#039;Diff truncated for performance reasons&#039;: &#039;Diff coupée pour des raisons de performance&#039;,&lt;br /&gt;
  &#039;old&#039;: &#039;ancien&#039;,&lt;br /&gt;
  &#039;oldEdit&#039;: &#039;ancienne version&#039;,&lt;br /&gt;
  &#039;Show the edit made to get revision&#039;: &#039;Voir les modifications pour avoir cette version&#039;,&lt;br /&gt;
  &#039;sinceMe&#039;: &#039;depuis moi&#039;,&lt;br /&gt;
  &#039;changes since mine&#039;: &#039;depuis moi&#039;,&lt;br /&gt;
  &#039;sinceMeHint&#039;: &#039;Voir les changements depuis ma dernière modification&#039;,&lt;br /&gt;
  &#039;Couldn\&#039;t find an edit by %s\nin the last %s edits to\n%s&#039;: &#039;Impossible de trouver une modification par %s\nin dans les dernières %s modifications de\n%s&#039;,&lt;br /&gt;
  &#039;eds&#039;: &#039;eds&#039;,&lt;br /&gt;
  &#039;editors&#039;: &#039;contributeurs&#039;,&lt;br /&gt;
  &#039;editorListHint&#039;: &#039;Liste des utilisateurs qui ont modifié %s&#039;,&lt;br /&gt;
  &#039;related&#039;: &#039;associé&#039;,&lt;br /&gt;
  &#039;relatedChanges&#039;: &#039;relatedChanges&#039;,&lt;br /&gt;
  &#039;related changes&#039;: &#039;changements associés&#039;,&lt;br /&gt;
  &#039;RecentchangeslinkedHint&#039;: &#039;Montrer les changements dans les articles associés à %s&#039;,&lt;br /&gt;
  &#039;editOld&#039;: &#039;editOld&#039;,          ///// edit old version, or revert&lt;br /&gt;
  &#039;rv&#039;: &#039;rv&#039;,&lt;br /&gt;
  &#039;revert&#039;: &#039;revert&#039;,&lt;br /&gt;
  &#039;revertHint&#039;: &#039;Revert to %s&#039;,&lt;br /&gt;
  &#039;defaultpopupRedlinkSummary&#039;: &#039;Enlever le lien vers la page vide [[%s]] en utilisant [[:en:Wikipedia:Tools/Navigation_popups|popups]]&#039;,&lt;br /&gt;
  &#039;defaultpopupFixDabsSummary&#039;: &#039;Désambigüisation [[%s]] à [[%s]] en utilisant [[:en:Wikipedia:Tools/Navigation_popups|popups]]&#039;,&lt;br /&gt;
  &#039;defaultpopupFixRedirsSummary&#039;: &#039;Rediriger le contournement de [[%s]] à [[%s]] en utilisant [[:en:Wikipedia:Tools/Navigation_popups|popups]]&#039;,&lt;br /&gt;
  &#039;defaultpopupExtendedRevertSummary&#039;: &#039;Revenir à la révision datée du %s de %s, oldid %s en utilisant [[:en:Wikipedia:Tools/Navigation_popups|popups]]&#039;,&lt;br /&gt;
  &#039;defaultpopupRevertSummary&#039;: &#039;Revenir à la révision %s en utilisant [[:en:Wikipedia:Tools/Navigation_popups|popups]]&#039;,&lt;br /&gt;
  &#039;defaultpopupRmDabLinkSummary&#039;: &#039;Enlever le lien vers la page de nettoyage [[%s]] en utilisant [[:en:Wikipedia:Tools/Navigation_popups|popups]]&#039;,&lt;br /&gt;
  &#039;Redirects&#039;: &#039;Redirige&#039;, // as in Redirects to ...&lt;br /&gt;
  &#039; to &#039;: &#039; vers &#039;,           // as in Redirects to ...&lt;br /&gt;
  &#039;Bypass redirect&#039;: &#039;Contourner la redirection&#039;,&lt;br /&gt;
  &#039;Fix this redirect&#039;: &#039;Réparer la redirection&#039;,&lt;br /&gt;
  &#039;disambig&#039;: &#039;disambig&#039;,          ///// add or remove dab etc.&lt;br /&gt;
  &#039;disambigHint&#039;: &#039;Disambiguate this link to [[%s]]&#039;,&lt;br /&gt;
  &#039;Click to disambiguate this link to:&#039;: &#039;Click to disambiguate this link to:&#039;,&lt;br /&gt;
  &#039;remove this link&#039;: &#039;supprime ce lien&#039;,&lt;br /&gt;
  &#039;remove all links to this page from this article&#039;: &#039;supprime tous les liens vers cette page depuis cet article&#039;,&lt;br /&gt;
  &#039;remove all links to this disambig page from this article&#039;: &#039;supprime tous les liens vers cette page de désambigüisation depuis cet article&#039;,&lt;br /&gt;
  &#039;mainlink&#039;: &#039;mainlink&#039;,          ///// links, watch, unwatch&lt;br /&gt;
  &#039;wikiLinks&#039;: &#039;wikiLinks&#039;,&lt;br /&gt;
  &#039;links here&#039;: &#039;pointe ici&#039;,&lt;br /&gt;
  &#039;whatLinksHere&#039;: &#039;whatLinksHere&#039;,&lt;br /&gt;
  &#039;what links here&#039;: &#039;Pages liées&#039;,&lt;br /&gt;
  &#039;WhatlinkshereHint&#039;: &#039;Liste des pages qui sont liées à %s&#039;,&lt;br /&gt;
  &#039;unwatchShort&#039;: &#039;ne plus&#039;,&lt;br /&gt;
  &#039;watchThingy&#039;: &#039;suivre&#039;,  // called watchThingy because {}.watch is a function&lt;br /&gt;
  &#039;watchHint&#039;: &#039;Ajouter %s à ma liste de suivi&#039;,&lt;br /&gt;
  &#039;unwatchHint&#039;: &#039;Enlève %s de ma liste de suivi&#039;,&lt;br /&gt;
	&#039;Only found one editor: %s made %s edits&#039;: &#039;Un seul éditeur trouvé: %s a fait %s modifications&#039;,&lt;br /&gt;
	&#039;%s seems to be the last editor to the page %s&#039;: &#039;%s semble être le dernier éditeur de la page %s&#039;,&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	// diff previews&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	&#039;Diff truncated for performance reasons&#039;: &#039;Diff tronquée pour des raisons de performance&#039;,&lt;br /&gt;
	&#039;Old revision&#039;: &#039;Ancienne révision&#039;,&lt;br /&gt;
	&#039;New revision&#039;: &#039;Nouvelle révision&#039;,&lt;br /&gt;
	&#039;Something went wrong :-(&#039;: &#039;Quelque chose n\&#039;a pas marché :-(&#039;,&lt;br /&gt;
	&#039;Empty revision, maybe non-existent&#039;: &#039;Révision vide, peut-être inexistante&#039;,&lt;br /&gt;
	&#039;Unknown date&#039;: &#039;Date inconnue&#039;,&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	// user-related actions and info&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	&#039;user&#039;: &#039;utilisateur&#039;,               ///// user page, talk, email, space&lt;br /&gt;
  &#039;user page&#039;: &#039;page&amp;amp;nbsp;utilisateur&#039;,&lt;br /&gt;
  &#039;user talk&#039;: &#039;discussion avec l\&#039;utilisateur&#039;,&lt;br /&gt;
  &#039;edit user talk&#039;: &#039;édite la discussion avec l\&#039;utilisateur&#039;,&lt;br /&gt;
  &#039;leave comment&#039;: &#039;laisser un commentaire&#039;,&lt;br /&gt;
  &#039;email&#039;: &#039;email&#039;,&lt;br /&gt;
  &#039;email user&#039;: &#039;email à l\&#039;utilisateur&#039;,&lt;br /&gt;
  &#039;EmailuserHint&#039;: &#039;Envoyer un email à %s&#039;,&lt;br /&gt;
  &#039;space&#039;: &#039;Espace utilisateur&#039;,&lt;br /&gt;
  &#039;PrefixindexHint&#039;: &#039;Montre les pages de l\&#039;espace d\&#039;utilisateur de %s&#039;,&lt;br /&gt;
  &#039;count&#039;: &#039;compte&#039;,             ///// contributions, tree, log&lt;br /&gt;
  &#039;edit counter&#039;: &#039;edit counter&#039;,&lt;br /&gt;
  &#039;katelinkHint&#039;: &#039;Count the countributions made by %s&#039;,&lt;br /&gt;
  &#039;contribs&#039;: &#039;contribs&#039;,&lt;br /&gt;
  &#039;contributions&#039;: &#039;contributions&#039;,&lt;br /&gt;
  &#039;ContributionsHint&#039;: &#039;Lister les contributions de %s&#039;,&lt;br /&gt;
  &#039;tree&#039;: &#039;tree&#039;,&lt;br /&gt;
  &#039;contribsTree&#039;: &#039;contribsTree&#039;,&lt;br /&gt;
  &#039;contribsTreeHint&#039;: &#039;Explorer les contributions de %s par nom d\&#039;espace et par article&#039;,&lt;br /&gt;
  &#039;log&#039;: &#039;log&#039;,&lt;br /&gt;
  &#039;user log&#039;: &#039;journal de l\&#039;utilisateur&#039;,&lt;br /&gt;
  &#039;userLogHint&#039;: &#039;Montrer le journal de l\&#039;utilisateur %s&#039;,&lt;br /&gt;
  &#039;arin&#039;: &#039;ARIN lookup&#039;,             ///// ARIN lookup, block user or IP&lt;br /&gt;
  &#039;Look up %s in ARIN whois database&#039;: &#039;Look up %s in the ARIN whois database&#039;,&lt;br /&gt;
  &#039;unblockShort&#039;: &#039;un&#039;,&lt;br /&gt;
  &#039;block&#039;: &#039;bloquer&#039;,&lt;br /&gt;
  &#039;block user&#039;: &#039;Bloquer l\&#039;utilisateur&#039;,&lt;br /&gt;
  &#039;IpblocklistHint&#039;: &#039;Débloquer %s&#039;,&lt;br /&gt;
  &#039;BlockipHint&#039;: &#039;Empêcher %s d\&#039;éditer&#039;,&lt;br /&gt;
  &#039;block log&#039;: &#039;Journal des blocages&#039;,&lt;br /&gt;
  &#039;blockLogHint&#039;: &#039;Montre le journal des blocages de %s&#039;,&lt;br /&gt;
	&#039;Invalid %s %s&#039;: &#039;L\&#039;option %s est  invalide : %s&#039;,&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	// Autoediting&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	&#039;Enter a non-empty edit summary or press cancel to abort&#039;: &#039;Enter a non-empty edit summary or press cancel to abort&#039;,&lt;br /&gt;
	&#039;The %s button has been automatically clicked. Please wait for the next page to load.&#039;: &#039;The %s button has been automatically clicked. Please wait for the next page to load.&#039;,&lt;br /&gt;
	&#039;Could not find button %s. Please check the settings in your javascript file.&#039;: &#039;Could not find button %s. Please check the settings in your javascript file.&#039;,&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	// Popups setup&lt;br /&gt;
	/////////////////////////////////////&lt;br /&gt;
	&#039;Display navigation links at the top of the popup&#039;: &#039;Display navigation links at the top of the popup&#039;,&lt;br /&gt;
	&#039;Download preview data&#039;: &#039;Download preview data from the Wikipedia servers&#039;,&lt;br /&gt;
	&#039;Load images&#039;: &#039;Load images&#039;,&lt;br /&gt;
	&#039;Never download extra stuff for images/previews&#039;: &#039;Never download extra stuff for images/previews&#039;,&lt;br /&gt;
	&#039;Only start downloading when told to do so&#039;: &#039;Only start downloading when told to do so&#039;,&lt;br /&gt;
	&#039;Open full-size image&#039;: &#039;Open full-size image&#039;,&lt;br /&gt;
	&#039;Preview only on click&#039;: &#039;Preview only on click&#039;,&lt;br /&gt;
	&#039;Show/hide options&#039;: &#039;Show/hide options&#039;,&lt;br /&gt;
	&#039;Show image previews&#039;: &#039;Show image previews&#039;,&lt;br /&gt;
	&#039;Show navigation links&#039;: &#039;Show navigation links&#039;,&lt;br /&gt;
	&#039;Show page summary data&#039;: &#039;Show page summary data&#039;,&lt;br /&gt;
	&#039;Show previews&#039;: &#039;Show previews&#039;,&lt;br /&gt;
	&#039;Show summary data&#039;: &#039;Show summary data&#039;,&lt;br /&gt;
	&#039;Show text previews&#039;: &#039;Show text previews&#039;,&lt;br /&gt;
	&#039;Simple popups&#039;: &#039;Simple popups&#039;,&lt;br /&gt;
	&#039;Toggle this option&#039;: &#039;Toggle this option&#039;,&lt;br /&gt;
	&#039;zxy&#039;: &#039;zxy&#039;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function popupString(str) {&lt;br /&gt;
	if (typeof popupStrings != &#039;undefined&#039; &amp;amp;&amp;amp; popupStrings &amp;amp;&amp;amp; popupStrings[str]) { return popupStrings[str]; }&lt;br /&gt;
	if (pg.string[str]) { return pg.string[str]; }&lt;br /&gt;
	return str;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function simplePrintf(str, subs) {&lt;br /&gt;
	if (!subs) { return str; }&lt;br /&gt;
	var ret=[];&lt;br /&gt;
	var s=str.parenSplit(/(%s|\$[0-9]+)/);&lt;br /&gt;
	var i=0;&lt;br /&gt;
	do {&lt;br /&gt;
		ret.push(s.shift());&lt;br /&gt;
		if ( !s.length ) { break; }&lt;br /&gt;
		var cmd=s.shift();&lt;br /&gt;
		if (cmd == &#039;%s&#039;) {&lt;br /&gt;
			if ( i &amp;lt; subs.length ) { ret.push(subs[i]); } else { ret.push(cmd); }&lt;br /&gt;
			++i;&lt;br /&gt;
		} else {&lt;br /&gt;
			var j=parseInt( cmd.replace(&#039;$&#039;, &#039;&#039;), 10 ) - 1;&lt;br /&gt;
			if ( j &amp;gt; -1 &amp;amp;&amp;amp; j &amp;lt; subs.length ) { ret.push(subs[j]); } else { ret.push(cmd); }&lt;br /&gt;
		}&lt;br /&gt;
	} while (s.length &amp;gt; 0);&lt;br /&gt;
	return ret.join(&#039;&#039;);&lt;br /&gt;
}&lt;br /&gt;
function tprintf(str,subs) {&lt;br /&gt;
	if (typeof subs != typeof []) { subs = [subs]; }&lt;br /&gt;
	return simplePrintf(popupString(str), subs);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// ENDFILE: strings.js&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion_MediaWiki:Monobook.js&amp;diff=2596</id>
		<title>Discussion MediaWiki:Monobook.js</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion_MediaWiki:Monobook.js&amp;diff=2596"/>
		<updated>2006-04-23T10:52:00Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Explications à propos de popups.js...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Désolé d&#039;encombrer les modifications récentes avec ce popups.js depuis quelques jours, je fais toutes sortes de tests pour que ça marche mais c&#039;est pas gagné. Je laisse quelques temps un lien vers cela ici pour que vous voyez ce que ça donne. Pour un test satisfaisant, passez juste votre souris au dessus d&#039;un lien contenant &amp;quot;index.php?title=&amp;quot;, par exemple dans les [[Special:Recentchanges]], passer au dessus du lien &amp;quot;hist&amp;quot; d&#039;un article... Bon dites moi si ça vaut la peine après tout de s&#039;atteler à ce que ça marche pour tout le site. --[[Utilisateur:Henrique|Henrique]] 23 avril 2006 à 12:52 (CEST)&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/menu.css&amp;diff=2555</id>
		<title>Utilisateur:Henrique/menu.css</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/menu.css&amp;diff=2555"/>
		<updated>2006-04-19T21:59:56Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* menu magic - many thanks to [[User:Zocky]]! */&lt;br /&gt;
&lt;br /&gt;
span.popup_menu&lt;br /&gt;
{&lt;br /&gt;
	display:none;&lt;br /&gt;
	position:absolute;&lt;br /&gt;
	left:0px; top:2.3ex;&lt;br /&gt;
	z-index:2;&lt;br /&gt;
	width:10em; &lt;br /&gt;
	background:white; &lt;br /&gt;
	border:solid 1px grey;&lt;br /&gt;
}&lt;br /&gt;
span.popup_menu a {display:block;}&lt;br /&gt;
span.popup_menu_row a {display:inline;}&lt;br /&gt;
span.popup_menu_row {display:block;}&lt;br /&gt;
div.popup_drop {display:inline; position:relative}&lt;br /&gt;
div.popup_drop:hover span.popup_menu,&lt;br /&gt;
div.popup_drop span.popup_menu:hover {display:inline; background:White; padding:2px 2px 2px 2px}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* other colours, styles and so on */&lt;br /&gt;
span.popup_menu a:hover {background:#CCf; color:#44f}&lt;br /&gt;
span.popup_mainlink {font-size: 140%; font-weight: bold}&lt;br /&gt;
&lt;br /&gt;
table.popupBorderTable { background: #FFBE20 /* orange */ }&lt;br /&gt;
table.popupTable { background: #FFFAEF }&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion_utilisateur:Lucretius&amp;diff=2475</id>
		<title>Discussion utilisateur:Lucretius</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion_utilisateur:Lucretius&amp;diff=2475"/>
		<updated>2006-04-15T09:34:48Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Bienvenue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bienvenue ==&lt;br /&gt;
Content de te lire ici Lucretius, je ne sais si on se connaît autrement, mais j&#039;ai trouvé ton site athée à la fois original sur le fond et élégant sur la forme (bien que pour ma part, je me qualifierais plutôt de déiste, pour faire vite). --[[Utilisateur:Henrique|Henrique]] 13 avril 2006 à 15:38 (CEST)&lt;br /&gt;
:Contente aussi, de te lire ici Lucretius. La qualité de ta plume ne pourra qu&#039;être appréciée, même sans délire sur le culte de la grenouille...--[[Utilisateur:Coc|Coc]] 13 avril 2006 à 15:55 (CEST)&lt;br /&gt;
&lt;br /&gt;
::Merci à tous pour votre accueil si chaleureux.&lt;br /&gt;
::J&#039;écume internet depuis bien moins longtemps que vous, mais j&#039;espère contribuer à ce site qui est &lt;br /&gt;
::un prolongement de mon action aussi régulièrement que possible.&lt;br /&gt;
::Je ne connais pas encore toutes les subtilités du wiki, mais promis, je me soignerai.&lt;br /&gt;
&lt;br /&gt;
::--[[Utilisateur:Lucretius|Lucretius]] 13 avril 2006 à 16:03 (CEST)&lt;br /&gt;
&lt;br /&gt;
::: Oh ben si en plus vous vous connaissez déjà tous les deux.... Au fait je ne suis pas aller revoir ton site, mais tu peux ajouter comme bon te semble l&#039;annonce du numéro de la recherche sur Darwin. :::Joli squelette Spip, si c&#039;est toi qui l&#039;a fait tout seul, bravo...&lt;br /&gt;
:::--[[Utilisateur:Tjrecherches|Tjrecherches]] 13 avril 2006 à 16:07 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::::Pour le squelette spip, je ne suis pas assez doué pour l&#039;avoir créé, je n&#039;ai fait que l&#039;adapter graphiquement et y ajouter un zeste de Javascript pour les fenêtres déroulantes.&lt;br /&gt;
&lt;br /&gt;
:::::Et coc, je la connais déjà pour avoir échanger aimablement quelques posts sur le forum &amp;quot;Une lueur dans l&#039;obscurité&amp;quot;.&lt;br /&gt;
:::::Pour tout avouer, je m&#039;exprime beaucoup plus sur le forum [http://libresansdieu.org/bb/index.php LibreSansDieu] dont je trouve le ton très libre.&lt;br /&gt;
&lt;br /&gt;
:::::--[[Utilisateur:Lucretius|Lucretius]] 13 avril 2006 à 16:21 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::: Il me semble en effet que tu utilises le squelette de Cent20.net, non ? --[[Utilisateur:Henrique|Henrique]] 14 avril 2006 à 00:33 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::::Rien n&#039;échappe à l&#039;oeil exercé de Henrique.&lt;br /&gt;
:::::--[[Utilisateur:Lucretius|Lucretius]] 14 avril 2006 à 15:28 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::::: J&#039;ai cherché récemment ce qu&#039;il y avait comme squelette pour un projet de site officiel sous SPIP, celui-ci avait particulièrement retenu mon attention... Comme l&#039;usage de SPIP semble pour l&#039;instant abandonné au profit d&#039;Ovidentia, j&#039;ai aussi pensé à faire un blog spinoziste avec, mais si ce projet voit le jour, il va falloir que je le personnalise à mort parce que les gens susceptibles de s&#039;intéresser au blog d&#039;un athée pourront souvent l&#039;être aussi pour celui d&#039;un spinoziste... Comme quoi, il semblerait qu&#039;on ait quelques goûts communs en tout cas ;-) --[[Utilisateur:Henrique|Henrique]] 15 avril 2006 à 11:34 (CEST)&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Etudiants_de_la_Bible&amp;diff=2455</id>
		<title>Etudiants de la Bible</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Etudiants_de_la_Bible&amp;diff=2455"/>
		<updated>2006-04-13T22:26:11Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Etudiants de la Bible déplacé vers Étudiants de la Bible: orthographe exacte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Étudiants de la Bible]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=MediaWiki:Permalink&amp;diff=2349</id>
		<title>MediaWiki:Permalink</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=MediaWiki:Permalink&amp;diff=2349"/>
		<updated>2006-04-10T13:00:36Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Cet outil sert à définir un lien permanent sur la page au moment où elle est visualisée, ne tenant donc justement pas compte des modifications ultérieures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lien permanent&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/monobook.css&amp;diff=2333</id>
		<title>Utilisateur:Henrique/monobook.css</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Utilisateur:Henrique/monobook.css&amp;diff=2333"/>
		<updated>2006-04-08T23:45:46Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* edit this file to customize the monobook skin for the entire site arrondir quelques coins, seulement possible avec mozilla/firefox/et autres navigateurs spéciaux */&lt;br /&gt;
body {background : #FFFFFF;}&lt;br /&gt;
&lt;br /&gt;
a {&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    color: #36b;&lt;br /&gt;
    background: none;&lt;br /&gt;
}&lt;br /&gt;
a:visited {&lt;br /&gt;
    color: #36b;&lt;br /&gt;
}&lt;br /&gt;
a:active {&lt;br /&gt;
    color: #36b;&lt;br /&gt;
}&lt;br /&gt;
a:hover {&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
a.stub {&lt;br /&gt;
	color: #772233;&lt;br /&gt;
	}&lt;br /&gt;
a.new, #p-personal a.new {&lt;br /&gt;
color: #772233;&lt;br /&gt;
}&lt;br /&gt;
a.new:visited, #p-personal a.new:visited {&lt;br /&gt;
    color: #772233;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
img {&lt;br /&gt;
    border: none;&lt;br /&gt;
    vertical-align: middle;&lt;br /&gt;
}&lt;br /&gt;
p {&lt;br /&gt;
    margin: .4em 0 .5em 0;&lt;br /&gt;
    line-height: 1.5em; &lt;br /&gt;
}&lt;br /&gt;
p img {&lt;br /&gt;
    margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
hr {&lt;br /&gt;
    height: 1px;&lt;br /&gt;
    color: #aaa;&lt;br /&gt;
    background-color: #aaa;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    margin: .2em 0 .2em 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
h1, h2, h3, h4, h5, h6 {&lt;br /&gt;
    color: #6495ED;&lt;br /&gt;
    background: none;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding-top: .5em;&lt;br /&gt;
    padding-bottom: .17em;&lt;br /&gt;
    border-bottom: 1px solid #aaa;&lt;br /&gt;
}&lt;br /&gt;
h1 { font-size: 200%;&lt;br /&gt;
font-family: Times, serif;&lt;br /&gt;
font-variant: small-caps;&lt;br /&gt;
font-weight: bold;&lt;br /&gt;
margin-top: 2%;&lt;br /&gt;
}&lt;br /&gt;
h2 { font-size: 150%; }&lt;br /&gt;
h3, h4, h5, h6 {&lt;br /&gt;
    border-bottom: dashed 1px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
h3 { font-size: 132%;  margin-left: 5px;}&lt;br /&gt;
h4 { font-size: 116%; margin-left: 5px;}&lt;br /&gt;
h5 { font-size: 100%; margin-left: 5px;}&lt;br /&gt;
h6 { font-size: 80%;  margin-left: 5px;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#content {background:  White; -moz-border-radius: 0.4em;}&lt;br /&gt;
#footer{background: #e5f6ff; -moz-border-radius: 0.4em;}&lt;br /&gt;
&lt;br /&gt;
#p-personal li a {&lt;br /&gt;
        background-color: #e5f6ff;&lt;br /&gt;
color:#a6a6a6;&lt;br /&gt;
}&lt;br /&gt;
#p-personal li a:hover {&lt;br /&gt;
    background-color:  #00BFFF;&lt;br /&gt;
     color:#ffffff;&lt;br /&gt;
     text-decoration: none;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#p-cactions li a {background: #F8F8FF;}&lt;br /&gt;
#p-cactions li.selected a, #p-cactions li a:hover {background-color: white;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.pBody {background: #F0F8FF; border: none;}&lt;br /&gt;
&lt;br /&gt;
li#pt-userpage,&lt;br /&gt;
li#pt-anonuserpage,&lt;br /&gt;
li#pt-login {&lt;br /&gt;
    background: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
li#n-currentevents, li#n-wikicitieshome, li#n-randompage, li#n-sitesupport, li#n-problemreport, li#n-mailinglists, div.pBody&amp;gt;form.searchform  {display: none;}&lt;br /&gt;
&lt;br /&gt;
div#p-nav&amp;gt;h5, div#p-search&amp;gt;h5, div#p-tb&amp;gt;h5 {background: #87CEEB; border: none;  -moz-border-radius-topright: 1em;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#p-cactions ul li, &lt;br /&gt;
#p-cactions ul li a {  &lt;br /&gt;
  -moz-border-radius-topleft: 1em;&lt;br /&gt;
  -moz-border-radius-topright: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#content { &lt;br /&gt;
  -moz-border-radius-topleft: 1em; &lt;br /&gt;
  -moz-border-radius-bottomleft: 1em;&lt;br /&gt;
}&lt;br /&gt;
div.pBody {&lt;br /&gt;
  -moz-border-radius-topright: 1em;&lt;br /&gt;
  -moz-border-radius-bottomright: 1em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Arrondir quelques boutons */&lt;br /&gt;
#wpSave, #wpSave:hover {-moz-border-radius: 1em}&lt;br /&gt;
#wpPreview, #wpPreview:hover {-moz-border-radius: 1em}&lt;br /&gt;
.searchButton, .searchButton:hover {-moz-border-radius: 1em}&lt;br /&gt;
&lt;br /&gt;
/* coins arrondis pour les vignettes + effet de relief */&lt;br /&gt;
div.thumb div {&lt;br /&gt;
    border: 1px solid #999;&lt;br /&gt;
    border-right: 2px solid #999;&lt;br /&gt;
    border-bottom: 2px solid #999;&lt;br /&gt;
    -moz-border-radius: 0.6em&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* coins arrondis pour les zones de texte préformaté */&lt;br /&gt;
pre {-moz-border-radius: 0.6em}&lt;br /&gt;
&lt;br /&gt;
/* coins arrondis pour les tables */&lt;br /&gt;
table {-moz-border-radius: 0.6em}&lt;br /&gt;
&lt;br /&gt;
/* Rendre plus discret le lien &amp;quot;modifier&amp;quot; */&lt;br /&gt;
.editsection {font-size: 0.8em; color: gray}&lt;br /&gt;
.editsection a {color: gray; margin: 0.5em}&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=MediaWiki:Nologin&amp;diff=2329</id>
		<title>MediaWiki:Nologin</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=MediaWiki:Nologin&amp;diff=2329"/>
		<updated>2006-04-07T12:43:45Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vous n&#039;avez pas encore créé de compte ? $1&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Fichier:A_faire.png&amp;diff=2288</id>
		<title>Fichier:A faire.png</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Fichier:A_faire.png&amp;diff=2288"/>
		<updated>2006-04-05T12:34:06Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Mod%C3%A8le:Fait&amp;diff=2287</id>
		<title>Modèle:Fait</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Mod%C3%A8le:Fait&amp;diff=2287"/>
		<updated>2006-04-05T12:32:20Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:fait.png|30px|Fait]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Fichier:Fait.png&amp;diff=2286</id>
		<title>Fichier:Fait.png</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Fichier:Fait.png&amp;diff=2286"/>
		<updated>2006-04-05T12:30:53Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Tj-encyclop%C3%A9die:Accueil&amp;diff=2272</id>
		<title>Tj-encyclopédie:Accueil</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Tj-encyclop%C3%A9die:Accueil&amp;diff=2272"/>
		<updated>2006-04-04T15:29:10Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Les règles de base */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est consacrée à l&#039;accueil de ceux qui veulent participer au projet d&#039;un site encyclopédique  sur les Témoins de Jéhovah. Bienvenue donc :-)&lt;br /&gt;
&lt;br /&gt;
Une fois accueillis, il reste à traiter de questions portant sur l&#039;organisation de ce projet. On exposera ici petit à petit les principes d&#039;organisation retenus. &lt;br /&gt;
&lt;br /&gt;
Chacun peut dores et déjà en discuter en cliquant sur discussion en haut à droite de &amp;quot;à propos&amp;quot;, puis en cliquant sur &amp;quot;+&amp;quot; pour créer un nouveau sujet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ce projet est public&#039;&#039;&#039;, cela veut dire non seulement que chacun a le droit d&#039;y participer directement, mais aussi que ses initiateurs &#039;&#039;espèrent&#039;&#039; que vous voudrez bien le faire !&lt;br /&gt;
&lt;br /&gt;
==Pour commencer tout de suite==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez :&lt;br /&gt;
* Lire ce qui a été fait pour l&#039;instant pour voir s&#039;il n&#039;y a pas des points que vous pourriez compléter (en ajoutant des précisions, des références justifiant ce qui est dit etc.), d&#039;autres que vous pourriez corriger (en le justifiant autant que possible dans la page de discussion) ou bien simplement corriger des fautes d&#039;orthographe ou de grammaire. Il suffit de cliquer sur &amp;quot;modifier&amp;quot; en haut vers le milieu - ou au dessus d&#039;un paragraphe pour un article assez long - pour accéder à l&#039;édition de l&#039;article.&lt;br /&gt;
* Cliquer sur n&#039;importe quel lien rouge du site : vous aboutirez alors à une fenêtre d&#039;édition où vous pourrez apporter vos connaissances en y écrivant aussi facilement que dans un forum web avec les outils de mise en forme de la barre de boutons au dessus de la fenêtre d&#039;édition. &lt;br /&gt;
* Vous pouvez créer un nouvel article sur un sujet qui n&#039;a pas encore été proposé, en créant dans une page - par exemple dans le [[Bac à sable]] - un lien de la façon suivante : &amp;lt;nowiki&amp;gt;[[Exemple de titre d&#039;article]]&amp;lt;/nowiki&amp;gt; et en vous étant assuré au préalable que le sujet n&#039;était pas déjà traité au moyen de l&#039;outil de recherche sur le site. Une fois la page sauvegardée, cliquez sur le lien ainsi généré et éditez votre page !&lt;br /&gt;
&lt;br /&gt;
Ou vous pouvez créer votre article en l&#039;écrivant dans la barre d&#039;adresse à la suite de &amp;quot;title=&amp;quot;, par exemple http://cchasson.free.fr/index.php?title=essai, si vous voulez créer la page &amp;quot;essai&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Pour aller plus loin et en apprendre davantage sur la participation à un site utilisant MediaWiki, n&#039;hésitez pas à consulter cette page : http://fr.wikipedia.org/wiki/Aide:Aide&lt;br /&gt;
*&#039;&#039;&#039;Pour faciliter l&#039;utilisation de ce site&#039;&#039;&#039;, nous vous conseillons d&#039;utiliser le navigateur [http://www.mozilla-europe.org/fr/products/firefox/ Firefox], totalement gratuit, plus rapide qu&#039;Internet Explorer et  qui vous permettra une navigation &amp;quot;par onglets&amp;quot;. De plus, une fois que vous aurez installé Firefox, vous pourrez aussi installer l&#039;[http://wikipedia.mozdev.org/ extension Wikipedia] spécialement conçue pour utiliser très facilement les sites, comme celui-ci, utilisant &amp;quot;MediaWiki&amp;quot; – le logiciel de Wikipédia (Attention avec la dernière version de Firefox 1.5 sur Windows, la version stable 0.6 des extensions s&#039;installe en Allemand, il faut aller dans &amp;quot;Version&amp;quot; et prendre la version béta de développement 0.8 pour une installation correcte en français. La nouvelle version 1.5 de Firefix ne prend pas en compte aucune des versions actuelles). Ainsi, vous pourrez facilement obtenir les commandes de base à titre d&#039;aide mémoire et aurez notamment un outil pour insérer facilement des caractères spéciaux fréquents (comme – × € À æ È...) dans vos textes. (Vous pourrez aussi installer une foule d&#039;extensions pour Firefox, qui donnent une toute nouvelle vision du web [http://extensions.geckozone.org/Accueil ici])&lt;br /&gt;
&lt;br /&gt;
==Les règles de base==&lt;br /&gt;
Provisoires pour l&#039;heure, elles permettent de travailler collectivement à ce projet dans les meilleures conditions :&lt;br /&gt;
*Essayer autant que possible d&#039;en rester à un point de vue neutre : exposer aussi complètement que possible tous les aspects d&#039;un sujet touchant aux [[TJ]], y compris ce que les observateurs critiques peuvent en penser mais éviter de s&#039;engager personnellement dans un article même (ce qui n&#039;empêche pas de s&#039;engager davantage si on le souhaite dans la page de discussion).&lt;br /&gt;
*Pour faciliter cet esprit d&#039;impartialité et sachant que tout article peut être amélioré, amendé, corrigé par d&#039;autres, éviter de signer les articles - L&#039;historique de la page permet cependant de savoir ce qu&#039;ont apporté ceux qui se sont identifiés et on peut signer dans les pages de discussion (et c&#039;est même recommandé - pour cela, cliquer sur ce bouton → [[Image:button_sig.png]] dans la barre d&#039;outils au dessus de la fenêtre d&#039;édition).&lt;br /&gt;
*En participant à ce projet, vous admettez que votre travail sera librement utilisable par des tiers (licence GNU) ; en revanche vous vous engagez à respecter les droits d&#039;auteurs en vigueur sur d&#039;autres sites (pas de copie sauvage, mais il est toujours possible de demander l&#039;autorisation à un auteur externe à ce site d&#039;utiliser son travail).&lt;br /&gt;
* Plutôt que la censure, préférez l&#039;amélioration des textes, le complément documentaire. Toujours commenter vos modifications dans la boîte de résumé d&#039;une modification.&lt;br /&gt;
* Eviter les insultes et les mots grossiers.&lt;br /&gt;
* Eviter les attaques personnelles.&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Fichier:Button_sig.png&amp;diff=2271</id>
		<title>Fichier:Button sig.png</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Fichier:Button_sig.png&amp;diff=2271"/>
		<updated>2006-04-04T15:27:13Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=MediaWiki:Copyrightwarning&amp;diff=2264</id>
		<title>MediaWiki:Copyrightwarning</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=MediaWiki:Copyrightwarning&amp;diff=2264"/>
		<updated>2006-04-04T13:11:13Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Text here will be shown below edit and upload forms. --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;margin-top:1px;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:2px;&amp;quot;&amp;gt;&lt;br /&gt;
Caractères spéciaux :&lt;br /&gt;
&amp;lt;charinsert&amp;gt; æ Æ &amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt; à À â Â ä Ä &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ç Ç &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; € é É è È ê Ê ë Ë &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; î Î ï Ï &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; œ Œ &amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ô Ô ö Ö &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ù Ù û Û ü Ü &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ÿ Ÿ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; «+» {{+}} [[+]] “+”&amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; — – ’ | … ~ # @ &amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁰ ½ &amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;specialchars&amp;quot; class=&amp;quot;plainlinks&amp;quot; style=&amp;quot;margin-top:1px; border-width:1px; border-style:solid; border-color:#aaaaaa; border-left-width:0; border-right-width:0; padding:2px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;specialbasic&amp;quot; id=&amp;quot;Wiki&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt; [[Catégorie:+]] [[Image:+]] [[Media:+]] #REDIRECT[[+]] &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; &amp;lt;&amp;gt;+&amp;lt;/&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;code&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;math&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/math&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;ref&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;ref name=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;references /&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;noinclude&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/noinclude&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;nowiki&amp;gt;&amp;lt;includeonly&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;/nowiki&amp;gt; &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ~~~ ~~~~ ~~~~~ &amp;lt;/charinsert&amp;gt; ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;specialbasic&amp;quot; id=&amp;quot;Latin&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á Ć ć É é Í í Ó ó Ś ś Ú ú Ý ý Ǿ ǿ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;À à È è Ì ì Ò ò Ù ù &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Â â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô ŝ Ŝ Û û &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ä ä Ë ë Ï ï Ö ö Ü ü ÿ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ã ã Ñ ñ Õ õ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Å å &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ç ç &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Č č Š š ŭ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ł ł &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ő ő Ű ű &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ø ø &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ā ā Ē ē Ī ī Ō ō Ū ū Ȳ ȳ&amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ă ă Ĕ ĕ Ğ ğ Ĭ ĭ Ŏ ŏ Ŭ ŭ Y̆ y̆&amp;lt;/charinsert&amp;gt; ...&lt;br /&gt;
&amp;lt;charinsert&amp;gt;ß &amp;lt;/charinsert&amp;gt; ...&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Æ æ Œ œ &amp;lt;/charinsert&amp;gt; · &lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ð ð Þ þ |&amp;lt;/charinsert&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;specialbasic&amp;quot; id=&amp;quot;Grec&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Α Ά Β Γ Δ Ε Έ Ζ Η Ή Θ Ι Ί Κ Λ Μ Ν Ξ Ο Ό Π Ρ Σ Τ Υ Ύ Φ Χ Ψ Ω Ώ&amp;lt;/charinsert&amp;gt;  · &lt;br /&gt;
&amp;lt;charinsert&amp;gt;α ά β γ δ ε έ ζ η ή θ ι ί κ λ μ ν ξ ο ό π ρ σ ς τ υ ύ φ χ ψ ω ώ&amp;lt;/charinsert&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;specialbasic&amp;quot; id=&amp;quot;Cyrillique&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я &amp;lt;/charinsert&amp;gt; · &lt;br /&gt;
&amp;lt;charinsert&amp;gt;а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я &amp;lt;/charinsert&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;specialbasic&amp;quot; id=&amp;quot;AHD&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;ā ă ä â ē ĕ ī ĭ î ō ŏ ô ŭ o͞o &amp;lt;/charinsert&amp;gt; (&amp;quot;food&amp;quot;) &amp;lt;charinsert&amp;gt;o͝o &amp;lt;/charinsert&amp;gt; (&amp;quot;foot&amp;quot;) &amp;lt;charinsert&amp;gt;û ə &amp;lt;/charinsert&amp;gt; · &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Allemand&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ä ä Ö ö ß Ü ü&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Arabe&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span lang=&amp;quot;ar&amp;quot; title=&amp;quot;Arabic text&amp;quot; dir=&amp;quot;rtl&amp;quot;  class=&amp;quot;spanAr&amp;quot;  style=&amp;quot;font-size:110%;&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;charinsert&amp;gt;ﺍ ﺑ ﺗ ﺛ ﺟ ﺣ ﺧ ﺩ ﺫ ﺭ ﺯ ﺳ ﺷ ﺻ ﺿ ﻃ ﻇ ﻋ ﻏ ﻓ ﻗ ﻛ ﻟ ﻣ ﻧ ﻫ ﻭ ﻳ &amp;lt;/charinsert&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt; · Initial&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span lang=&amp;quot;ar&amp;quot; title=&amp;quot;Arabic text&amp;quot; dir=&amp;quot;rtl&amp;quot;  class=&amp;quot;spanAr&amp;quot;  style=&amp;quot;font-size:110%;&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;charinsert&amp;gt;ﺍ ﺒ ﺘ ﺜ ﺠ ﺤ ﺨ ﺪ ﺬ ﺮ ﺰ ﺴ ﺸ ﺼ ﻀ ﻄ ﻈ ﻌ ﻐ ﻔ ﻘ ﻜ ﻠ ﻤ ﻨ ﻬ ﻮ ﻴ &amp;lt;/charinsert&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt; · Médial&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span lang=&amp;quot;ar&amp;quot; title=&amp;quot;Arabic text&amp;quot; dir=&amp;quot;rtl&amp;quot;  class=&amp;quot;spanAr&amp;quot;  style=&amp;quot;font-size:110%;&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;charinsert&amp;gt;ﺎ ﺐ ﺖ ﺚ ﺞ ﺢ ﺦ ﺪ ﺬ ﺮ ﺰ ﺲ ﺶ ﺺ ﺾ ﻂ ﻆ ﻊ ﻎ ﻒ ﻖ ﻚ ﻞ ﻢ ﻦ ﻪ ﻮ ﻲ &amp;lt;/charinsert&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt; · Final&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span lang=&amp;quot;ar&amp;quot; title=&amp;quot;Arabic text&amp;quot; dir=&amp;quot;rtl&amp;quot;  class=&amp;quot;spanAr&amp;quot;  style=&amp;quot;font-size:110%;&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;charinsert&amp;gt;ﺍ ﺏ ﺕ ﺙ ﺝ ﺡ ﺥ ﺩ ﺫ ﺭ ﺯ ﺱ ﺵ ﺹ ﺽ ﻁ ﻅ ﻉ ﻍ ﻑ ﻕ ﻙ ﻝ ﻡ ﻥ ﻩ ﻭ ﻱ &amp;lt;/charinsert&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt; · Seul&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Catalan&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á À à Ç ç É é È è Ë ë Í í Ï ï Ó ó Ò ò Ö ö Ú ú Ù ù ·&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Croate&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Č č Ć ć Dž dž Đ đ Š š Ž ž&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Espagnol&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;¿+? ¡+! Á á É é Í í Ñ ñ Ó ó Ú ú Ü ü ª º&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Esperanto&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ĉ ĉ Ĝ ĝ Ĥ ĥ Ĵ ĵ Ŝ ŝ Ŭ ŭ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Estonien&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Č č Š š Ž ž Õ õ Ä ä Ö ö Ü ü&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Gallois&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á À à Â â Ä ä É é È è Ê ê Ë ë Ì ì Î î Ï ï Ó ó Ò ò Ô ô Ö ö Ù ù Û û Ẁ ẁ Ŵ ŵ Ẅ ẅ Ý ý Ỳ ỳ Ŷ ŷ Ÿ ÿ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Hawaien&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ā ā Ē ē Ī ī Ō ō Ū ū ʻ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Hebreu&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;א ב ג ד ה ו ז ח ט י כ ך ל מ ם נ ן ס ע פ ף צ ץ ק ר ש ת ׳ ״&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Hieroglyphe&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;3 ỉ y ˁ w b p f m n r h ḥ ḫ ẖ s ś š ḳ k g t ṯ d ḏ &amp;lt;nowiki&amp;gt;&amp;lt;hiero&amp;gt;&amp;lt;/nowiki&amp;gt;+&amp;lt;nowiki&amp;gt;&amp;lt;/hiero&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Hollandais&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ä ä  Ë ë  Ï ï  Ö ö  Ü ü  Ÿ ÿ &amp;lt;/charinsert&amp;gt; · &lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á  É é  Í í  Ó ó  Ú ú &amp;lt;/charinsert&amp;gt; · &lt;br /&gt;
&amp;lt;charinsert&amp;gt;À à  È è  Ì ì  Ò ò  Ù ù &amp;lt;/charinsert&amp;gt; · &lt;br /&gt;
&amp;lt;charinsert&amp;gt;Â â  Ê ê  Î î  Ô ô  Û û &amp;lt;/charinsert&amp;gt; · &lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ĳ ĳ  ſ ƒ € &amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Hongrois&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á É é Í í Ó ó Ö ö Ő ő Ú ú Ü ü Ű ű&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Indo-europeen&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;ḱ ǵ ʰ ʷ h&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; h&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; h&amp;lt;sub&amp;gt;3&amp;lt;/sub&amp;gt; m̥ n̥ l̥ r̥ ē ō þ ð ƕ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Irlandais&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á Ḃ ḃ Ċ ċ Ḋ ḋ É é Ḟ ḟ Ġ ġ Í í Ṁ ṁ Ó ó Ṗ ṗ Ṡ ṡ Ṫ ṫ Ú ú&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Islandais&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á Ð ð É é Í í Ó ó Ú ú Ý ý Þ þ Æ æ Ö ö&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Italien&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á À à É é È è Í í Ì ì Ó ó Ò ò Ú ú Ù ù&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Letton&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ā ā Č č Ē ē Ģ ģ Ī ī Ķ ķ Ļ ļ Ņ ņ Ō ō Ŗ ŗ Š š Ū ū Ž ž&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Lituanien&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ą ą Č č Ę ę Ė ė Į į Š š Ų ų Ū ū Ž ž&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Maltais&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ċ ċ Ġ ġ Ħ ħ Ż ż&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Navajo &amp;amp;amp; Apache&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;’ Á á Ą ą Ą́ ą́ É é Ę ę Ę́ ę́ Í í Į į Į́ į́ Ł ł Ó ó Ǫ ǫ Ǫ́ ǫ́ Ú ú Ų ų Ų́ ų́&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Pinyin&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á À à Ǎ ǎ Ā ā É é È è Ě ě Ē ē Í í Ì ì Ǐ ǐ Ī ī Ó ó Ò ò Ǒ ǒ Ō ō Ú ú Ù ù Ü ü Ǔ ǔ Ū ū Ǘ ǘ Ǜ ǜ Ǚ ǚ Ǖ ǖ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Polonais&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;ą Ą ć Ć ę Ę ł Ł ń Ń ó Ó ś Ś ź Ź ż Ż&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Portugais&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á À à Â â Ã ã Ç ç É é Ê ê Í í Ó ó Ô ô Õ õ Ú ú Ü ü&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Romaji&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ā ā Ē ē Ī ī Ō ō Ū ū&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Roumain&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ă ă Â â Î î Ş ş Ţ ţ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Scandinave&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;À à É é Å å Æ æ Ä ä Ø ø Ö ö&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Serbe&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;А а Б б В в Г г Д д Ђ ђ Е е Ж ж З з И и Ј ј К к Л л Љ љ М м Н н Њ њ О о П п Р р С с Т т Ћ ћ У у Ф ф Х х Ц ц Ч ч Џ џ Ш ш&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Tcheque&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Á á Č č Ď ď É é Ě ě Í í Ň ň Ó ó Ř ř Š š Ť ť Ú ú Ů ů Ý ý Ž ž&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Turc&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ç ç Ə ə Ä ä Ğ ğ G‘ g‘ İ ı Ž ž Ň ň Ö ö O‘ o‘ Ş ş Ü ü Ý ý&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Vieil_anglais&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;Ā ā Æ æ Ǣ ǣ Ǽ ǽ Ċ ċ Ð ð Ē ē Ġ ġ Ī ī Ō ō Ū ū Ƿ ƿ Ȳ ȳ Þ þ Ȝ ȝ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;speciallang&amp;quot; id=&amp;quot;Vietnamien&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;À à Ả ả Á á Ạ ạ Ã ã Ă ă Ằ ằ Ẳ ẳ Ẵ ẵ Ắ ắ Ặ ặ Â â Ầ ầ Ẩ ẩ Ẫ ẫ Ấ ấ Ậ ậ Đ đ È è Ẻ ẻ Ẽ ẽ É é Ẹ ẹ Ê ê Ề ề Ể ể Ễ ễ Ế ế Ệ ệ Ỉ ỉ Ĩ ĩ Í í Ị ị Ì ì Ỏ ỏ Ó ó Ọ ọ Ò ò Õ õ Ô ô Ồ ồ Ổ ổ Ỗ ỗ Ố ố Ộ ộ Ơ ơ Ờ ờ Ở ở Ỡ ỡ Ớ ớ Ợ ợ Ù ù Ủ ủ Ũ ũ Ú ú Ụ ụ Ư ư Ừ ừ Ử ử Ữ ữ Ứ ứ Ự ự Ỳ ỳ Ỷ ỷ Ỹ ỹ Ỵ ỵ Ý ý&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p id=&amp;quot;Yiddish&amp;quot; class=&amp;quot;speciallang&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;א אַ אָ ב בֿ ג ד ה ו וּ װ ױ ז ח ט י יִ ײ ײַ כ כּ ך ל מ ם נ ן ס ע פּ פֿ ף צ ץ ק ר ש שׂ ת תּ ׳ ״&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;specialbasic&amp;quot; id=&amp;quot;API&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
(française) :&lt;br /&gt;
&amp;lt;charinsert&amp;gt; a ɑ e ɛ ə i o ɔ u y ø œ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ɔ̃ ɑ̃ ɛ̃ œ̃ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; j w ɥ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ː ‿ _́ _̀ _̌ _̂ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; b k ʃ d f ɡ h ʒ l m n ɲ ŋ p r s t v z ʀ ʁ &amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(autres) :&lt;br /&gt;
&amp;lt;charinsert&amp;gt;ʈ ɖ c ɟ q ɢ ʔ ɱ ɳ ɴ ʙ ɾ ɽ ɸ β θ ð ʂ ʐ ç ʝ x ɣ χ ħ ʕ ɦ ʋ ɹ ɻ ɰ ɫ ɮ ɭ ʎ ʟ ƥ ɓ ƭ ɗ ƈ ʄ ƙ ɠ ʠ ʛ ʍ ʜ ʢ ʡ ɕ ʑ ɧ&amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;ʘ ǀ ǃ ǂ ǁ ɺ ʦ ʣ ʧ ʤ ʨ ʥ&amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt; ɚ ɝ ˈ ˌ ˑ ɨ ʉ ɯ ɪ ɜ ʏ ʊ ɤ ɵ ʌ æ ɐ ɶ ɒ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;ᵊ ʰ ˤ ˠ ʲ ʷ ⁿ ᵑ ᵐ ʳ &amp;lt;/charinsert&amp;gt; ·&lt;br /&gt;
&amp;lt;charinsert&amp;gt;˥ ˦ ˧ ˨ ˩&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;specialbasic&amp;quot; id=&amp;quot;Math&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot; style=&amp;quot;display: none; visibility: hidden;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;charinsert&amp;gt;≠ ≤ ≥ &amp;lt; &amp;gt; ≡ ≈ ≅ ∝    − × ÷ ± ⊥ ⊕ ⊗ ∗ … ¼ ½ ¾ ¹ ² ³ °   ∂ ∫ ∑ ∞ ∏ √ ∇   ← → ↔ ⇐ ⇒ ⇔   ⌈ ⌉ ⌊ ⌋ 〈 〉   ¬ ∧ ∨ ∃ ∀   ∈ ∉ ∋ ∅ ⊆ ⊇ ⊃ ⊂ ⊄ ∪ ∩ ℵ&amp;lt;/charinsert&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;edittoolsinfo&amp;quot;&amp;gt;&lt;br /&gt;
Les changements effectués seront visibles immédiatement.&lt;br /&gt;
&lt;br /&gt;
* Pour des tests, veuillez utiliser le [[TJ-Encyclopedie:Bac à sable|bac à sable]].&lt;br /&gt;
* N&#039;hésitez pas à créer et à améliorer des articles. La communauté est présente pour s&#039;assurer des standards de qualité sur tous les articles.&lt;br /&gt;
* Vous devez citer les sources pour vos modifications, afin que votre travail soit vérifiable.&lt;br /&gt;
* Sur les pages de discussion, veuillez signer vos modifications en tapant quatre tildes. (&amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Ne publiez pas de travaux sous [[TJ-Encyclopedie:Copyright|copyright]] sans permission.&lt;br /&gt;
&lt;br /&gt;
* Toutes les contributions sont faites sous les termes de la licence &#039;&#039;GNU FDL&#039;&#039;, une licence de documentation libre (Voir [[TJ-Encyclopedie:Copyright]] pour plus de détails).&lt;br /&gt;
* Si vous ne désirez pas que vos écrits soient modifiés et distribués à volonté, ne les envoyez pas. &lt;br /&gt;
* Merci de ne contribuer qu&#039;en apportant vos propres écrits ou des écrits issus d&#039;une source libre de droits.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Mod%C3%A8le:Bo%C3%AEte_d%C3%A9roulante&amp;diff=2262</id>
		<title>Modèle:Boîte déroulante</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Mod%C3%A8le:Bo%C3%AEte_d%C3%A9roulante&amp;diff=2262"/>
		<updated>2006-04-04T12:47:12Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;clear:both&amp;quot; class=&amp;quot;NavFrame&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavHead&amp;quot; align=&amp;quot;{{{alignT|center}}}&amp;quot;&amp;gt;{{{titre}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavContent&amp;quot; align=&amp;quot;{{{align|left}}}&amp;quot;&amp;gt;&lt;br /&gt;
{{{contenu}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;NavEnd&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion_utilisateur:Henrique/monobook.js_test&amp;diff=2251</id>
		<title>Discussion utilisateur:Henrique/monobook.js test</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion_utilisateur:Henrique/monobook.js_test&amp;diff=2251"/>
		<updated>2006-04-04T12:03:56Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;J&#039;ai validé le javascript pour les utilisateurs, dévalidé par défaut, essaye mais j&#039;ai des doutes. En raison d&#039;une erreur dans ma variable include, le site ramait et monobook.css ne fonctionnait plus, néanmoins je n&#039;arrive pas à remettre en marche monobook.js !!&lt;br /&gt;
&lt;br /&gt;
--[[Utilisateur:Tjrecherches|Tjrecherches]] 3 avril 2006 à 16:27 (CEST)&lt;br /&gt;
:Pour ce script, c&#039;est normal que ça marche pas, ça ne marche pour l&#039;heure que sur les sites de la wikimedia fondation (essaye le sur [http://fr.wikipedia.org/wiki/Utilisateur:Cchasson/monobook.js ta page de js], tu m&#039;en diras des nouvelles ! Pour MediaWiki:Monobook.js, cela m&#039;a l&#039;air de fonctionner à nouveau pour les messages  pour les &amp;quot;tooltips and accesskeys&amp;quot;. Donc tu penses que je peux proposer des modifs sur le Monobook principal maintenant ? Je n&#039;ose plus faire de modifs...&amp;lt;br /&amp;gt;&lt;br /&gt;
:Autrement, il n&#039;y a pas non plus moyen sur nuxit.net d&#039;enlever les ugglys urls ? Est-il possible d&#039;utiliser un fichier .htaccess ? (A priori, tu as pris un hébergeur payant, cela devrait donc être possible d&#039;appliquer aussi [http://meta.wikimedia.org/wiki/Eliminating_index.php_from_the_url ceci]). --[[Utilisateur:Henrique|Henrique]] 4 avril 2006 à 01:57 (CEST)&lt;br /&gt;
&lt;br /&gt;
:: J&#039;ai essayé d&#039;enlever les ugly url, j&#039;ai un message d&#039;erreur mais avec cette histoire de monobook, je n&#039;ai pas eu plus le temps de me pencher dessus. C&#039;est donc la prochaine étape. Les .htaccess doivent fonctionner. Pour le monobook principal, vas-y essaye, néanmoins sur free quand je l&#039;avais fait marché, j&#039;avais découvert les changements par hasard alors que j&#039;avais abandonné, une heure après les avoir validé !!! Histoire de cache certes mais pas de mon côté ???&lt;br /&gt;
::--[[Utilisateur:Tjrecherches|Tjrecherches]] 4 avril 2006 à 08:17 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::Avec le .htaccess, tu dois pouvoir avoir des adresses du type http://tj-encyclopedie.nuxit.net/Ancien sans avoir besoin de modifier &amp;lt;code&amp;gt;$wgArticlePath      = &amp;quot;$wgScript?title=$1&amp;quot;;&amp;lt;/code&amp;gt;&lt;br /&gt;
:::Autrement je suppose que tu sais le raccourci clavier pour forcer le rechargement du cache... On va voir ce que ça va donner --[[Utilisateur:Henrique|Henrique]] 4 avril 2006 à 14:03 (CEST)&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Harmagu%C3%A9don&amp;diff=2168</id>
		<title>Harmaguédon</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Harmagu%C3%A9don&amp;diff=2168"/>
		<updated>2006-03-29T14:14:32Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Har-Maguédon]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Har-magu%C3%A9d%C3%B4n&amp;diff=2167</id>
		<title>Har-maguédôn</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Har-magu%C3%A9d%C3%B4n&amp;diff=2167"/>
		<updated>2006-03-29T14:13:32Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Har-Maguédon]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Tj-encyclop%C3%A9die:Bienvenue&amp;diff=2142</id>
		<title>Tj-encyclopédie:Bienvenue</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Tj-encyclop%C3%A9die:Bienvenue&amp;diff=2142"/>
		<updated>2006-03-28T17:20:14Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|align=&amp;quot;center&amp;quot; style=&amp;quot;background-color: #E8F1FF; padding: 1em; border: 1px solid #2e3c6b&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background-color: #E8F1FF&amp;quot;&lt;br /&gt;
!&amp;lt;big&amp;gt;Bonjour et bienvenue à vous !&amp;lt;/big&amp;gt;&lt;br /&gt;
|-style=&amp;quot;backgroud-color: #E8F1FF&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Nous vous remercions de bien vouloir participer à ce projet d&#039;encyclopédie sur les Témoins de Jéhovah, libre et écrite collectivement.&lt;br /&gt;
&lt;br /&gt;
L&#039;objectif de ces pages est de vous faire découvrir ce site non pas du point de vue de son contenu encyclopédique, qui reste ici l&#039;essentiel, mais du point de vue de ses principes de fonctionnement. &lt;br /&gt;
&lt;br /&gt;
Une des règles de base à cet égard est : &#039;&#039;&#039;n&#039;hésitez pas à modifier les articles&#039;&#039;&#039;. Le projet repose en grande partie sur cette règle et sur l&#039;initiative personnelle intelligente. Les indications qui suivent visent à vous informer des principes de fonctionnement jusqu&#039;ici retenus, de façon à vous permettre de voir où vous mettez les pieds.&lt;br /&gt;
&lt;br /&gt;
À partir du moment où vous faites votre première contribution, vous faites partie de la communauté - relativement informelle - des membres de ce site, qui maintient et enrichit son contenu. Vous pouvez choisir de [[Special:Userlogin|créer un compte]] pour obtenir un nom d’utilisateur et communiquer plus facilement. Dès que vous avez créé ce compte, n&#039;hésitez pas à vous présenter sur la page qui lui est consacrée en quelques mots et à y parler de ce qui vous tient à coeur.&lt;br /&gt;
|-- align=&amp;quot;center&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [[TJ-Encyclopedie:Pourquoi ce site ?|Pourquoi ce site ?]] ;&lt;br /&gt;
* [[TJ-Encyclopedie:FAQ|Foire aux questions]] ;&lt;br /&gt;
* [[TJ-Encyclopedie:Recommandations et règles à suivre|Recommandations et règles à suivre]], notamment :&lt;br /&gt;
:- [[TJ-Encyclopedie:Règles de typographie|Règles de typographie]] ;&lt;br /&gt;
:- [[TJ-Encyclopedie:Conventions sur les titres|conventions sur les titres]] ;&lt;br /&gt;
:- [[TJ-Encyclopedie:La neutralité de point de vue|La neutralité de point de vue]] ;&lt;br /&gt;
:- [[TJ-Encyclopedie:Les faux-pas les plus courants|Les faux-pas les plus courants]].&lt;br /&gt;
&lt;br /&gt;
== Ce que vous pouvez faire ici ==&lt;br /&gt;
* Créer de nouveaux articles concernant les sujets qui vous intéressent.&lt;br /&gt;
* &#039;&#039;&#039;[[Special:Wantedpages|Consulter la liste des pages demandées]]&#039;&#039;&#039; pour voir quel contenu vous pouvez apporter.&lt;br /&gt;
* &#039;&#039;&#039;[[:Catégorie:Ébauche|Consulter les ébauches en cours]]&#039;&#039;&#039; pour voir si vous pouvez en enrichir le contenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Aide]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Cat%C3%A9gorie:Aide&amp;diff=2140</id>
		<title>Catégorie:Aide</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Cat%C3%A9gorie:Aide&amp;diff=2140"/>
		<updated>2006-03-28T16:55:24Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette catégorie regroupe les pages d&#039;aide visant à faciliter la collaboration à  cette encyclopédie sur les Témoins de Jéhovah.&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Mod%C3%A8le:%C3%89bauche&amp;diff=2031</id>
		<title>Modèle:Ébauche</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Mod%C3%A8le:%C3%89bauche&amp;diff=2031"/>
		<updated>2006-03-22T11:19:46Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;alerte&amp;quot; id=&amp;quot;style2&amp;quot; style=&amp;quot;margin-bottom:1em;&amp;quot;&amp;gt;&lt;br /&gt;
{|cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;background-color:transparent;&amp;quot;&lt;br /&gt;
|[[Image:Info_bulb.png]]&lt;br /&gt;
|width=&amp;quot;10px&amp;quot;|&lt;br /&gt;
|&#039;&#039;Cet article est une ébauche à compléter concernant les Témoins de Jéhovah, vous pouvez partager vos connaissances  [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} en le modifiant]&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Russell&amp;diff=1809</id>
		<title>Russell</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Russell&amp;diff=1809"/>
		<updated>2005-12-11T23:31:40Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Charles Taze Russell]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Le_Minist%C3%A8re_du_Royaume&amp;diff=1802</id>
		<title>Le Ministère du Royaume</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Le_Minist%C3%A8re_du_Royaume&amp;diff=1802"/>
		<updated>2005-12-11T14:26:11Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Publication mensuelle interne de la [[Watch Tower]] apparue aux alentours de 1937 sous le nom de &#039;&#039;Informant&#039;&#039; (en anglais)  contenant les directives pour l&#039;[[organisation]] de la [[Prédication|prédication]] et des différentes [[Réunions|réunions]] ou démarches publiques qui constituent l&#039;essentiel de son activité. Cette publication, étudiée lors de la &#039;&#039;Réunion de service&#039;&#039; n&#039;est destinée qu&#039;aux Témoins de Jéhovah actifs ou aux proclamateurs non baptisés, elle ne concerne pas les &amp;quot;personnes intéressées&amp;quot; ou sympathisants du mouvement ne prêchant pas encore de porte en porte.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Glossaire]]&lt;br /&gt;
[[Catégorie:Publications]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion_mod%C3%A8le:Fait&amp;diff=1801</id>
		<title>Discussion modèle:Fait</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion_mod%C3%A8le:Fait&amp;diff=1801"/>
		<updated>2005-12-11T14:25:17Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Problème avec le redimensionnement des images, j&#039;ai déjà été obligé de reuploader des images après les avoir redimensionnées pour obtenir la bonne taille. Cela viendrait-il du thème ? A régler avec la prochaine version de Mediawiki ? --[[Utilisateur:Henrique|Henrique]] 11 déc 2005 à 15:25 (MET)&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=WTBS&amp;diff=1708</id>
		<title>WTBS</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=WTBS&amp;diff=1708"/>
		<updated>2005-11-29T22:55:41Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Watch Tower Bible and Tract Society of Pennsylvania]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Watchtower_Bible_and_Tract_Society&amp;diff=1674</id>
		<title>Watchtower Bible and Tract Society</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Watchtower_Bible_and_Tract_Society&amp;diff=1674"/>
		<updated>2005-11-27T23:45:57Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Watch Tower Bible and Tract Society of Pennsylvania]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Lexique_j%C3%A9hoviste&amp;diff=1672</id>
		<title>Lexique jéhoviste</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Lexique_j%C3%A9hoviste&amp;diff=1672"/>
		<updated>2005-11-27T23:38:34Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Acronymes courants dans le vocabulaire des Témoins de Jéhovah :&lt;br /&gt;
*[[BN]]&lt;br /&gt;
*[[GB]]&lt;br /&gt;
*[[HM]]&lt;br /&gt;
*[[KM]]&lt;br /&gt;
*[[RV]]&lt;br /&gt;
*[[TG]]&lt;br /&gt;
*[[TJ]]&lt;br /&gt;
*[[WT]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Watchtower&amp;diff=1671</id>
		<title>Watchtower</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Watchtower&amp;diff=1671"/>
		<updated>2005-11-27T23:34:35Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Watch_Tower_Bible_and_Tract_Society_of_Pennsylvania]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Watch_Tower&amp;diff=1670</id>
		<title>Watch Tower</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Watch_Tower&amp;diff=1670"/>
		<updated>2005-11-27T23:33:14Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Watch Tower_Bible_and_Tract_Society_of_Pennsylvania]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion:Watchtower_Bible_and_Tract_Society_of_Pennsylvania&amp;diff=1669</id>
		<title>Discussion:Watchtower Bible and Tract Society of Pennsylvania</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion:Watchtower_Bible_and_Tract_Society_of_Pennsylvania&amp;diff=1669"/>
		<updated>2005-11-27T23:32:02Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Discuter:Watchtower Bible and Tract Society of Pennsylvania déplacé vers Discuter:Watch Tower Bible and Tract Society of Pennsylvania: Conforme à l&amp;#039;orthographe exacte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Discuter:Watch Tower Bible and Tract Society of Pennsylvania]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion:Watch_Tower_Bible_and_Tract_Society_of_Pennsylvania&amp;diff=1668</id>
		<title>Discussion:Watch Tower Bible and Tract Society of Pennsylvania</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion:Watch_Tower_Bible_and_Tract_Society_of_Pennsylvania&amp;diff=1668"/>
		<updated>2005-11-27T23:32:02Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Discuter:Watchtower Bible and Tract Society of Pennsylvania déplacé vers Discuter:Watch Tower Bible and Tract Society of Pennsylvania&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page tirée de la Wikipédia anglaise à finir de traduire, voire compléter. Faire ensuite des redirections vers cette page pour les termes suivants :&lt;br /&gt;
*Watchtower&lt;br /&gt;
*Watch Tower&lt;br /&gt;
*Watchtower Bible and Tract Society&lt;br /&gt;
*Watch Tower Society&lt;br /&gt;
*Société Watchtower&lt;br /&gt;
A noter que j&#039;en viens à me demander s&#039;il ne faudrait pas faire sur les accronymes des redirections vers les termes complets, avec à la limite une page générale pour les accronymes, comme on devrait le faire sur Wikip. &lt;br /&gt;
&amp;lt;br&amp;gt;--[[Utilisateur:Henrique|Henrique]] 27 nov 2005 à 17:56 (MET)&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Watchtower_Bible_and_Tract_Society_of_Pennsylvania&amp;diff=1667</id>
		<title>Watchtower Bible and Tract Society of Pennsylvania</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Watchtower_Bible_and_Tract_Society_of_Pennsylvania&amp;diff=1667"/>
		<updated>2005-11-27T23:32:01Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Watchtower Bible and Tract Society of Pennsylvania déplacé vers Watch Tower Bible and Tract Society of Pennsylvania: Conforme à l&amp;#039;orthographe exacte&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Watch Tower Bible and Tract Society of Pennsylvania]]&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Fichier:Wtlogo.png&amp;diff=1657</id>
		<title>Fichier:Wtlogo.png</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Fichier:Wtlogo.png&amp;diff=1657"/>
		<updated>2005-11-27T17:57:13Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Logo de la Watchtower&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Logo de la Watchtower&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion:1914&amp;diff=1650</id>
		<title>Discussion:1914</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion:1914&amp;diff=1650"/>
		<updated>2005-11-27T16:46:52Z</updated>

		<summary type="html">&lt;p&gt;Henrique : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Modifs : j&#039;ai intégré quelques liens et reformulé la dernière phrase. J&#039;attire ton attention, Coc, maintenant que tu es davantage familiarisée sur l&#039;intérêt d&#039;indiquer la ou les catégories correspondant au contenu de la page. En ajoutant par exemple le code &amp;lt;nowiki&amp;gt;[[Catégorie:Histoire]]&amp;lt;/nowiki&amp;gt; à la fin de la page, cela permet d&#039;insérer automatiquement le titre de l&#039;article dans la catégorie [[:Catégorie:Histoire|Histoire]], autrement, cela reste une page orpheline. Par ailleurs, tu peux aussi indiquer que tu as créé un nouvel article, quand tu estimes qu&#039;il est assez abouti, sur la page d&#039;accueil, en modifiant le contenu de &amp;quot;Derniers articles&amp;quot;... &lt;br /&gt;
&lt;br /&gt;
Je rappelle aussi que j&#039;ai créé le modèle suivant :&lt;br /&gt;
{{ébauche}}&lt;br /&gt;
Il suffit pour le faire apparaître sur une page, au besoin, d&#039;écrire le code suivant : &amp;lt;nowiki&amp;gt;{{ébauche}}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Discussion:Hi%C3%A9rarchie&amp;diff=1634</id>
		<title>Discussion:Hiérarchie</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Discussion:Hi%C3%A9rarchie&amp;diff=1634"/>
		<updated>2005-11-26T23:07:16Z</updated>

		<summary type="html">&lt;p&gt;Henrique : /* Esclave fidèle et avisé */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Texte repris d&#039;un article [http://www.tj-liberte.org/modules.php?name=News&amp;amp;file=article&amp;amp;sid=21] que j&#039;avais écrit sur http://www.tj-liberte.org.&lt;br /&gt;
&lt;br /&gt;
--[[Utilisateur:Henrique|Henrique]] 19 nov 2005 à 16:50 (M&lt;br /&gt;
&lt;br /&gt;
Je n&#039;osais le demander, maintenant se pose la question de la création d&#039;une catégorie regroupant toutes les definitions se rapportant à l&#039;organisation (surveillant, Béthel, etc..). Devrons-nous renommer l&#039;article Organisation en &amp;quot;Vue d&#039;ensemble de l&#039;organisation&amp;quot; pour créer une catégorie Organisation, ou devrons-nous appeler la catégorie par exemple &amp;quot;Structure&amp;quot; ?&lt;br /&gt;
&lt;br /&gt;
:Re:&lt;br /&gt;
&lt;br /&gt;
:Il me semble pour le moment que tous ces termes rentrent dans le cadre de la catégorie &amp;quot;glossaire&amp;quot;. Après, on peut créer un modèle rassemblant les termes propres à un certain type de vocabulaire, en l&#039;occurrence &amp;quot;organisationnel&amp;quot;, comme je l&#039;ai fait pour les [[Modèle:Acronymes|acronymes]], non ? Parce qu&#039;autrement, créer une catégorie proprement dite pour l&#039;organisation me semble un peu exagéré vu que nombre d&#039;articles y seraient de simples définitions, n&#039;appelant pas de développements réellement encyclopédiques.&lt;br /&gt;
&lt;br /&gt;
:Cela dit, je pose ici cette question pour l&#039;heure mais il faudra sans doute créer une page méta par la suite) il y a peut-être lieu de discuter des catégories que tu as créées pour l&#039;instant. Est-ce que &amp;quot;science et médecine&amp;quot; n&#039;entrerait pas pour partie dans &amp;quot;doctrines&amp;quot; et pour une autre partie dans &amp;quot;Controverses et scandales&amp;quot; ? Est-ce qu&#039;une rubrique &amp;quot;Actualités&amp;quot;, recensant les faits d&#039;actualité liés aux TJ n&#039;aurait pas une place à avoir ? Aussi, dans les doctrines TJ, on peut distinguer ce qui est purement théologique et ce qui relève de la pratique : étant donné l&#039;importance de la différence et de leurs contenus, ne faudrait-il pas créer deux catégories différentes ? Enfin, tu as ajouté une catégorie &amp;quot;biographie&amp;quot; - ne s&#039;agirait-il pas plutôt de &amp;quot;bibliographie&amp;quot; ? Et à la limite, ne faudrait-il pas envisager une section passages clés référencés, sur le modèle de http://quotes.watchtower.ca/ ?&lt;br /&gt;
&lt;br /&gt;
:Pour finir, dans tes modifs, il me semble que  &amp;quot;le [[petit troupeau]] représenté par le [[Collège Central]].&amp;quot; introduit une confusion : on risque de ne plus très bien savoir si le collège central est tout en haut de la hiérarchie ou au deuxième échelon et surtout, le terme de représentation évoque un modèle de démocratie représentative qui donnerait à penser qu&#039;on part d&#039;une base relativement large dont quelques membres émergent par une sorte de mouvement ascendant pour représenter les autres, or dans un système [[Théocratie|théocratique]], la pyramide est inversée : la base est censée partir de Dieu puis descendre de loin en loin vers le plus large. Et dans la pratique, je ne pense pas que ceux qui sont dits &amp;quot;membres oints&amp;quot; et qui ne font pas partie d&#039;assez près du collège central soient consultés pour les prises de décisions doctrinaires ou organisationnelles, au contraire ils doivent s&#039;y soumettre plutôt qu&#039;en décider.&lt;br /&gt;
:--[[Utilisateur:Henrique|Henrique]] 20 nov 2005 à 01:51 (MET)&lt;br /&gt;
&lt;br /&gt;
== Conventions ==&lt;br /&gt;
&lt;br /&gt;
Il faudrait s&#039;entendre sur la forme des liens que l&#039;on crée : un coup on met &amp;lt;nowiki&amp;gt;[[Surveillant de Circonscription]]&amp;lt;/nowiki&amp;gt;, un coup c&#039;est &amp;lt;nowiki&amp;gt;[[Surveillant de circonscription]]&amp;lt;/nowiki&amp;gt;, une autre fois c&#039;est &amp;lt;nowiki&amp;gt;[[surveillant de circonscription]]&amp;lt;/nowiki&amp;gt; (comme par exemple dans [[petit troupeau]], ce qui va générer des liens à créer ou des redirections quand ce serait inutile autrement. On peut dire qu&#039;on met des majuscules partout comme dans le premier exemple, ainsi que tu le fais le plus souvent mais contrairement à l&#039;usage en cours sur Wikipedia, mais alors il y aura des liens que j&#039;avais déjà créé qui devront sans doute être revus, et d&#039;autres que tu as fait aussi. D&#039;un autre côté, si on ne mettait pas de majuscules pour les noms communs - comme proclamateur, ancien etc. - cela éviterait de devoir écrire par exemple : &amp;quot;cet &amp;lt;nowiki&amp;gt;[[Ancien|ancien]]&amp;lt;/nowiki&amp;gt; a chanté&amp;quot; quand on peut écrire &amp;quot;cet &amp;lt;nowiki&amp;gt;[[ancien]]&amp;lt;/nowiki&amp;gt; a chanté... Enfin, tu décides.&lt;br /&gt;
&lt;br /&gt;
Ah, aussi autre point, quand tu écris &amp;quot;le surveillant de district contrôle&amp;quot;, &amp;quot;le s. de circ. surveille&amp;quot;, c&#039;est fini ? Parce qu&#039;on ne voit pas forcément la différence entre les deux ni ce qu&#039;ils surveillent ou contrôlent. Et dans une liste à puces, il faut terminer les items par des points virgules (cela dit en général je suis de ceux qui pensent qu&#039;il ne faut pas abuser des listes à puces dans des articles à vocation encyclopédique).&lt;br /&gt;
&lt;br /&gt;
--[[Utilisateur:Henrique|Henrique]] 20 nov 2005 à 15:31 (MET)&lt;br /&gt;
&lt;br /&gt;
Désolé pour ce retard.&lt;br /&gt;
Je ne sais pas ce qu&#039;est une page méta ? Je vais potasser la doc.&lt;br /&gt;
En ce qui concerne les catégories je suis d&#039;accord avec toi. Je sais qu&#039;il est possible de faire des sous-catégorie de catégorie, comme un article peut appartenir à plusieurs catégories, peui-être est-il possible par exemple de ventiler un article sang dans Doctrines-Sang et Science-Sang ? A moins que les pages méta face l&#039;affaire ?&lt;br /&gt;
La catégorie &amp;quot;biographie&amp;quot; comportera tous les second adventistes, tj et opposants un peu célèbres, il faut effectivement une catégorie &amp;quot;bibliographie&amp;quot; ventilée par sujet. Je pense aussi à une catégorie Bible ventilée par versets (donc par livre biblique- pas forcémént redondant avec la catégorie doctrine), une catégorie actualité est aussi interessante ventilée par mois comme prévensectes, mais tout çà ce sont des idées, je veux ton avis et celui des autres. Mais quelle somme de travail tout çà !!! ;-)&lt;br /&gt;
&lt;br /&gt;
Je suis OK pour ne pas mettre de majuscule, (enfin par exemple La Tour de Garde on est bien obligé) je ferais des redirections pour mes bêtises actuelles. J&#039;ai utilise deux verbes différents par souci de ne pas faire une répétition, c&#039;est vrai que cela apporte plus de confusion, quand aux listes à puces, je me basais sur l&#039;article Témoin de Jéhovah de Wikipedia qui a été modifié par un contributeur dans la partie doctrine et que j&#039;avais trouvé éclairé l&#039;article, mais bon c&#039;est vrai qu&#039;il ne faut pas que j&#039;en abuse.&lt;br /&gt;
&lt;br /&gt;
--[[Utilisateur:Tjrecherches|Charles]]&lt;br /&gt;
&lt;br /&gt;
:Une page méta est juste une page où on présente et éventuellement discute des tenants et aboutissants du projet, par opposition au reste du site qui porte directe sur le sujet. En fait on peut la placer tout simplement sur [[:TJWiki:Accueil|Communauté]] encore qu&#039;il me semblerait que &amp;quot;Projet&amp;quot; serait plus clair... Déjà on pourrait commencer par pointer sur les liens d&#039;aide à l&#039;édition de pages. &lt;br /&gt;
&lt;br /&gt;
:Au passage, je trouve que le nom de TJWiki est à discuter car il y a encore beaucoup de gens qui ignorent totalement ou presque Wikipedia, de sorte que pour une majorité de ceux qui verraient ce lien sur un autre site, le nom ne serait pas du tout parlant et il risquerait donc être ignoré.&lt;br /&gt;
&lt;br /&gt;
:Pour faire des sous-catégories, cela doit être expliqué [http://fr.wikipedia.org/wiki/Aide:Cat%C3%A9gorie ici] mais il faut voir que quand une sous-catégorie est créée, cela amène vite à ce que les contributeurs placent un peu au petit bonheur leurs textes, comme on le voit sur le portail philo de wikipedia par exemple. Mais en fait, un même article peut être facilement rapporté à deux catégories différentes, il suffit que tu en  ajoutes une à la fin, en plus de la première catégorie, comme je viens de le faire par exemple pour l&#039;article sur les [[Ancien|anciens]].&lt;br /&gt;
&lt;br /&gt;
:OK pour les biographies (le pluriel me semblerait cependant alors plus justifié), il fallait en effet y penser. Ton idée d&#039;une catégorie biblique est intéressante mais quelle somme de travail effectivement ! Est-ce que ça vaut vraiment le coup quand cela se trouve déjà sur d&#039;autres sites auxquels il pourrait être facile de faire référence ? Le site jesusmarie.com est bien fourni à cet égard, mais je sais qu&#039;il y en a aussi font ce que tu dis.&lt;br /&gt;
&lt;br /&gt;
:Somme de travail, mais il est clair que ce projet n&#039;aura pas grand sens si on est que deux à bosser dessus - d&#039;autant plus que si en ce moment j&#039;ai un peu de temps, cela ne va pas durer. Je vais relancer Tj-liberté à ce sujet. Je ne sais pas si tu as vu que je t&#039;ai envoyé un mail proposant une première mise en forme du site, parce qu&#039;il ne faut pas négliger la première impression qu&#039;auront certains.&lt;br /&gt;
&lt;br /&gt;
:Quant aux majuscules, je pense qu&#039;il faut naturellement les garder pour les noms propres comme &amp;quot;Tour de Garde&amp;quot;. Autrement, on met des minuscules pour les noms communs si on est OK sur ça.&lt;br /&gt;
&lt;br /&gt;
:Enfin, free rame pas mal, comme d&#039;hab. As-tu une idée pour un hébergement un peu plus performant ? Remarque, si je suis venu spontanément participer sur ton site, c&#039;est que j&#039;avais l&#039;idée de faire migrer le site actuel de tj-liberte.org vers un wiki. Fusionner ton site avec celui de TJL serait alors aussi une possibilité, qui impliquerait sans doute des limites à discuter, mais déjà qu&#039;en dis tu ?&lt;br /&gt;
&lt;br /&gt;
:--[[Utilisateur:Henrique|Henrique]] 20 nov 2005 à 19:52 (MET)&lt;br /&gt;
&lt;br /&gt;
== Esclave fidèle et avisé ==&lt;br /&gt;
&lt;br /&gt;
J&#039;ai encore oublié de me connecter quand j&#039;ai fait les modifs.&lt;br /&gt;
&lt;br /&gt;
Vous avez écrit : &amp;quot;Quand on parle de la WT, on parle essentiellement de ce collège central. C&#039;est ce collège central qui se qualifie &amp;quot;d&#039;esclave fidèle et avisé&amp;quot; selon une parabole de Jésus &amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Or, dans ce que j&#039;ai lu hier sur cet esclave, j&#039;ai compris qu&#039;il désignait l&#039;ensemble du mouvement TJ, le collège central en étant la partie administrative.&lt;br /&gt;
&lt;br /&gt;
Par exemple sur le site du TJ Thierry, j&#039;ai relevé ceci :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Pour autant, les Témoins de Jéhovah reconnaissent faire partie d&#039;une organisation et que Dieu a une organisation sur la terre.&lt;br /&gt;
Peu avant sa mort, Jésus parla à ses disciples d&#039;un &amp;quot;esclave fidèle et avisé&amp;quot;. En sa qualité de Maître, il allait lui-même confier à cet &amp;quot;esclave&amp;quot; des responsabilités exceptionnelles. D&#039;après la description de Jésus, l&#039;&amp;quot;esclave&amp;quot; en question serait déjà présent lorsque son Seigneur partirait au ciel, et il serait toujours en vie au temps de son retour. Aucun humain ne pourrait donc répondre à une telle description. &lt;br /&gt;
En revanche, celle-ci s&#039;applique très bien à la congrégation chrétienne dans leur ensemble. Sachant qu&#039;il allait les racheter au prix de son propre sang, Jésus pouvait à bon droit les décrire collectivement comme son &amp;quot;esclave&amp;quot;. D&#039;ailleurs, il leur a donné du travail: il les a chargés de faire des disciples, puis de les nourrir progressivement sur le plan spirituel, en d&#039;autres termes de leur donner &amp;quot;leur nourriture [spirituelle] en temps voulu&amp;quot;.  &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Qu&#039;en pensez-vous ?&lt;br /&gt;
&lt;br /&gt;
--[[Utilisateur:Coc|Coc]] 26 nov 2005 à 14:59 (MET)&lt;br /&gt;
&lt;br /&gt;
:D&#039;après ce que j&#039;en avais compris, &amp;quot;l&#039;esclave fidèle et avisé&amp;quot; serait synonyme de [[WBTS]].&lt;br /&gt;
&lt;br /&gt;
:Si chaque TJ est associé au travail d&#039;évangélisation de la WT, cela reste le sommet de la hiérarchie qui &amp;quot;apporte la nourriture spirituelle&amp;quot; en décidant de quelle façon interpréter la Bible, comment juger le monde qui nous entoure etc. Le [[Proclamateur|proclamateur]] de base, lui, n&#039;est qu&#039;une courroie de transmission, il ne décide de rien. Or le statut d&#039;esclave fidèle et &#039;&#039;&#039;avisé&#039;&#039;&#039; suppose justement une capacité de jugement et de choix intellectuel qui n&#039;est pas objectivement nécessaire chez le proclamateur. A la cantine de Jéhovah, le proclamateur sert les plats, il ne décide pas du menu ni ne le prépare.&lt;br /&gt;
&lt;br /&gt;
:Il est à noter que le texte que tu reproduis suppose que Jésus n&#039;est &amp;quot;revenu&amp;quot; qu&#039;en 1914. On peut très bien supposer aussi qu&#039;il est revenu bien plus tôt, du temps des apôtres quand l&#039;esprit saint descend et que ça fait des flammes sur la tête des disciples, faisant ainsi des apôtres même l&#039;esclave. Cela ne serait pas étonnant car l&#039;objet des Evangiles était essentiellement d&#039;asseoir leur autorité en tant que représentants de Jésus sur Terre. Mais alors il n&#039;est pas nécessaire d&#039;imaginer que les prophéties de Matthieu s&#039;appliquent à notre époque : comme la plupart des herméneutes, on peut admettre qu&#039;elles se sont déjà accomplies en 70 de notre ère, lors de la chute de Jérusalem. D&#039;ailleurs, c&#039;est une habitude de la WT de supposer des  espèces de prophéties gigognes, s&#039;accomplissant ou devant s&#039;accomplir plusieurs fois...&lt;br /&gt;
:--[[Utilisateur:Henrique|Henrique]] 26 nov 2005 à 17:50 (MET)&lt;br /&gt;
&lt;br /&gt;
Oui, mais Raymond Franz a aussi écrit ça dans son bouquin :&lt;br /&gt;
&lt;br /&gt;
http://www.aggelia.be/coc10.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
« La revendication de l’organisation des Témoins de Jéhovah à être l’unique&lt;br /&gt;
canal sur terre et l’instrument de Dieu et du Christ est inséparablement&lt;br /&gt;
liée à cette date, car on affirme qu’en cette année-là, le Christ a&lt;br /&gt;
commencé sa “présence invisible” en tant que nouveau roi intronisé,&lt;br /&gt;
et qu’il a ensuite inspecté les nombreuses religions de ce monde et&lt;br /&gt;
choisi celle qui était associée à la Watch Tower pour le représenter&lt;br /&gt;
devant l’humanité entière. Par conséquent, il a reconnu et approuvé ce&lt;br /&gt;
même groupe comme étant la classe de “l’esclave fidèle et avisé” qu’il&lt;br /&gt;
a mis à la tête de tous ses biens terrestres. Le Collège Central des&lt;br /&gt;
Témoins de Jéhovah y puise sa revendication d’autorité, se présentant&lt;br /&gt;
comme la partie administrative de la classe de “l’esclave fidèle et&lt;br /&gt;
avisé”. »&lt;br /&gt;
&lt;br /&gt;
Mes souvenirs vagues me faisaient croire que « l’esclave fidèle et avisé » était effectivement la société WT, mais quand j’ai lu ces deux textes, j’en ai conclu que l’esclave était l’ensemble du groupement &amp;quot;religieux&amp;quot;, et la WT en serait en quelque sorte la tête ?????&lt;br /&gt;
&lt;br /&gt;
--[[Utilisateur:Coc|Coc]] 26 nov 2005 à 23:37 (MET)&lt;br /&gt;
&lt;br /&gt;
:Oui, mais je ne vois pas dans ce texte la réfutation &amp;quot;qu&#039;en vrai&amp;quot;, l&#039;EFA, c&#039;est la WT. L&#039;organisation des TJ, c&#039;est aussi tous les proclamateurs, certes, mais l&#039;image de la tête et du corps est bonne : tu coupes une main, l&#039;ensemble reste vivant, l&#039;esclave peut continuer à oeuvrer. Tu coupes la tête, il n&#039;y a plus d&#039;esclave. Les mains et les bras, c&#039;est les proclamateurs ; les jambes et les pieds, les béthels ; les organes liés à la bonne digestion de l&#039;énergie que la tête a trouvé sous forme de nourriture spirituelle, ce sont les anciens et autres intermédiaires hiérarchiques ; le sang, c&#039;est l&#039;argent ; le coeur, c&#039;est le désir de sécurité définitive... :-) &lt;br /&gt;
&lt;br /&gt;
:Aussi je me souviens bien avoir souvent entendu à la [[Salle du Royaume]] des affirmations du type &amp;quot;Merci Jéhovah de nous avoir donné ton esclave fidèle et avisé qui nous pourvoit abondamment en nourriture spirituelle&amp;quot;. Car avant d&#039;être distribuée sous forme de publications fabriquées dans les imprimeries des Béthels, c&#039;est bien au collège central qu&#039;est concoctée cette &amp;quot;nourriture&amp;quot;. Théoriquement cette nourriture s&#039;adresse au &amp;quot;monde&amp;quot; extérieur, parmi lequel il s&#039;agit de sauver/recruter le plus possible. Mais en pratique, c&#039;est aux TJ de base qu&#039;elle s&#039;adresse, étant censée les fortifier et les faire grandir spirituellement. Voilà pourquoi, quelles que soient les ambiguïtés langagières, le TJ de base identifie clairement la WT comme étant cet esclave qui nourrit la maisonnée du maître, selon la parabole - la maisonnée étant l&#039;OTJ et l&#039;esclave (ou serviteur = ministre) en étant le gérant atitré, représentant le maître/Jésus en son absence.&lt;br /&gt;
&lt;br /&gt;
:Cela dit, il va vraiment falloir que je remette la main sur le CDrom de la WT.&lt;br /&gt;
:[[Utilisateur:Henrique|Henrique]] 27 nov 2005 à 00:07 (MET)&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
	<entry>
		<id>https://tj-encyclopedie.org/index.php?title=Fichier:Fairytale_kthememgr.png&amp;diff=1622</id>
		<title>Fichier:Fairytale kthememgr.png</title>
		<link rel="alternate" type="text/html" href="https://tj-encyclopedie.org/index.php?title=Fichier:Fairytale_kthememgr.png&amp;diff=1622"/>
		<updated>2005-11-26T12:46:13Z</updated>

		<summary type="html">&lt;p&gt;Henrique : Cube.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cube.&lt;/div&gt;</summary>
		<author><name>Henrique</name></author>
	</entry>
</feed>