विकिबुक्स
mrwikibooks
https://mr.wikibooks.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0
MediaWiki 1.47.0-wmf.13
first-letter
मिडिया
विशेष
चर्चा
सदस्य
सदस्य चर्चा
विकिबुक्स
विकिबुक्स चर्चा
चित्र
चित्र चर्चा
मिडियाविकी
मिडियाविकी चर्चा
साचा
साचा चर्चा
सहाय्य
सहाय्य चर्चा
वर्ग
वर्ग चर्चा
TimedText
TimedText talk
विभाग
विभाग चर्चा
Event
Event talk
सदस्य:Revi C.
2
2793
15099
13670
2026-08-01T23:39:48Z
Pathoschild
103
global user pages ([[m:Synchbot|requested by Revi C.]])
15099
wikitext
text/x-wiki
__NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">{{#babel:ko|en-3|mr-0}} [[File:Revi wikimedia image.jpg|thumb|center|middle|If you are here to talk about CommonsDelinker removing a deleted image, please [[:c:User talk:Revi C.|go here]].]]
Hello! I am [[:m:User:Revi C.|revi]]. I edit to [[m:SWMT|revert vandals]], do Wikidata stuff<!--(I am a Wikidata Admin! <small>([{{fullurl:wikidata:Special:ListUsers/Revi C.|limit=1}} Verify])</small>)-->, or do [[:c:COM:FR|Commons Filemoving stuff]] (I am Commons Admin too! <small>([{{fullurl:c:Special:ListUsers/Revi C.|limit=1}} Verify])</small>). Come to [[:m:User:Revi C.|my Meta userpage]] or [[:c:User:Revi C.|my Commons userpage]] for more information. Thank you.</div>
mwqk6z8nb61qhmwfl2t69xsuim34q6l
सदस्य चर्चा:Revi C.
3
2794
15098
13669
2026-08-01T23:04:38Z
Pathoschild
103
global user pages ([[m:Synchbot|requested by Revi C.]])
15098
wikitext
text/x-wiki
__NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">[[File:Revi logo (pink).png|thumb|center|<span style="color:red">PLEASE DO NOT LEAVE MESSAGE HERE!</span>]]
''' <span style="color:red"> BEFORE YOU BLOCK MY ACCOUNT: IF MY EDIT SUMMARY INCLUDE PREFIX </span>''(Script)''<span style="color:red">, DON'T BLOCK ME, JUST TELL ME TO SLOW DOWN AT COMMONS' TALK PAGE. IT IS AN AUTOMATED SCRIPT BEING USED ON COMMONS TO MOVE FILES.</span>
Instead, please leave your message following site:
<br />
[[File:Wikidata-logo-en.svg|45px|link=d:User talk:Revi C.]] [[d:User talk:Revi C.]] for Wikidata (Interwiki links) stuff <!--(I am {{int:Group-sysop}} there)-->
<br />
[[File:Commons-logo.svg|45px|link=commons:User talk:Revi C.]] [[commons:User talk:Revi C.]] for renaming stuff or [[User:CommonsDelinker|CommonsDelinker]] action (I am {{int:Group-sysop}} there)
<br />
[[File:Wikimedia Community Logo optimized.svg|45px|link=m:User talk:Revi C.]] [[meta:User talk:Revi C.]] for other stuff (User right notification, revert message, etc...)
Messages left on this page may be reverted or moved without any response.</div>
esxe13mcstpjlux1bt2hqwxr2v8t8mn
सदस्य:Hym411
2
2876
15100
13673
2026-08-02T00:17:29Z
Pathoschild
103
global user pages ([[m:Synchbot|requested by Hym411]])
15100
wikitext
text/x-wiki
#REDIRECT [[User:Revi C.]]
88g0cv17whfgb1wkeh281mptujwtlut
सदस्य चर्चा:Hym411
3
2877
15101
13674
2026-08-02T00:57:20Z
Pathoschild
103
global user pages ([[m:Synchbot|requested by Hym411]])
15101
wikitext
text/x-wiki
#REDIRECT [[User talk:Revi C.]]
o9z79lcc9a9pfmqmrod5w3eyk4q9i0o
मिडियाविकी:Gadgets-definition
8
3199
14348
2007-12-18T15:32:31Z
Whiteknight
3636
adding first gadget, a simplified per-book script
14348
wikitext
text/x-wiki
*Per-Book|Perbook.js
flzy3fq90a40bi8yo1fymcvynz44jcz
14349
14348
2007-12-18T15:33:05Z
Whiteknight
3636
14349
wikitext
text/x-wiki
*Perbook|Perbook.js
ayvrjbch963zlxyasot6py15b2ieni3
14350
14349
2007-12-18T15:46:56Z
Whiteknight
3636
14350
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
1kky73x21envxtx87upb4mb8dl7ivcu
14351
14350
2007-12-18T16:16:02Z
Darklama
2894
+gadget to allow external links to be opened in a new tab or window
14351
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*Extlinks|Extlinks.js
8auoje8pihd5zghctupj816jehifg1r
14352
14351
2007-12-18T16:17:15Z
Darklama
2894
fix, case sensative
14352
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
fgnpj9lzdrtk1pyo7f4ksd7god9be2f
14353
14352
2007-12-18T16:36:32Z
Darklama
2894
+BookSearch Gadget
14353
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
c748us0e1l5nf7wasmxgsf9fy3izxzx
14354
14353
2007-12-18T18:07:14Z
Mike.lifeguard
117
+purge?
14354
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
r42ytl5egk3c3vvakhel7qxxhn8hx8x
14355
14354
2007-12-18T18:10:23Z
Mike.lifeguard
117
+edittop
14355
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
7maqjifkg9cqvhecw36vd0frvdysa1n
14356
14355
2007-12-18T18:11:50Z
Mike.lifeguard
117
+bottomtabs
14356
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
mdoutjmrpmbrs5sp8f3nbwkq27o0cde
14357
14356
2007-12-18T18:14:08Z
Mike.lifeguard
117
+sixtabs
14357
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
gp2n82mdh9rvtms9cb7ol0h45cmo4yc
14358
14357
2007-12-18T18:17:53Z
Mike.lifeguard
117
+autodel (Admins only)
14358
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*autodel|autodel.js
a19h99ynngak5o48nya5inzdgrzch0c
14359
14358
2007-12-18T18:24:21Z
Mike.lifeguard
117
+Twinklerevert
14359
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*autodel|autodel.js
*Twinklerevert|morebits.js|twinklefluff.js
0j5xaerymm10q21ht7pc9feyvr7r8i9
14360
14359
2007-12-18T18:26:24Z
Mike.lifeguard
117
+twinkledelimges
14360
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*autodel|autodel.js
*Twinklerevert|morebits.js|twinklefluff.js
*twinkledelimages|morebits.js|twinkledelimages.js
ck3rw8j8fe07bo17zj4gz0c2it7uyrr
14361
14360
2007-12-18T18:50:48Z
Mike.lifeguard
117
14361
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*Twinklerevert|morebits.js|twinklefluff.js
==Admin gadgets==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
hk8dldo2o3us1huyaaeumbz2cdr4j8a
14362
14361
2007-12-18T18:52:12Z
Mike.lifeguard
117
fix?
14362
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*Twinklerevert|morebits.js|twinklefluff.js
==Admin Gadgets==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
jneuvqojm6exjykdzkkkuz2s0gxu519
14363
14362
2007-12-18T18:53:22Z
Mike.lifeguard
117
fix?
14363
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*Twinklerevert|morebits.js|twinklefluff.js
==admingadgets==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
sdxeltv6xvea8zcoxzigy8zqh7c9y79
14364
14363
2007-12-18T18:56:49Z
Mike.lifeguard
117
fix?
14364
wikitext
text/x-wiki
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*BookSearch|BookSearch.js
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*Twinklerevert|morebits.js|twinklefluff.js
== admingadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
ro0c66wca1c4dwaqrpmdjqd5tdem938
14365
14364
2007-12-18T21:57:40Z
Whiteknight
3636
14365
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tabgadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
== othergadgets ==
*BookSearch|BookSearch.js
== admingadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
ja302xnr7zfepw576z28m76hzkb1eby
14366
14365
2007-12-18T22:23:38Z
Whiteknight
3636
14366
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tabgadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
== othergadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
== admingadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
040i2yy0vsxexm1sueaeut0svpwdpwg
14367
14366
2007-12-19T03:29:19Z
Whiteknight
3636
adding semi-automatic welcoming script
14367
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tabgadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
== othergadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
*Welcome|wknightcore.js|Welcome.js
== admingadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
gdo2trqkhl2o7pq310eq96ajhtv49u2
14368
14367
2007-12-19T16:29:19Z
Mike.lifeguard
117
/* tabgadgets */ ExtraTools.js
14368
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tabgadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*ExtraTools|ExtraTools.js
== othergadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
*Welcome|wknightcore.js|Welcome.js
== admingadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
lj7hnc6rg5laipbhvcrjtha09i64688
14369
14368
2007-12-19T18:36:04Z
Darklama
2894
+RemoveImageTools
14369
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tabgadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*RemoveImageTools|RemoveImageTools.js
== othergadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
*Welcome|wknightcore.js|Welcome.js
== admingadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
sahfvo09odxd4casec57kur6xtydyh5
14370
14369
2007-12-20T01:02:12Z
Darklama
2894
+EnhancedUndelete script
14370
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tab gadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*RemoveImageTools|RemoveImageTools.js
== other gadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
*Welcome|wknightcore.js|Welcome.js
== admingadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
*EnhancedUndelete|EnhancedUndelete.js
65n0rbdeu8nm4ovyn2zaw58mrh3o85y
14371
14370
2007-12-20T01:02:52Z
Darklama
2894
minor tweak
14371
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tab gadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*RemoveImageTools|RemoveImageTools.js
== other gadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
*Welcome|wknightcore.js|Welcome.js
== admin gadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
*EnhancedUndelete|EnhancedUndelete.js
qx9djtwb4rzcrhld3el5sykgku6z3ti
14372
14371
2007-12-20T01:13:58Z
Darklama
2894
fix headings
14372
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tab-gadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
*Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
*EnhancedUndelete|EnhancedUndelete.js
0cghf6m62vnl2i1aneb3gk4j2igxggz
14373
14372
2007-12-20T01:36:44Z
Darklama
2894
see if removing extra space makes it work
14373
wikitext
text/x-wiki
== interface ==
*Perbook|Perbook.js
*Personalper|Personalper.js
*extlinks|extlinks.js
*Twinklerevert|morebits.js|twinklefluff.js
== tab-gadgets ==
*purge|purge.js
*edittop|edittop.js
*bottomtabs|bottomtabs.js
*sixtabs|sixtabs.js
*RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
*BookSearch|BookSearch.js
*wkPrintVersion|wknightcore.js|wkprintversion.js
*Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
*autodel|autodel.js
*twinkledelimages|morebits.js|twinkledelimages.js
*EnhancedUndelete|EnhancedUndelete.js
ire5zxzcw3mdda1s3wggf9n4h0ouogs
14374
14373
2007-12-20T01:43:32Z
Darklama
2894
+space between * and description page
14374
wikitext
text/x-wiki
== interface ==
* Perbook|Perbook.js
* Personalper|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
2hfgqr1rhhxfwpi2hqzvoav3z2814ba
14375
14374
2007-12-20T02:19:54Z
Whiteknight
3636
14375
wikitext
text/x-wiki
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== interface ==
* Perbook|Perbook.js
* Personalper|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
cayaudtav0ebm829n0wa0mm1zjkuax7
14376
14375
2007-12-20T02:20:42Z
Whiteknight
3636
14376
wikitext
text/x-wiki
== interface ==
* Perbook|Perbook.js
* Personalper|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
2hfgqr1rhhxfwpi2hqzvoav3z2814ba
14377
14376
2008-01-02T18:31:24Z
Whiteknight
3636
/* other-gadgets */ adding a whole suite of my gadgets
14377
wikitext
text/x-wiki
== interface ==
* Perbook|Perbook.js
* Personalper|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
roay9aeodtkh1w2onekwn02r7xjejcg
14378
14377
2008-01-08T22:31:13Z
Whiteknight
3636
/* interface */
14378
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
9wb5vb8bnsvbwc031gxmxa24qe4qq1n
14379
14378
2008-01-11T03:06:58Z
Mike.lifeguard
117
+unlink using TW
14379
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
ij3muliqqrbrqo0rkyv994kijuj4x2d
14380
14379
2008-01-11T06:48:04Z
Mike.lifeguard
117
+VoA scripts
14380
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* VoAScripts|addtabs.js|specialadmin.js|history.js|sleeper.js
9mbzd2r71tf25sbrizn4idvox4qevmb
14381
14380
2008-01-11T19:50:08Z
Mike.lifeguard
117
comment out pending fix
14381
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
<!--* VoAScripts|addtabs.js|specialadmin.js|history.js|sleeper.js-->
8do6hj8yqsdvpqs9af71nxrxw5g1ruq
14382
14381
2008-01-12T07:18:20Z
Mike.lifeguard
117
/* interface */ +rightsfilter.js
14382
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
<!--* VoAScripts|addtabs.js|specialadmin.js|history.js|sleeper.js-->
nxd3gsc0c90d9xz3qxjnx7r5n336lxz
14383
14382
2008-01-14T04:17:29Z
Mike.lifeguard
117
/* interface */ +twinklyspeedy.js
14383
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* Twinklespeedy|morebits.js|twinklespeedy.js
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
<!--* VoAScripts|addtabs.js|specialadmin.js|history.js|sleeper.js-->
hjvehdubl0yi4cj994tjbgveppme2rj
14384
14383
2008-01-14T04:30:06Z
Mike.lifeguard
117
/* admin-gadgets */ +modrollback.js
14384
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* Twinklespeedy|morebits.js|twinklespeedy.js
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
<!--* VoAScripts|addtabs.js|specialadmin.js|history.js|sleeper.js-->
003qb7ccatueheur8qd5o3ijs04bruh
14385
14384
2008-01-14T05:24:00Z
Mike.lifeguard
117
comment out until less buggy
14385
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
<!--* Twinklespeedy|morebits.js|twinklespeedy.js-->
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
<!--* VoAScripts|addtabs.js|specialadmin.js|history.js|sleeper.js-->
8ngp6t9qi4qmul4bafahmoplk6qz2px
14386
14385
2008-01-14T05:24:44Z
Mike.lifeguard
117
commenting out doesn't actually work :S
14386
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
427f58ln6pp73u1axxo0d8djfkcvpkl
14387
14386
2008-01-18T03:12:58Z
Mike.lifeguard
117
+better bottom tabs
14387
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
3b8eeouwwxcl1gat7upfubu55xd51zd
14388
14387
2008-01-20T02:22:31Z
Mike.lifeguard
117
/* admin-gadgets */ autodeletelinks is non-functional for an unknown reason :(
14388
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
nwmso9uxs78xwwwxptrdmub2he6p2uo
14389
14388
2008-01-20T05:58:39Z
Mike.lifeguard
117
is working again (replaced)
14389
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
3b8eeouwwxcl1gat7upfubu55xd51zd
14390
14389
2008-02-28T13:32:36Z
Webaware
3637
/* interface */ +sortlistinhtml.js
14390
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
1are9cn2gctyo8v420lcihz1kqek45x
14391
14390
2008-03-06T12:26:17Z
Mike.lifeguard
117
/* interface */ +1
14391
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
33yjq9o1w1eec51stvclpfkhd51ui9p
14392
14391
2008-03-25T17:23:15Z
Darklama
2894
+SpecialSearch
14392
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
fdmihqlt0pxy73s58v4zjzs8wjn06zi
14393
14392
2008-04-11T02:16:16Z
Mike.lifeguard
117
/* admin-gadgets */ +[[MediaWiki:Gadget-CleanDeleteReasons.js]]
14393
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
hhoab32oipqgog4op0y2ys0kt3l0ete
14394
14393
2008-05-24T19:49:34Z
Mike.lifeguard
117
/* admin-gadgets */ +[[User:Mike.lifeguard/Twinkle Speedy documentation|Twinkle Speedy]]
14394
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
d3ywe5b3qd9f79ptd4og9udtnj33e18
14395
14394
2008-05-24T19:54:25Z
Mike.lifeguard
117
/* other-gadgets */
14395
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
higxt9kvbplmncm6z53zmqnstuk1eo1
14396
14395
2008-06-05T21:36:00Z
Mike.lifeguard
117
/* interface */ +popups
14396
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
k3n82edfjm3tdz3k93ickpz9lisnr92
14397
14396
2008-07-04T20:47:44Z
Mike.lifeguard
117
/* admin-gadgets */ +getmoredata
14397
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
idrob3ox5040e48pcrd7qlhwrwpj6o0
14398
14397
2008-08-16T19:35:20Z
Mike.lifeguard
117
/* admin-gadgets */ +blocking stuff
14398
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
oqffacj6v3m92gqvzzhc6yk58eb9nug
14399
14398
2008-10-01T03:20:50Z
Mike.lifeguard
117
/* admin-gadgets */ +[[MediaWiki:Gadget-patroller.js]]
14399
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* BookSearch|BookSearch.js
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* patroller|patroller.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
he4ssnxvmbvwty3f6ctrei1v615l2nw
14400
14399
2008-10-07T01:12:06Z
Mike.lifeguard
117
rm booksearch
14400
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* patroller|patroller.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
e7hvnpow9ujdjmodeq2dod3nbirjx02
14401
14400
2008-10-10T00:04:30Z
Whiteknight
3636
/* interface */
14401
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* patroller|patroller.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
cdxdry6ubtk5slg8rt1i6h3n2plhieg
14402
14401
2008-11-03T02:40:05Z
Mike.lifeguard
117
gone
14402
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* patroller|patroller.js
* massblock|massblock.js|blockoptions.js
17tuiviuhmsp2n4ubuleu445xs21i3p
14403
14402
2008-11-03T02:41:10Z
Mike.lifeguard
117
Undo revision 1323477 by [[Special:Contributions/Mike.lifeguard|Mike.lifeguard]] ([[User talk:Mike.lifeguard|Talk]])
14403
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* patroller|patroller.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
cdxdry6ubtk5slg8rt1i6h3n2plhieg
14404
14403
2008-11-11T02:23:13Z
Mike.lifeguard
117
/* interface */ +hide banner
14404
wikitext
text/x-wiki
== interface ==
* HideFundraisingNotice|HideFundraisingNotice.css
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* patroller|patroller.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
fhsprtaz2su2ezch96wzrmbru9dr3na
14405
14404
2008-11-17T19:16:13Z
Mike.lifeguard
117
14405
wikitext
text/x-wiki
== interface ==
* HideFundraisingNotice|HideFundraisingNotice.css
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* rangecontribs|rangecontribs.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
sxuupaowjnya5yveosv33iuzgi8qi5e
14406
14405
2008-11-20T01:08:00Z
Mike.lifeguard
117
update
14406
wikitext
text/x-wiki
== interface ==
* HideFundraisingNotice|HideFundraisingNotice.css
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
r0w243i4e2ob06wuls7wm5k1ypwmoty
14407
14406
2008-12-08T17:11:52Z
Whiteknight
3636
/* other-gadgets */
14407
wikitext
text/x-wiki
== interface ==
* HideFundraisingNotice|HideFundraisingNotice.css
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkprintversion.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
kasi5zeowbhr550nz8obcuvdtpns6ed
14408
14407
2008-12-13T21:04:22Z
Whiteknight
3636
/* other-gadgets */
14408
wikitext
text/x-wiki
== interface ==
* HideFundraisingNotice|HideFundraisingNotice.css
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkPrintVersion|wknightcore.js|wkprintversion.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
pxq0w3d6ym8hbxvkh9b4xvsmtk07dcw
14409
14408
2008-12-13T21:12:43Z
Whiteknight
3636
/* other-gadgets */
14409
wikitext
text/x-wiki
== interface ==
* HideFundraisingNotice|HideFundraisingNotice.css
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
2i6qdt7bgqh8x9vi12wteemrcrzxqb5
14410
14409
2009-01-10T04:35:30Z
Mike.lifeguard
117
-fundraiser
14410
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
fmffaeusl23t7qgm5p3pctth31s7uq4
14411
14410
2009-01-13T17:24:11Z
Mike.lifeguard
117
rm * EnhancedUndelete|EnhancedUndelete.js - core software
14411
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
7oew2fneeukm1edxyq5oahoflhntphe
14412
14411
2009-01-13T17:51:57Z
Mike.lifeguard
117
Undo revision 1378171 by [[Special:Contributions/Mike.lifeguard|Mike.lifeguard]] ([[User talk:Mike.lifeguard|Talk]])
14412
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
fmffaeusl23t7qgm5p3pctth31s7uq4
14413
14412
2009-05-10T23:04:31Z
Darklama
2894
+1
14413
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
* colorcats|category-colorcode.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
7uymohft2q5pl9wg7qrpxp5m1lynroy
14414
14413
2009-05-21T18:51:16Z
Darklama
2894
+missing style
14414
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
* colorcats|category-colorcode.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* betterbottomtabs|btabs.css|btabs.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
11olnd9lfouqznwhsmtr3a2xt5204sx
14415
14414
2009-05-21T19:51:02Z
Darklama
2894
rm btabs, bottomtabs should work in IE now...
14415
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
* colorcats|category-colorcode.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
0vfpdalqi8rj5ud344v45z7vrc808o4
14416
14415
2009-12-16T17:04:48Z
Adrignola
502
hide fundraising notice option
14416
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
* colorcats|category-colorcode.css
* HideFundraisingNotice|HideFundraisingNotice.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
9nygeyfh309gyzifb4al7www4k0qmae
14417
14416
2010-01-11T16:07:55Z
Adrignola
502
/* interface */ fundraising notice done
14417
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
* colorcats|category-colorcode.css
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
0vfpdalqi8rj5ud344v45z7vrc808o4
14418
14417
2010-01-26T15:29:59Z
Adrignola
502
/* interface */ comments in local time gadget
14418
wikitext
text/x-wiki
== interface ==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* extlinks|extlinks.js
* Twinklerevert|morebits.js|twinklefluff.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* navpop|navpop.js|navpop.css
* wiked|wiked.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== other-gadgets ==
* SpecialSearch|SpecialSearch.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* Welcome|wknightcore.js|Welcome.js
* JSL|JSL.js
* GetCollection|collectionparser.js
== admin-gadgets ==
* modrollback|modrollback.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
1fhlzmw4j5ivjvcggt5nxpt09fsjmq5
14419
14418
2010-01-26T16:34:39Z
Adrignola
502
revising sections
14419
wikitext
text/x-wiki
== interface ==
=== browse-gadgets ===
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
=== edit-gadgets ===
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
=== book-gadgets===
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
=== tab-gadgets ===
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
=== link-gadgets ===
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
=== delete-gadgets ===
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
f8t6whm15oog3euuvxfsbj16aa3ktqa
14420
14419
2010-01-26T16:36:21Z
Adrignola
502
fixed headings
14420
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* sortlistinhtml|sortlistinhtml.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
== book-gadgets==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
jw4mnibin0wf1pot5tprlza59u0bsqx
14421
14420
2010-04-09T22:48:36Z
Darklama
2894
rm gadget, dpl now supports sorting alphabetically natively
14421
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
== book-gadgets==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
r27dywz6ta54nwszat26nd9vdas7bmr
14422
14421
2010-05-12T01:37:58Z
Mike.lifeguard
117
/* browse-gadgets */ +1
14422
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
*background-awesomeness.css|background-awesomeness
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
== book-gadgets==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
qt2e0ah5tm7vsa3mrz59lyfaayk5ccu
14423
14422
2010-05-12T01:39:26Z
Mike.lifeguard
117
oops
14423
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
== book-gadgets==
* Perbook|predef.js|Perbook.js
* Personalper|predef.js|Personalper.js
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
6id6vrwu0r57kfh7tj3gap9869sr1ze
14424
14423
2010-06-23T14:01:53Z
Adrignola
502
/* book-gadgets */ removed gadgets now in [[MediaWiki:Common.js/Perbook.js]]
14424
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
* twinklespeedy|morebits.js|twinklespeedy.js
mojgem64raj6765q7oyz733rdoe9vvg
14425
14424
2010-06-23T14:28:13Z
Adrignola
502
reordered
14425
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
hsd283kegz52y8g4i6bbeiqe001u8fr
14426
14425
2010-06-29T18:53:31Z
Adrignola
502
/* edit-gadgets */ Twinkle warning gadget
14426
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
hmtvl1m40v4sdd6cqu4mlajatp7mp88
14427
14426
2010-07-29T02:57:56Z
Adrignola
502
/* tab-gadgets */ show all Vector tabs gadget
14427
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* vectorTabs|vectorTabs.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
bjor6l1c0iwqiu9q7diga7np6ncxlb9
14428
14427
2010-07-29T03:18:26Z
Adrignola
502
remove last addition; doesn't work with Twinkle
14428
wikitext
text/x-wiki
== browse-gadgets ==
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* CommentsInLocalTime|CommentsInLocalTime.js
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
hmtvl1m40v4sdd6cqu4mlajatp7mp88
14429
14428
2010-08-19T12:13:45Z
Adrignola
502
additional for sidebar interwiki translation
14429
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* getmoredata|getmoredata.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
6vynmrl02ptfzimn5e1003olhzm7btj
14430
14429
2010-11-11T17:11:29Z
Adrignola
502
-ajax sysop
14430
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
qb4wwdqc77gjvfm9r2pdlt5shwp2ns4
14431
14430
2010-11-13T13:28:06Z
Adrignola
502
subpages.js
14431
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* subpages|subpages.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
0glmzgon22jl3m3mtiqdz45uje24m73
14432
14431
2010-11-23T23:15:13Z
Darklama
2894
/* browse-gadgets */ +1
14432
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* subpages|subpages.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
80qtnwazr902lb3di1hn3oz3x5zlyu5
14433
14432
2010-12-02T17:25:48Z
Adrignola
502
/* browse-gadgets */ hide fundraising notice gadget
14433
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* subpages|subpages.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
82zaagwbe2aso8izdi6ccrxg094xzvv
14434
14433
2011-01-08T01:48:23Z
Adrignola
502
comment out fundraising notice hider
14434
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|btabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* subpages|subpages.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
1ncbsx9hmrxfn3uqiahxlmy2wtstaoi
14435
14434
2011-02-27T13:59:50Z
Darklama
2894
/* tab-gadgets */ reflect rename
14435
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback|modrollback.js
* subpages|subpages.js
* massblock|massblock.js|blockoptions.js
* autodel|autodel.js
* twinkledelimages|morebits.js|twinkledelimages.js
* EnhancedUndelete|EnhancedUndelete.js
* CleanDeleteReasons|CleanDeleteReasons.js
lauyydq6e3mh04iak5s9l4za1g33nlh
14436
14435
2011-06-23T15:08:21Z
Adrignola
502
/* admin-gadgets */ hide gadgets for those without the rights
14436
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|morebits.js|twinkledelimages.js
* EnhancedUndelete[rights=delete]|EnhancedUndelete.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
75ls0isld0f6bov7lx3gl4449bdb3l3
14437
14436
2011-08-17T00:02:26Z
Darklama
2894
/* link-gadgets */ +1
14437
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
* commons-file|commons-file.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|morebits.js|twinkledelimages.js
* EnhancedUndelete[rights=delete]|EnhancedUndelete.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
avzddqpnddor3e2zkw4nit4am9n3xn9
14438
14437
2011-08-17T00:05:37Z
Darklama
2894
/* link-gadgets */ turn commons links on by default
14438
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
* commons-file[default]|commons-file.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|morebits.js|twinkledelimages.js
* EnhancedUndelete[rights=delete]|EnhancedUndelete.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
lf53ox2manqu4sqcjc02htf8crzrcq0
14439
14438
2011-08-28T17:31:02Z
Darklama
2894
/* edit-gadgets */ +toolbox compatibility layer
14439
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
* toolboxcompat[default]|toolboxcompat.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* edittop|edittop.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== link-gadgets ==
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* Twinkleunlink|morebits.js|twinkleunlink.js
* commons-file[default]|commons-file.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|morebits.js|twinkledelimages.js
* EnhancedUndelete[rights=delete]|EnhancedUndelete.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
srtz67fw45jq7iqk6x34yawrixstlb7
14440
14439
2011-08-29T15:21:42Z
Darklama
2894
rm links section, moved gadgets to other sections
14440
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|morebits.js|twinkledelimages.js
* EnhancedUndelete[rights=delete]|EnhancedUndelete.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
cduoqmnx6vhortckgflhlrudc4n1d8m
14441
14440
2011-10-07T17:28:30Z
Darklama
2894
rm gadget now core functionality
14441
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert|morebits.js|twinklefluff.js
* twinklespeedy|morebits.js|twinklespeedy.js
* twinklewarn|morebits.js|twinklewarn.js
* Twinkleunlink|morebits.js|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|morebits.js|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
3xy765ocs92jzni4wsiocf1qakjstxd
14442
14441
2012-02-22T23:27:10Z
Darklama
2894
use resourceloader and dependencies for some gadgets
14442
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|morebits.js|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|morebits.js|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|morebits.js|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|morebits.js|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|morebits.js|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
d0jyyebo0jpqwu7awnlsg4u88216syw
14443
14442
2012-05-31T13:59:40Z
Darklama
2894
+twinke.css, rename morebits.js -> twinkle.js
14443
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
e59nnexkoxadhnmjo1otxeh7nn7ixso
14444
14443
2013-12-19T12:15:03Z
Az1568
66
+1
14444
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
1tw82oit3eo2sdggx6xs9nf2fs244d3
14445
14444
2014-05-24T18:49:32Z
Darklama
2894
/* edit-gadgets */ +sandbox gadget
14445
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
* mySandbox[ResourceLoader|dependencies=mediawiki.util,mediawiki.Title,mediawiki.Uri|default|rights=createpage]|mySandbox.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
ece8vobi7iuqvmntbl3500cj4eavp9k
14446
14445
2014-05-24T19:26:24Z
Darklama
2894
/* browse-gadgets */ +Wiktionary hover gadget
14446
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
* dictHover|dictionaryLookupHover.js
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
* mySandbox[ResourceLoader|dependencies=mediawiki.util,mediawiki.Title,mediawiki.Uri|default|rights=createpage]|mySandbox.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
o2nxkimp3hnvu6tt963ym0tcuheq6hc
14447
14446
2014-05-24T19:42:33Z
Darklama
2894
should have looked more apparently Wiktionary hover gadget is current broken
14447
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
* mySandbox[ResourceLoader|dependencies=mediawiki.util,mediawiki.Title,mediawiki.Uri|default|rights=createpage]|mySandbox.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
* RemoveImageTools|RemoveImageTools.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
d97vq4sydulgtvyd3fskrdge8dw9il9
14448
14447
2014-06-05T02:11:05Z
Darklama
2894
/* tab-gadgets */ untagged link was removed due to no longer working, gadget to remove link no longer needed
14448
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
* mySandbox[ResourceLoader|dependencies=mediawiki.util,mediawiki.Title,mediawiki.Uri|default|rights=createpage]|mySandbox.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
nasth95vzqrkc3m3i7dxmubwd5hvl9l
14449
14448
2014-06-05T03:28:18Z
Darklama
2894
/* edit-gadgets */ use ResourceLoader for Welcome gadget
14449
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
* mySandbox[ResourceLoader|dependencies=mediawiki.util,mediawiki.Title,mediawiki.Uri|default|rights=createpage]|mySandbox.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
0cvkha8tqlf345li0nad6t5d9rajnqn
14450
14449
2014-06-05T04:16:25Z
Darklama
2894
/* edit-gadgets */ add site as dependency for Welcome gadget
14450
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
* mySandbox[ResourceLoader|dependencies=mediawiki.util,mediawiki.Title,mediawiki.Uri|default|rights=createpage]|mySandbox.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
65non2p7phzvn1zpmfdjobt33pr1apv
14451
14450
2014-06-05T04:37:55Z
Darklama
2894
/* edit-gadgets */ another dependency for Welcome gadget
14451
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
* mySandbox[ResourceLoader|dependencies=mediawiki.util,mediawiki.Title,mediawiki.Uri|default|rights=createpage]|mySandbox.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
4tllr680aq9qps70pcep8ikwx3bvoac
14452
14451
2015-04-09T18:28:53Z
Matma Rex
1548
disabling the sandbox gadget after deploying SandboxLink extension, see [[phabricator:T72499]]; help and configuration: [[mw:Help:Extension:SandboxLink]]
14452
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
ifg81wh7nrs3ixw19s8ke7mr2y8808q
14453
14452
2015-04-27T05:10:46Z
Az1568
66
/* admin-gadgets */ + * markblocked
14453
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked|markblocked.js
ltmxd9slmixnwnxwqku5utjck92me47
14454
14453
2015-08-07T04:27:45Z
Pi zero
2546
/* browse-gadgets */
14454
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked|markblocked.js
bjuol4zsry3759a80x9v6bo5j56w5n2
14455
14454
2015-08-15T10:04:11Z
Az1568
66
Set [ResourceLoader] for markedblocked
14455
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
sly2gt9f9i5b5x2gdnwnzi1tpikx33l
14456
14455
2015-08-15T10:05:45Z
Az1568
66
Set [ResourceLoader] for navpops, contribsrange
14456
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
3u6milbmzoskmty6qgc69zx2hq5th3s
14457
14456
2015-08-15T10:15:33Z
Az1568
66
/* admin-gadgets */ modrollback [ResourceLoader]
14457
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader][rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
j21fmnugns1iklxlwi48irylepydr2c
14458
14457
2015-08-15T10:16:39Z
Az1568
66
fix syntax error
14458
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
k5w46qje24s5f9cxx0idwzxplb14iqs
14459
14458
2015-08-15T10:19:02Z
Az1568
66
/* browse-gadgets */ rightsfilter [ResourceLoader]
14459
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
qr4ajlzh78lk31cagz1mqmq3vmpyjtf
14460
14459
2015-08-15T10:27:12Z
Az1568
66
/* admin-gadgets */ ResourceLoader for massblock
14460
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
qa2psakdqgkmx8y26t32rjmkufo5cb7
14461
14460
2015-08-15T10:32:49Z
Az1568
66
/* admin-gadgets */ CleanDeleteReasons [ResourceLoader]
14461
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
tgxlfcfsvwvstd9bowfie7wgqtipzeb
14462
14461
2015-08-15T10:40:35Z
Az1568
66
/* edit-gadgets */ wiked + ResourceLoader
14462
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
0flhz1z7i63cr0gmq4dj2s6097jrap3
14463
14462
2015-08-15T10:46:45Z
Az1568
66
/* browse-gadgets */ CommentsInLocalTime + ResourceLoader
14463
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
t4u5l02l842rsmcp0wrrgukofwou38k
14464
14463
2015-08-15T10:49:59Z
Az1568
66
/* admin-gadgets */ ResourceLoader for autodel
14464
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* JSL|JSL.js
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
nnra12qpq844ndgs057zu09ric3ephy
14465
14464
2015-08-15T10:52:38Z
Az1568
66
/* browse-gadgets */ Removed JSL due to deprecation and dated file
14465
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
si1l1hzt0dvuxcxkmgqjmjjab7i6mne
14466
14465
2015-08-15T10:56:15Z
Az1568
66
/* edit-gadgets */ edittop + ResourceLoader
14466
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
pceimhzpb1xywkni8w14hgazmbbl7ka
14467
14466
2015-08-15T11:08:09Z
Az1568
66
/* browse-gadgets */ SpecialSearch + ResourceLoader
14467
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[default]|commons-file.js
<!--* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css-->
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
<!--* dictHover|dictionaryLookupHover.js -->
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[default]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
== book-gadgets==
* wkBookCreator|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs|bottomtabs.css|bottomtabs.js
* sixtabs|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
ddjl81a7d337fym52td3uvwhqktsvcs
14468
14467
2016-07-27T21:24:10Z
JackPotte
1965
[ResourceLoader] migration is the first step before further tests
14468
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader|default]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
== book-gadgets==
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* dictHover|dictionaryLookupHover.js
g9gyh9tpjvhbz8k7qwqf0lqx2evi4l2
14469
14468
2016-08-14T11:22:36Z
JackPotte
1965
14469
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader|default]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
== book-gadgets==
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* dictHover|dictionaryLookupHover.js
rcwk6z5ps3als7h1mkngf0xif9spcik
14470
14469
2016-08-14T12:18:34Z
JackPotte
1965
Forbidden by Phabricator (because of XSS only?)
14470
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader|default]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
== book-gadgets==
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
8qwv6xnpox5lxxbeb8el186voz3uacn
14471
14470
2016-08-14T13:08:38Z
JackPotte
1965
14471
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* toolboxcompat[ResourceLoader|default]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
== book-gadgets==
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
5zts39a87z56ruwrpq4i4wovuw635gr
14472
14471
2016-08-14T13:23:47Z
JackPotte
1965
14472
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* edittop[ResourceLoader]|edittop.js
== book-gadgets==
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
bc0f1en62sxz6ymhlk43qfkwai658po
14473
14472
2016-08-14T13:36:26Z
JackPotte
1965
tested [[User:JackPotte/sandbox]]
14473
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== book-gadgets==
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
0boz9l5g862hvqagoy1yvlm7jp7wy0j
14474
14473
2016-08-14T13:44:56Z
JackPotte
1965
14474
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
145gtkdah3z8ph4yslwws3n5d3pkxkd
14475
14474
2016-08-14T14:46:55Z
JackPotte
1965
14475
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
24hhc7iuvq8rvw8fn43x7c2j4v648fl
14476
14475
2016-08-14T14:53:53Z
JackPotte
1965
/* admin-gadgets */
14476
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
e9dvkt4m6y0814ne9o472e6desvq58v
14477
14476
2016-08-14T15:15:26Z
JackPotte
1965
14477
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- browse-gadgets -->
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- broken-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
m6w00nov8ljresyggwy282moou9wgwr
14478
14477
2016-09-11T23:47:19Z
JackPotte
1965
14478
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- browse-gadgets -->
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- broken-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
6br53dkvbv3fnm4b487sj27m00kpwib
14479
14478
2016-09-11T23:51:23Z
JackPotte
1965
14479
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- browse-gadgets -->
* HideFundraisingNotice|HideFundraisingNotice.js|HideFundraisingNotice.css
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
abcfi6gdkn15pzaiw1v60g51t58st46
14480
14479
2016-09-12T11:24:38Z
JackPotte
1965
HideFundraisingNotice.js is deleted for years
14480
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
mpxk6uchmokt1zrbyisf9n62q9jx6o3
14481
14480
2016-09-13T10:42:59Z
JackPotte
1965
14481
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
09zczapbd8xf0kejrptki7dxudur26l
14482
14481
2016-09-13T10:48:21Z
JackPotte
1965
14482
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special characters|Special characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
06j5g5h9us2ploozei4pehf50jyfjlo
14483
14482
2016-09-13T10:48:55Z
JackPotte
1965
14483
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special characters[ResourceLoader]|Special characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
crw5uns2gz3pqi71b4vcct4b7m6ua62
14484
14483
2016-09-13T10:52:27Z
JackPotte
1965
14484
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* DeluxeBar[ResourceLoader|rights=edit]|DeluxeBar.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
hq8ypjhwpx0i8p3qy06exyng41ilibc
14485
14484
2016-09-13T10:53:37Z
JackPotte
1965
14485
wikitext
text/x-wiki
== browse-gadgets ==
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
8sadh5gk0z0vbufn08hw55faqvgg9qw
14486
14485
2016-11-19T02:12:34Z
Pi zero
2546
wikidialog, first on list, not default
14486
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
qdn5aygtsh00r38wnjxjycv2hitb69x
14487
14486
2016-12-04T19:45:42Z
JackPotte
1965
14487
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
r0obdtp6rcg9tk1yqhtgnzkokgv1t7s
14488
14487
2016-12-25T21:26:01Z
Pi zero
2546
/* browse-gadgets */ opt-out
14488
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* extlinks[default|ResourceLoader|dependencies=mediawiki.util]|extlinks.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
fmxeidlpq19ztdn8wyqa5ekc6jf0ifo
14489
14488
2017-01-02T23:27:53Z
JackPotte
1965
[[Wikibooks:Reading_room/Technical_Assistance#Javascript_error:_mw.util..24content_is_null]]
14489
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* colorcats|category-colorcode.css
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
3cwm59yacrfw09evl8zanesh2nxhdpn
14490
14489
2017-01-06T22:38:18Z
Pi zero
2546
[[Wikibooks:Reading room/General#Appearance of categories]]
14490
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
e41bkdzlsv48v894z5lmb29h5n27gpi
14491
14490
2017-05-22T23:19:34Z
Nemo bis
1585
Declare dependency so that mw.util does not break JavaScript, see [[phabricator:T164242]].
14491
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
0gqpahjqduf4hjvgzckhym9a2vuoh75
14492
14491
2017-05-22T23:19:48Z
Nemo bis
1585
Declare dependency so that mw.util does not break JavaScript, see [[phabricator:T164242]].
14492
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
024105bmspfnhsap2mbyt9srv1xdsnn
14493
14492
2017-06-02T21:32:41Z
Nemo bis
1585
Declare dependency on mediawiki.util: [[phabricator:T164242]].
14493
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete|dependencies=mediawiki.util]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
nipvzw764q4pzxvjix0xszazkmgve5m
14494
14493
2017-06-02T21:32:46Z
Nemo bis
1585
Declare dependency so that mw.util does not break JavaScript, see [[phabricator:T164242]].
14494
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
bj6nenyueku0brqyf2x6xj8ghuex700
14495
14494
2017-06-02T21:33:04Z
Nemo bis
1585
Declare dependency so that mw.util does not break JavaScript, see [[phabricator:T164242]].
14495
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
1tfxwx3qli6nysbenrt52sr7t2556yg
14496
14495
2017-06-02T21:33:21Z
Nemo bis
1585
Declare dependency so that mw.util does not break JavaScript, see [[phabricator:T164242]].
14496
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
l6wa2v3m473l7m2h1dxvdcmtr14nmzu
14497
14496
2017-06-02T21:33:35Z
Nemo bis
1585
Declare dependency so that mw.util does not break JavaScript, see [[phabricator:T164242]].
14497
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
l96gstbmrd1ukknrk83599okm3lajsl
14498
14497
2017-06-02T21:34:19Z
Nemo bis
1585
Declare dependency on mediawiki.util: [[phabricator:T164242]].
14498
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
l7svjijesxmu4koki6lk2619rn96jxu
14499
14498
2017-06-02T21:34:25Z
Nemo bis
1585
Declare dependency so that mw.util does not break JavaScript, see [[phabricator:T164242]].
14499
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
603x4910pgfiq8n9os66ddfq99kpif5
14500
14499
2017-08-30T06:57:49Z
JackPotte
1965
14500
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
0xa522bxdva0zuhhovpry4mlzrgiw3m
14501
14500
2018-10-31T21:18:00Z
JackPotte
1965
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js to repair the old edition bar
14501
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui.dialog,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
o3wysienmkct4luoauus9ddnu4fzeru
14502
14501
2019-10-25T16:36:08Z
Krinkle
566
Maintenance: [[mw:RL/MGU]] - Updated deprecated module name
14502
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
16yds5oqburcncja5azngf7dvkxxnln
14503
9466
2021-03-21T13:23:28Z
Minorax
2634
/* admin-gadgets */ +
14503
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
o63meoeya2fq236fv25hgi2abkqu3nl
14504
14503
2021-06-29T11:56:09Z
Leaderboard
2891
+bookcat
14504
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui,jquery.tipsy]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
rus9mfblrprw8fpq9j5g3xe1sbbqmy8
14505
11981
2023-05-15T21:40:40Z
Jon (WMF)
3229
<maintenance> [[phab:T336019]] jquery.tipsy will be removed from MediaWiki core
14505
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Welcome[ResourceLoader|dependencies=site,mediawiki.util]|wknightcore.js|Welcome.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
7a1kg0zallp5yzh59ctawg19mi88yyn
14506
13607
2024-12-10T11:29:48Z
Leaderboard
2891
/* broken-gadgets */ try
14506
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|User:JJPMaster/OneClickWelcomer.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
b4u5trvgvf65x2dl6zef4znhjy04pw8
14507
14506
2024-12-10T11:30:15Z
Leaderboard
2891
14507
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
3ontggcfshqpkvo6825v55hpjfhqkpy
14508
14507
2024-12-14T06:18:12Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#c-JJPMaster-20241210151300-Leaderboard-20241210144700
14508
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
2vhjy3jnzwookmj4ynik1gz6294zbrx
14509
14508
2024-12-17T16:12:39Z
Leaderboard
2891
14509
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|rights=block|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
fnyll9gm8iv2zky5e1utffkyleewvzw
14510
14509
2024-12-18T02:51:39Z
Leaderboard
2891
/* admin-gadgets */ https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance
14510
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins-data.js|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
k9qjev6ma9ve8jr6pyctv68b7a9m1qc
14511
14510
2024-12-21T16:42:21Z
Leaderboard
2891
/* admin-gadgets */
14511
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
9dz6kxfgzql99fap9iiy1yh4pn8fmda
14512
14511
2024-12-21T21:14:31Z
Leaderboard
2891
/* admin-gadgets */ https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#c-JJPMaster-20241221170300-Leaderboard-20241221164200
14512
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util],mediawiki.api|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
hoeds1gnyh45mbf37dc9u1hejw2rwss
14513
14512
2024-12-22T01:15:50Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#Some_changes_to_MediaWiki:Gadget-markAdmins
14513
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel[ResourceLoader|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
al112tr5i9ofaoqrawnne4ou727mm7q
14514
14513
2025-04-03T20:24:36Z
JJPMaster
3394
/* broken-gadgets */ fixing autodel dependencies (using [[wikt:MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
14514
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,ext.gadget.jquery.blockUI,ext.gadget.AjaxQuickDelete,ext.gadget.jquery.in-view|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
5x4pqyg62noks0ma4kf6c11conuxxjc
14515
14514
2025-04-03T20:46:22Z
JJPMaster
3394
this isn't commons
14515
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
ecbyjyqpcx9lvxsfsuji01zc12nrox7
14516
14515
2025-04-03T20:49:57Z
JJPMaster
3394
/* broken-gadgets */ the other dependencies (using [[wikt:MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
14516
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|targets=desktop,mobile|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
bwtmyk1o0boxc4ijq85z75mnyqr5k60
14517
14516
2025-09-24T18:26:00Z
Krinkle
566
Maintenance: Remove redundant "targets=desktop,mobile", this is the default now and will not change again because the target system was deprecated. Ref [[phab:T127268]] and [[mw;Extension:Gadgets#Options]] ("Removed options").
14517
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
7yiyx2ykeoa9yg2wtxtt63o6wtr1mfi
14518
14517
2025-09-24T18:36:56Z
Krinkle
566
Maintenance: Define a "sitewide" gadget, a hidden default gadget for additional files/dependencies in addition to Common.js. See also edit history on [[MediaWiki:Common.js]].
14518
wikitext
text/x-wiki
== browse-gadgets ==
* sitewide[ResourceLoader|default|hidden]|sitewide-jQueryAsync.js
* wikidialog[ResourceLoader|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
o6s3xiq5sjvlkiw5x1cnsb4wqghkzt9
14519
14518
2025-09-24T19:04:07Z
Krinkle
566
Nevermind. Can be refactored to not need it.
14519
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar [ResourceLoader|hidden] | mediawiki.toolbar.js
* markAdmins [ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
== broken-gadgets ==
<!-- edit-gadgets -->
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
<!-- book-gadgets -->
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
<!-- admin-gadgets -->
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
7yiyx2ykeoa9yg2wtxtt63o6wtr1mfi
14520
14519
2025-11-03T00:09:37Z
Codename Noreste
3207
Adding modrollback to the admin gadget section, and hiding the broken script section.
14520
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
m4r69d6y6jx5p3flqs6ykh4ugtdew3w
14521
14520
2025-11-23T17:57:50Z
Codename Noreste
3207
Marking the dialog gadget as hidden, while it remains enabled as default.
14521
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js|blockoptions.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
c14no11kp2l7wh6doywmyajfblnbudq
14522
14521
2026-01-02T06:17:38Z
Codename Noreste
3207
No longer relies on blockoptions.js.
14522
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* massblock[ResourceLoader|rights=block]|massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
8olx2uavb5hjqnjcxpqfq79l0mzjwyn
14523
14522
2026-01-02T20:24:56Z
Codename Noreste
3207
/* admin-gadgets */ Updating.
14523
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
rp68pms96h1lzb97eg6lwsvavnph37f
14524
14523
2026-01-02T20:56:53Z
JJPMaster
3394
/* admin-gadgets */ +1 dependency (using [[wikt:MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
14524
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
tr6ebnaezxuih5mczwrt6dqs5bj8yoa
14525
14524
2026-01-02T21:03:21Z
JJPMaster
3394
/* admin-gadgets */ +the other dependency from itwiki (using [[wikt:MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]])
14525
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util,mediawiki.api]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
49furmkuwvuq1urhexd8phmaxpnr7i1
14526
14525
2026-04-20T23:53:11Z
Codename Noreste
3207
/* edit-gadgets */ Adding HotCat.
14526
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* HotCat[ResourceLoader]|HotCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util,mediawiki.api]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
0m2ks3j4nrjr5hnjec8ciru7mltwago
14527
14526
2026-07-22T21:39:32Z
Codename Noreste
3207
Per [[Wikibooks:Reading room/Proposals#New gadget to browse subpages]].
14527
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
* Global-Subpages[ResourceLoader|dependecies=mediawiki.api,@wikimedia/codex]|Global-Subpages.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* HotCat[ResourceLoader]|HotCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util,mediawiki.api]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
nyv0lpfog9918f3wle8mm53g85cc64i
14528
14527
2026-07-22T21:43:23Z
Codename Noreste
3207
Fix.
14528
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
* Global-Subpages[ResourceLoader|dependecies=mediawiki.api, ext.codex]|Global-Subpages.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* HotCat[ResourceLoader]|HotCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util,mediawiki.api]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
p3lk3r2y3rikbeswewbh2htg5ljn62b
14529
14528
2026-07-22T21:46:42Z
Codename Noreste
3207
Another fix.
14529
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
* Global-Subpages[ResourceLoader|dependecies=mediawiki.api,@wikimedia/codex]|Global-Subpages.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* HotCat[ResourceLoader]|HotCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util,mediawiki.api]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
nyv0lpfog9918f3wle8mm53g85cc64i
14530
14529
2026-07-23T12:23:46Z
Sophivorus
3088
Fix gadget name
14530
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
* Subpages[ResourceLoader|dependecies=mediawiki.api,@wikimedia/codex]|Subpages.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* HotCat[ResourceLoader]|HotCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util,mediawiki.api]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
gcgggk6khjd6fro7j55cq5h9iadwd8y
14531
14530
2026-08-01T17:21:50Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadgets-definition]] पासून १८३ आवर्तने आयात केलीत
14530
wikitext
text/x-wiki
== browse-gadgets ==
* wikidialog[ResourceLoader|hidden|default|dependencies=mediawiki.util]|wikidialog.js
* CommentsInLocalTime[ResourceLoader]|CommentsInLocalTime.js
* sidebartranslate[ResourceLoader]|langcode2name.js|sidebartranslate.js
* SpecialSearch[ResourceLoader]|SpecialSearch.js
* rightsfilter[ResourceLoader]|rightsfilter.js
* contribsrange[ResourceLoader]|contribsrange.js
* background-awesomeness|background-awesomeness.css
* subject-pages[ResourceLoader]|subjects.css|subjects.js
* navpop[ResourceLoader]|navpop.js|navpop.css
* commons-file[ResourceLoader|default|dependencies=mediawiki.util]|commons-file.js
* UTCLiveClock[ResourceLoader]|UTCLiveClock.js
* GetCollection[ResourceLoader|dependencies=mediawiki.util]|collectionparser.js
* Subpages[ResourceLoader|dependecies=mediawiki.api,@wikimedia/codex]|Subpages.js
== edit-gadgets ==
* wiked[ResourceLoader]|wiked.js
* DeluxeBar[ResourceLoader|dependencies=ext.gadget.mediawiki.toolbar|rights=edit]|DeluxeBar.js
* searchbox[ResourceLoader]|lib-beau.js|searchbox.js
* BookCat[ResourceLoader]|BookCat.js
* HotCat[ResourceLoader]|HotCat.js
* OneClickWelcomer[ResourceLoader|dependencies=site,mediawiki.util]|OneClickWelcomer.js
== tab-gadgets ==
* purge[ResourceLoader|dependencies=mediawiki.util]|purge.js
* bottomtabs[ResourceLoader]|bottomtabs.css|bottomtabs.js
* sixtabs[ResourceLoader|skins=monobook|dependencies=mediawiki.util]|sixtabs.js
== admin-gadgets ==
* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* subpages[ResourceLoader|rights=delete|dependencies=mediawiki.util]|subpages.js
* Massblock[ResourceLoader|rights=block|dependencies=mediawiki.util,mediawiki.api]|Massblock.js
* CleanDeleteReasons[ResourceLoader|rights=delete]|CleanDeleteReasons.js
* markblocked[ResourceLoader|dependencies=mediawiki.util]|markblocked.js
* mediawiki.toolbar[ResourceLoader|hidden]|mediawiki.toolbar.js
* markAdmins[ResourceLoader|dependencies=mediawiki.util,mediawiki.api]|markAdmins.js
<!--
== broken-gadgets ==
* Twinklerevert[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklefluff.js
* twinklespeedy[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklespeedy.js
* twinklewarn[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinklewarn.js
* Twinkleunlink[ResourceLoader|dependencies=mediawiki.util,jquery.ui]|twinkle.js|twinkle.css|twinkleunlink.js
* toolboxcompat[ResourceLoader]|toolboxcompat.js
* edittop[ResourceLoader|dependencies=mediawiki.util]|edittop.js
* Special_characters[ResourceLoader]|Special_characters.js
* colorcats|category-colorcode.css
* wkBookCreator[ResourceLoader]|wknightcore.js|wkcategorize.js|wkeditinsert.js|wkdesigner.js|
* autodel [ResourceLoader|dependencies=mediawiki.cookie,mediawiki.util,mediawiki.user,user,jquery.ui|rights=delete]|autodel.js
* twinkledelimages[ResourceLoader|rights=delete]|twinkle.js|twinkle.css|twinkledelimages.js
* extlinks[ResourceLoader|dependencies=mediawiki.util]|extlinks.js
-->
gcgggk6khjd6fro7j55cq5h9iadwd8y
मिडियाविकी:Gadget-HotCat.js
8
3200
15046
7909
2026-04-20T23:50:46Z
Codename Noreste
3207
Importing from [[:q:MediaWiki:Gadget-HotCat.js]].
15046
javascript
text/javascript
window.hotcat_translations_from_commons = true;
/*
This imports the latest version of HotCat from Commons.
HotCat is a gadget to make changes to categories much easier.
Full documentation can be found at http://commons.wikimedia.org/wiki/Help:Gadget-HotCat
*/
mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );
d04l6ms26ytvd8ef5ldbo81xqdqueda
15047
15046
2026-08-01T17:30:31Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-HotCat.js]] पासून १ आवर्तन आयात केलीत
15046
javascript
text/javascript
window.hotcat_translations_from_commons = true;
/*
This imports the latest version of HotCat from Commons.
HotCat is a gadget to make changes to categories much easier.
Full documentation can be found at http://commons.wikimedia.org/wiki/Help:Gadget-HotCat
*/
mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-HotCat.js&action=raw&ctype=text/javascript' );
d04l6ms26ytvd8ef5ldbo81xqdqueda
साचा:Nowrap
10
3271
14902
11132
2015-11-28T10:13:53Z
Edokter
3641
Adapt comment; edits inside noinclude blocks should not affect job queue, but won't kill parser either way.
14902
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
avb5tcymgupik1ikutqclidkj9tnitx
14903
13432
2023-04-02T10:51:56Z
Leaderboard
2891
1 revision imported from [[:w:Template:Nowrap]]
14903
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
avb5tcymgupik1ikutqclidkj9tnitx
14904
14903
2023-04-02T22:09:44Z
Tacsipacsi
1837
Tacsipacsi moved page [[Transwiki:Nowrap]] to [[Template:Nowrap]]: yet again
14903
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
avb5tcymgupik1ikutqclidkj9tnitx
14905
14904
2024-07-15T23:12:29Z
Dialysis Machine
3642
Sn00-Cue-Sn00-Cue-Sn00-Cue-Sn00-Cue-Sn00-Cue-Sn00-Cue
14905
wikitext
text/x-wiki
[[File:Dialysis.png]]
arxcxcw31q20mjk7c2d6mx75n4r4gxv
14906
14905
2024-07-15T23:23:50Z
Jan.Kamenicek
3643
rv vandalism
14906
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
avb5tcymgupik1ikutqclidkj9tnitx
14907
14906
2024-07-16T02:26:59Z
Kittycataclysm
3644
Protected "[[Template:Nowrap]]": high impact page ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))
14906
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
avb5tcymgupik1ikutqclidkj9tnitx
14908
14907
2025-01-25T22:01:25Z
ExE Boss
2914
Use <[[mw:Special:MyLanguage/Help:Transclusion#<onlyinclude>|onlyinclude]]> and [[mw:Special:MyLanguage/Help:TemplateStyles|TemplateStyles]]
14908
wikitext
text/x-wiki
<onlyinclude><templatestyles src="Template:Nowrap/styles.css"/><span class="nowrap">{{{1}}}</span></onlyinclude>
{{Documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
68yaxpsvn72zbfdg10f7zdmhugs22et
14909
14908
2026-08-01T17:28:39Z
QueerEcofeminist
1879
[[:en:Template:Nowrap]] पासून ७ आवर्तने आयात केलीत
14908
wikitext
text/x-wiki
<onlyinclude><templatestyles src="Template:Nowrap/styles.css"/><span class="nowrap">{{{1}}}</span></onlyinclude>
{{Documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
68yaxpsvn72zbfdg10f7zdmhugs22et
आंबील
0
3280
14337
13352
2026-08-01T16:10:09Z
QueerEcofeminist
1879
भर घातली, साचे लावले (via JWB)
14337
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = १५ तास
| difficulty = <!-- Should if provided contain a number between 1 and 5 -->
| image =
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''आंबील''' करण्यासाठी [[ज्वारी]] किंवा [[नाचणी]] चे पीठ रात्री किंवा किमान १२-१५ तास भिजवुन मग त्याला शिजवितात.शिजवितांना मीठ (कोणी जीरेही ) टाकतात.आवडीप्रमाणे घट्ट वा पातळ ठेवतात.[[गौरी]] अथवा [[महालक्ष्मी]] च्या वेळेस हा पदार्थ जरूर करतातच. तो एक कुळाचार आहे.लाकडाने पेटविलेल्या चुलीवर केलेली आंबील स्वादिष्ट लागते.
[[वर्ग:नाष्ट्याचे पदार्थ]]
e7h2rqhkitqxelueyjtyd2a06yqgux5
आलू पराठा
0
3340
14342
13062
2026-08-01T17:07:40Z
QueerEcofeminist
1879
भर घातली, साचे लावले
14342
wikitext
text/x-wiki
'''आलू पराठा''' हा खाद्यपदार्थ उत्तर भारतात विशेषतः प्रचलित आहे. गव्हाच्या पोळीत उकडलेल्या बटाट्याचे [[तिखट]], [[मीठ]], [[जिरे]] इ. घालून केलेले सारण भरून हा पदार्थ तयार केला जातो.
== साहित्य ==
== कृती ==
== नोंद ==
[[वर्ग:पराठे]]
aib4rn9ne79lzom1ojp8g4fb0vuv6cb
14343
14342
2026-08-01T17:09:21Z
QueerEcofeminist
1879
भर घातली, साचे लावले
14343
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = ३० मिनिटे
| difficulty = 3 <!-- Should if provided contain a number between 1 and 5 -->
| image = [[Alu Paratha.jpg|300px]]
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''आलू पराठा''' हा खाद्यपदार्थ उत्तर भारतात विशेषतः प्रचलित आहे. गव्हाच्या पोळीत उकडलेल्या बटाट्याचे [[तिखट]], [[मीठ]], [[जिरे]] इ. घालून केलेले सारण भरून हा पदार्थ तयार केला जातो.
== साहित्य ==
== कृती ==
== नोंद ==
[[वर्ग:पराठे]]
ovp8br96lcrw835706xwvv4nyc4jeos
14344
14343
2026-08-01T17:09:47Z
QueerEcofeminist
1879
bhar
14344
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = ३० मिनिटे
| difficulty = 3 <!-- Should if provided contain a number between 1 and 5 -->
| image = [[file:Alu Paratha.jpg|300px]]
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''आलू पराठा''' हा खाद्यपदार्थ उत्तर भारतात विशेषतः प्रचलित आहे. गव्हाच्या पोळीत उकडलेल्या बटाट्याचे [[तिखट]], [[मीठ]], [[जिरे]] इ. घालून केलेले सारण भरून हा पदार्थ तयार केला जातो.
== साहित्य ==
== कृती ==
== नोंद ==
[[वर्ग:पराठे]]
9pfcvab2ma3kydnf9uoa1x8ry9e74mt
14345
14344
2026-08-01T17:11:19Z
QueerEcofeminist
1879
/* साहित्य */
14345
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = ३० मिनिटे
| difficulty = 3 <!-- Should if provided contain a number between 1 and 5 -->
| image = [[file:Alu Paratha.jpg|300px]]
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''आलू पराठा''' हा खाद्यपदार्थ उत्तर भारतात विशेषतः प्रचलित आहे. गव्हाच्या पोळीत उकडलेल्या बटाट्याचे [[तिखट]], [[मीठ]], [[जिरे]] इ. घालून केलेले सारण भरून हा पदार्थ तयार केला जातो.
== साहित्य ==
* गव्हाचे पीठ
* मीठ
* हिरवी मिरची
* बारीक चिरलेली कोथिंबीर
* उकडून कुस्करून घेतलेला बटाटा
* पाणी
== कृती ==
== नोंद ==
[[वर्ग:पराठे]]
ts6siiom6fglfmn1vn2x0jpafzj4yda
अनरसा
0
3355
14336
14321
2026-08-01T16:08:49Z
QueerEcofeminist
1879
भर घातली, साचे लावले (via JWB)
14336
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = १२ तास तयारी आणि प्रत्यक्ष बनवायला १ तास
| difficulty = <!-- Should if provided contain a number between 1 and 5 -->
| image = [[File:अनारसा (गोड पदार्थ).jpg|300px]]
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''अनरसा''' हा एक भारतीय खाद्यपदार्थ आहे. पाण्यात पाच-सहा दिवस भिजवून आंबवलेले तांदूळ व [[गूळ]] यांपासून हा बनतो. त्यासाठी साजूक तूप, [[वेलदोडा]], खसखस यांचाही वापर होतो. अनरसाच्या ओलसर पिठाच्या चकत्या तुपात तळण्यापू्वी त्यांच्यावर खसखस पसरण्याची रीत आहे. <ref>{{स्रोत बातमी |दुवा=http://www.twistoffood.com/anarsa/ |title= अनरसा |प्रकाशक=ट्विस्टऑफ़फ़ूड.कॉम |दिनांक=१० सेप्टेंबर २०१४ | प्राप्त दिनांक=}}</ref> हा विशेषतः [[दिवाळी]]त आणि अधिक महिन्यात जावयाला वाण देण्यासाठी बनवतात. हा पदार्थ महाराष्ट्राप्रमाणे पंजाबमध्येही लोकप्रिय आहे. पंजाबमध्ये बहुधा खसखस वापरत नाहीत.
संस्कृतमध्ये अनरश्याला अपूप म्हणतात.<ref>{{स्रोत बातमी |दुवा=http://www.amarujala.com/chandigarh/special-sweet-dish-anarsa-recipee-for-diwali-hindi-news|title=दीवाली पर बनती है ये स्पेशल मिठाई |प्रकाशक=अमरउजाला.कॉम |दिनांक=२२ ऑक्टोबर २०१४| प्राप्त दिनांक=}}</ref> सामान्यपणे दीपावलीच्या सणात महाराष्ट्रात आणि बिहारमध्ये बनविल्या जाणाऱ्या विविध उपहारांतील हा एक पदार्थ आहे.<ref>{{स्रोत बातमी |दुवा=https://books.google.co.in/books?id=K-AYdQARNVYC&pg=PA100&lpg=PA100&dq=Changing+dietary+patterns+and+habits&source=bl&ots=k9PXROQUKN&sig=48GeG17C-NdDh1wmB_hCWQaBzZs&hl=en&sa=X&ved=0ahUKEwjmqd2J4-PQAhUiR48KHRtxAx4Q6AEIJTAB#v=onepage&q=Changing%20dietary%20patterns%20and%20habits&f=false |title=चेंजिंग डाइटरी पैटर्न्स एंड हैबिट्स : अ सोसिओ-कल्चरल स्टडी ऑफ़ बिहार |प्रकाशक=बुक्स.गूगल.को.इन |दिनांक=१९ मे २०१६ | प्राप्त दिनांक=}}</ref>
महाराष्ट्रात विशेषकरून [[अधिक मास]] काळात जावयाला ३३ अनारसे भेट देण्याची पद्धती आहे.
==संदर्भ==
[[वर्ग:महाराष्ट्रातील खाद्यपदार्थ]]
[[वर्ग:नाष्ट्याचे पदार्थ]]
[[वर्ग:तळलेले पदार्थ]]
[[वर्ग:दिवाळी फराळ]]
[[वर्ग:गोड पदार्थ]]
[[वर्ग:सण आणि उत्सव]]
sp4v78h9wysb0y3ws5kw7x7n41vbve7
विभाग:TScope
828
3545
15029
2016-10-12T19:37:34Z
Pi zero
2546
create
15029
Scribunto
text/plain
local export = {}
export.dispatch = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ tonumber( v ) - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.dispatchNamed = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ tonumber( v ) - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
a9twe64v7hbxuqd38u2i6ae5ri9xzjr
15030
15029
2016-10-12T23:38:37Z
Pi zero
2546
push
15030
Scribunto
text/plain
local export = {}
export.dispatch = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ tonumber( v ) - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.push = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
local nv = tonumber( v ) - 1
args[ nv ] = k
displace = math.max( displace, nv )
end
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ tonumber( v ) + displace ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.dispatchNamed = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ tonumber( v ) - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
h8x1ml38t5lypcnxnm0mzdph81j8yx2
15031
15030
2016-10-12T23:43:31Z
Pi zero
2546
nomenclature
15031
Scribunto
text/plain
local export = {}
export.dispatch = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
local nv = tonumber( v ) - 1
args[ nv ] = k
displace = math.max( displace, nv )
end
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ tonumber( v ) + displace ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.dispatchOverride = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ tonumber( v ) - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.dispatchNamed = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ tonumber( v ) - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
hjowo8eda82iri4kb2kow7u6zd4l2yg
15032
15031
2016-10-13T02:21:29Z
Pi zero
2546
upgrade
15032
Scribunto
text/plain
local export = {}
export.dispatch = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.dispatchSuffix = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.dispatchOverride = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.dispatchNamed = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
g9dakvfsw8rqc8z6vamq8654sj2fw77
15033
15032
2016-10-13T10:28:12Z
Pi zero
2546
nomenclature
15033
Scribunto
text/plain
local export = {}
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
lu0uzf3rrp5i8j0hyxv2e2ucb0589a4
15034
15033
2016-10-13T10:49:55Z
Pi zero
2546
vanilla
15034
Scribunto
text/plain
local export = {}
export.call = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
ogt9i0n4ptc97fc6s4pen3fsipcwlw2
15035
15034
2016-10-13T10:52:54Z
Pi zero
2546
rm vanilla, reorder
15035
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
01g4sca3crq2hm0f72suaw4km7zgf35
15036
15035
2016-10-13T12:19:20Z
Pi zero
2546
Protected "[[Module:TScope]]": high-impact template ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
15035
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
01g4sca3crq2hm0f72suaw4km7zgf35
15037
15036
2016-10-26T17:41:10Z
Pi zero
2546
shiftLeft
15037
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= -1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
nkztdj4tx0qndmouucbva6ch8c5hdox
15038
15037
2016-10-26T17:50:46Z
Pi zero
2546
xambox
15038
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= -1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
gy3iypg5notxt1i9focc2n66w933v69
15039
15038
2016-10-26T17:52:15Z
Pi zero
2546
x
15039
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
ege0wm0jtx6ynito7s99jidezena8ou
15040
15039
2016-10-26T17:54:50Z
Pi zero
2546
x
15040
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v > 2 then
args[ v - 2 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
p9rikaka2b4zb7coxji8vdn6uqbi696
15041
15040
2016-10-26T17:56:04Z
Pi zero
2546
Undo revision 4258628 by [[Special:Contributions/Pi zero|Pi zero]] ([[User talk:Pi zero|talk]])
15041
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
ege0wm0jtx6ynito7s99jidezena8ou
15042
15041
2016-10-26T17:56:49Z
Pi zero
2546
x
15042
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v > 2 then
args[ v - 2 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
htrtlaj3j8njydcde9zqa40bswmvawu
15043
15042
2016-10-28T18:07:07Z
Pi zero
2546
map
15043
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v > 2 then
args[ v - 2 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.map = function( frame )
local title = frame.args[1]
local displace = frame.args[2]
if displace == nil then
displace = 0
else
displace = tonumber( displace )
end
local args = {}
local data = {}
local maxv = 0
for v, k in pairs( frame:getParent().args ) do
if (type( v ) ~= "number") then
args[v] = k
elseif v <= displace then
args[v + 1] = k
else
data[v] = k
maxv = math.max( v, maxv )
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
elseif v > 2 then
args[v - 1] = k
end
end
local result = ""
for v = 1, maxv do
if data[v] ~= nil then
args[1] = data[v]
result = result .. frame:expandTemplate{ title = title, args = args }
end
end
return result
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
n3blx1g9jcetmcolf1n2fiuhyaql9nh
15044
15043
2016-11-18T19:36:43Z
Pi zero
2546
15 revisions imported from [[:n:Module:TScope]]: dialog required support
15043
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v > 2 then
args[ v - 2 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.map = function( frame )
local title = frame.args[1]
local displace = frame.args[2]
if displace == nil then
displace = 0
else
displace = tonumber( displace )
end
local args = {}
local data = {}
local maxv = 0
for v, k in pairs( frame:getParent().args ) do
if (type( v ) ~= "number") then
args[v] = k
elseif v <= displace then
args[v + 1] = k
else
data[v] = k
maxv = math.max( v, maxv )
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
elseif v > 2 then
args[v - 1] = k
end
end
local result = ""
for v = 1, maxv do
if data[v] ~= nil then
args[1] = data[v]
result = result .. frame:expandTemplate{ title = title, args = args }
end
end
return result
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
n3blx1g9jcetmcolf1n2fiuhyaql9nh
15045
11165
2026-08-01T17:29:28Z
QueerEcofeminist
1879
[[:en:Module:TScope]] पासून १६ आवर्तने आयात केलीत
11164
Scribunto
text/plain
local export = {}
export.override = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.prepend = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame.args ) do
if (type( v ) == "number") and (v ~= 1) then
args[ v - 1 ] = k
displace = math.max( displace, (v - 1) )
end
end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
args[ displace + v ] = k
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.append = function( frame )
local title = frame.args[1]
local args = {}
local displace = 0;
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
displace = math.max( displace, v )
end
args[v] = k
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ displace + v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.drop = function( frame )
local title = frame.args[1]
local args = {}
for v, k in pairs( frame:getParent().args ) do
if type( v ) ~= "number" then
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v ~= 1 then
args[ v - 1 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.shiftLeft = function( frame )
local title = frame.args[1]
local args = {}
local displace = tonumber( frame.args[2] )
if displace == nil then displace = 0 end
for v, k in pairs( frame:getParent().args ) do
if type( v ) == "number" then
if v >= displace then
args[ v - displace ] = k
end
else
args[v] = k
end
end
for v, k in pairs( frame.args ) do
if type( v ) == "number" then
if v > 2 then
args[ v - 2 ] = k
end
else
args[v] = k
end
end
return frame:expandTemplate{ title = title, args = args }
end
export.map = function( frame )
local title = frame.args[1]
local displace = frame.args[2]
if displace == nil then
displace = 0
else
displace = tonumber( displace )
end
local args = {}
local data = {}
local maxv = 0
for v, k in pairs( frame:getParent().args ) do
if (type( v ) ~= "number") then
args[v] = k
elseif v <= displace then
args[v + 1] = k
else
data[v] = k
maxv = math.max( v, maxv )
end
end
for v, k in pairs( frame.args ) do
if type( v ) ~= "number" then
args[v] = k
elseif v > 2 then
args[v - 1] = k
end
end
local result = ""
for v = 1, maxv do
if data[v] ~= nil then
args[1] = data[v]
result = result .. frame:expandTemplate{ title = title, args = args }
end
end
return result
end
export.static = function( frame )
return frame:getParent():getTitle()
end
local function tabulate( args )
local s = ''
for k, v in pairs( args ) do
s = s .. '|-\n| ' .. k .. '\n| <code>' .. v .. '</code>\n'
end
if s ~= '' then
s = '{| class="wikitable"\n|-\n! key\n! value\n' .. s .. '|}'
end
return s
end
export.echo = function( frame )
local mp = tabulate( frame.args )
local cp = tabulate( frame:getParent().args )
if mp ~= '' then
mp = 'module parameters:\n' .. mp .. '\n'
end
if cp ~= '' then
cp = 'context parameters:\n' .. cp .. '\n'
else
cp = 'no context parameters.\n'
end
return mp .. cp
end
return export
n3blx1g9jcetmcolf1n2fiuhyaql9nh
साचा:BOOKCATEGORY
10
3606
15020
2016-11-16T15:31:42Z
Pi zero
2546
create
15020
wikitext
text/x-wiki
<includeonly>{{BOOKCATEGORY/core|namespace={{ARTICLESPACE:{{{1|{{FULLPAGENAME}}}}}}}|basename={{BOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
38lhpln7ckeuvfscik69vghlb76mjx3
15021
15020
2016-11-16T17:19:59Z
Pi zero
2546
Protected "[[Template:BOOKCATEGORY]]": High-impact page: matching similar all-caps templates ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
15020
wikitext
text/x-wiki
<includeonly>{{BOOKCATEGORY/core|namespace={{ARTICLESPACE:{{{1|{{FULLPAGENAME}}}}}}}|basename={{BOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
38lhpln7ckeuvfscik69vghlb76mjx3
15022
15021
2016-12-13T20:48:44Z
Pi zero
2546
+pagename
15022
wikitext
text/x-wiki
<includeonly>{{BOOKCATEGORY/core|namespace={{ARTICLESPACE:{{{1|{{FULLPAGENAME}}}}}}}|basename={{BOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}|pagename={{PAGENAME:{{{1|{{FULLPAGENAME}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
ra876s91lm6kct2s74jocbl0aoz1wwp
15023
15022
2016-12-13T21:41:26Z
Pi zero
2546
simplify
15023
wikitext
text/x-wiki
<includeonly>{{BOOKCATEGORY/core2|{{ROOTBOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
jcjdhdu7408dvawafsj1twrg2q6vs5y
15024
15023
2016-12-13T21:46:00Z
Pi zero
2546
simplify
15024
wikitext
text/x-wiki
<includeonly>{{BOOKCATEGORY/core|{{ROOTBOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
q2jhj88vcp5uhlb1c2tqi4bvl0i0179
15025
15024
2017-04-19T02:59:31Z
Pi zero
2546
{{{book}}}
15025
wikitext
text/x-wiki
<includeonly>{{BOOKCATEGORY/core|{{{book|{{ROOTBOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
4ehhwrech9ogxsc86m2zynzsu3i0ko2
15026
15025
2017-10-26T13:47:34Z
Pi zero
2546
much less expensive, now that all the renamings have already happened
15026
wikitext
text/x-wiki
<includeonly>Category:Book:{{{book|{{ROOTBOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
2kz90j7gkyiuaexh49a7yquj1a33jbb
15027
15026
2018-01-24T02:52:43Z
Pi zero
2546
BOOKNAME (new-style)
15027
wikitext
text/x-wiki
<includeonly>Category:Book:{{{book|{{BOOKNAME|{{{1|{{FULLPAGENAME}}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
lloy4fm1jzvf8hvj4tiuynvt6q10c3o
15028
11334
2026-08-01T17:29:27Z
QueerEcofeminist
1879
[[:en:Template:BOOKCATEGORY]] पासून ८ आवर्तने आयात केलीत
11333
wikitext
text/x-wiki
<includeonly>Category:Book:{{{book|{{safesubst:<noinclude/>BOOKNAME|{{{1|{{safesubst:<noinclude/>FULLPAGENAME}}}}}}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
iwwpkbvabom52cebzb3ibkm2696erug
साचा:BookCat
10
3611
14957
2007-09-07T17:47:23Z
Whiteknight
3636
creating template that automatically adds a page to the appropriate book category
14957
wikitext
text/x-wiki
[[Category:{{BOOKNAME}}|{{#ifeq:{{BOOKNAME}}|{{PAGENAME}}|!|{{SUBPAGENAME}}}}]]
hksgns9506vn1i3tr58n3nhmol1175l
14958
14957
2007-09-07T18:02:03Z
Darklama
2894
+description and use {{FULLCHAPTERNAME}} instead of SUBPAGENAME
14958
wikitext
text/x-wiki
<includeonly>[[Category:{{BOOKNAME}}|{{#ifeq:{{BOOKNAME}}|{{PAGENAME}}| |{{{1|{{FULLCHAPTERNAME}}}}}]]</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
jjwghjjqlr7jok68yy7ekz3ncdq87r1
14959
14958
2007-11-15T11:49:17Z
IJstLrndAlotAboutStargateAtWP
3649
14959
wikitext
text/x-wiki
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD BGCOLOR=#392002>....</TD><TD BGCOLOR=#392002>....</TD><TD BGCOLOR=#3e1e02>....</TD><TD BGCOLOR=#3c1c01>....</TD><TD BGCOLOR=#381e00>....</TD><TD BGCOLOR=#391b00>....</TD><TD BGCOLOR=#3d1f03>....</TD><TD BGCOLOR=#3b1d02>....</TD><TD BGCOLOR=#3b1d02>....</TD><TD BGCOLOR=#3b1d04>....</TD><TD BGCOLOR=#371806>....</TD><TD BGCOLOR=#3a1b04>....</TD><TD BGCOLOR=#381800>....</TD><TD BGCOLOR=#3b1803>....</TD><TD BGCOLOR=#3a1705>....</TD><TD BGCOLOR=#371307>....</TD><TD BGCOLOR=#3a1f04>....</TD><TD BGCOLOR=#4b2706>....</TD><TD BGCOLOR=#51290c>....</TD><TD BGCOLOR=#6e5d3f>....</TD><TD BGCOLOR=#6a5e3e>....</TD><TD BGCOLOR=#6f5b37>....</TD><TD BGCOLOR=#745e3d>....</TD><TD BGCOLOR=#685c28>....</TD><TD BGCOLOR=#62441e>....</TD><TD BGCOLOR=#604c20>....</TD><TD BGCOLOR=#644819>....</TD><TD BGCOLOR=#634917>....</TD><TD BGCOLOR=#5f491d>....</TD><TD BGCOLOR=#5d4223>....</TD><TD BGCOLOR=#523512>....</TD><TD BGCOLOR=#5c4018>....</TD><TD BGCOLOR=#614826>....</TD><TD BGCOLOR=#624b1e>....</TD><TD BGCOLOR=#6a5425>....</TD><TD BGCOLOR=#786037>....</TD><TD BGCOLOR=#836c3e>....</TD><TD BGCOLOR=#876e3c>....</TD><TD BGCOLOR=#8e6f46>....</TD><TD BGCOLOR=#947345>....</TD><TD BGCOLOR=#937545>....</TD><TD BGCOLOR=#9c7d4f>....</TD><TD BGCOLOR=#9d7645>....</TD><TD BGCOLOR=#9c7b4f>....</TD><TD BGCOLOR=#9b7b52>....</TD><TD BGCOLOR=#927249>....</TD><TD BGCOLOR=#79592f>....</TD><TD BGCOLOR=#6c501a>....</TD><TD BGCOLOR=#685323>....</TD><TD BGCOLOR=#77612f>....</TD><TD BGCOLOR=#80622e>....</TD><TD BGCOLOR=#886637>....</TD><TD BGCOLOR=#886b34>....</TD><TD BGCOLOR=#866c37>....</TD><TD BGCOLOR=#886d3e>....</TD><TD BGCOLOR=#926f3f>....</TD><TD BGCOLOR=#986d40>....</TD><TD BGCOLOR=#997344>....</TD><TD BGCOLOR=#987545>....</TD><TD BGCOLOR=#9c7647>....</TD><TD BGCOLOR=#9f794a>....</TD><TD BGCOLOR=#a07a4b>....</TD><TD BGCOLOR=#a27c4d>....</TD><TD BGCOLOR=#a47e4f>....</TD><TD BGCOLOR=#a27c4d>....</TD><TD BGCOLOR=#a37c4d>....</TD><TD BGCOLOR=#b27a4a>....</TD><TD BGCOLOR=#bb804a>....</TD><TD BGCOLOR=#b7854b>....</TD><TD BGCOLOR=#ad874f>....</TD><TD BGCOLOR=#ab884a>....</TD><TD BGCOLOR=#b1874b>....</TD><TD BGCOLOR=#ad8447>....</TD><TD BGCOLOR=#ab884b>....</TD><TD BGCOLOR=#a9844f>....</TD><TD BGCOLOR=#a47e50>....</TD><TD BGCOLOR=#a47f4e>....</TD><TD BGCOLOR=#9d7743>....</TD><TD BGCOLOR=#997344>....</TD><TD BGCOLOR=#9d7748>....</TD><TD BGCOLOR=#a17b4c>....</TD><TD BGCOLOR=#a37e4c>....</TD><TD BGCOLOR=#ab864f>....</TD><TD BGCOLOR=#b0884d>....</TD><TD BGCOLOR=#b3894a>....</TD><TD BGCOLOR=#b78d4d>....</TD><TD BGCOLOR=#b88f4e>....</TD><TD BGCOLOR=#b99050>....</TD><TD BGCOLOR=#b88f4e>....</TD><TD BGCOLOR=#b38a52>....</TD><TD BGCOLOR=#ad8751>....</TD><TD BGCOLOR=#a88552>....</TD><TD BGCOLOR=#a48352>....</TD><TD BGCOLOR=#a18051>....</TD><TD BGCOLOR=#9d8251>....</TD><TD BGCOLOR=#9a7e4e>....</TD><TD BGCOLOR=#9d7a4a>....</TD><TD BGCOLOR=#987a42>....</TD><TD BGCOLOR=#897443>....</TD><TD BGCOLOR=#826d49>....</TD><TD BGCOLOR=#74754f>....</TD><TD BGCOLOR=#757e54>....</TD><TD BGCOLOR=#827557>....</TD><TD BGCOLOR=#776f55>....</TD><TD BGCOLOR=#747961>....</TD><TD BGCOLOR=#7d7758>....</TD><TD BGCOLOR=#7b6443>....</TD><TD BGCOLOR=#766537>....</TD><TD BGCOLOR=#6f5725>....</TD><TD BGCOLOR=#6c4e28>....</TD><TD BGCOLOR=#6d512f>....</TD><TD BGCOLOR=#725b30>....</TD><TD BGCOLOR=#766334>....</TD><TD BGCOLOR=#7a6c4a>....</TD><TD BGCOLOR=#7b6c53>....</TD><TD BGCOLOR=#7b664e>....</TD></TR>
<TR><TD BGCOLOR=#371d01 COLSPAN=2>....</TD><TD BGCOLOR=#3b1b00>....</TD><TD BGCOLOR=#3c1c00>....</TD><TD BGCOLOR=#381e01>....</TD><TD BGCOLOR=#391b00>....</TD><TD BGCOLOR=#3e2004>....</TD><TD BGCOLOR=#3a1c01 COLSPAN=2>....</TD><TD BGCOLOR=#391b02>....</TD><TD BGCOLOR=#361705>....</TD><TD BGCOLOR=#391b04>....</TD><TD BGCOLOR=#371800>....</TD><TD BGCOLOR=#391a04>....</TD><TD BGCOLOR=#381805>....</TD><TD BGCOLOR=#331306>....</TD><TD BGCOLOR=#3b1f05>....</TD><TD BGCOLOR=#4c2504>....</TD><TD BGCOLOR=#542e0f>....</TD><TD BGCOLOR=#6a5c3d>....</TD><TD BGCOLOR=#6b5e3e>....</TD><TD BGCOLOR=#6a5833>....</TD><TD BGCOLOR=#705d3a>....</TD><TD BGCOLOR=#685925>....</TD><TD BGCOLOR=#624616>....</TD><TD BGCOLOR=#604e19>....</TD><TD BGCOLOR=#634814>....</TD><TD BGCOLOR=#604813>....</TD><TD BGCOLOR=#5c4b1d>....</TD><TD BGCOLOR=#563f1f>....</TD><TD BGCOLOR=#4f3612>....</TD><TD BGCOLOR=#5b4016>....</TD><TD BGCOLOR=#694a29>....</TD><TD BGCOLOR=#63441c>....</TD><TD BGCOLOR=#6d4e28>....</TD><TD BGCOLOR=#775c36>....</TD><TD BGCOLOR=#836b3e>....</TD><TD BGCOLOR=#8d7345>....</TD><TD BGCOLOR=#8e7046>....</TD><TD BGCOLOR=#967747>....</TD><TD BGCOLOR=#947949>....</TD><TD BGCOLOR=#9b7f52>....</TD><TD BGCOLOR=#a07b4c>....</TD><TD BGCOLOR=#9e7d53>....</TD><TD BGCOLOR=#9e7e55>....</TD><TD BGCOLOR=#95754c>....</TD><TD BGCOLOR=#88693f>....</TD><TD BGCOLOR=#705220>....</TD><TD BGCOLOR=#765b2a>....</TD><TD BGCOLOR=#7d6231>....</TD><TD BGCOLOR=#876836>....</TD><TD BGCOLOR=#8c6a3c>....</TD><TD BGCOLOR=#876838>....</TD><TD BGCOLOR=#886d3c>....</TD><TD BGCOLOR=#8e7142>....</TD><TD BGCOLOR=#957041>....</TD><TD BGCOLOR=#9d7546>....</TD><TD BGCOLOR=#9b7646>....</TD><TD BGCOLOR=#9f7b4b>....</TD><TD BGCOLOR=#9e7849>....</TD><TD BGCOLOR=#a27c4d>....</TD><TD BGCOLOR=#a37d4e>....</TD><TD BGCOLOR=#a68051>....</TD><TD BGCOLOR=#a78152>....</TD><TD BGCOLOR=#a68051>....</TD><TD BGCOLOR=#a98353>....</TD><TD BGCOLOR=#af8754>....</TD><TD BGCOLOR=#b88750>....</TD><TD BGCOLOR=#b9874f>....</TD><TD BGCOLOR=#b48653>....</TD><TD BGCOLOR=#ab884a>....</TD><TD BGCOLOR=#b1874b>....</TD><TD BGCOLOR=#b2894c>....</TD><TD BGCOLOR=#ab8749>....</TD><TD BGCOLOR=#ac8750>....</TD><TD BGCOLOR=#a88251>....</TD><TD BGCOLOR=#a27d49>....</TD><TD BGCOLOR=#98733d>....</TD><TD BGCOLOR=#987243>....</TD><TD BGCOLOR=#9d7748>....</TD><TD BGCOLOR=#a37d4e>....</TD><TD BGCOLOR=#a7834c>....</TD><TD BGCOLOR=#af8d4e>....</TD><TD BGCOLOR=#b38c4e>....</TD><TD BGCOLOR=#b58b4c>....</TD><TD BGCOLOR=#b68c4e>....</TD><TD BGCOLOR=#b78d51>....</TD><TD BGCOLOR=#b78e51>....</TD><TD BGCOLOR=#b99054>....</TD><TD BGCOLOR=#b38b55>....</TD><TD BGCOLOR=#ad8653>....</TD><TD BGCOLOR=#a88555>....</TD><TD BGCOLOR=#a48254>....</TD><TD BGCOLOR=#aa8351>....</TD><TD BGCOLOR=#a68551>....</TD><TD BGCOLOR=#a3814d>....</TD><TD BGCOLOR=#a07946>....</TD><TD BGCOLOR=#9b7e4a>....</TD><TD BGCOLOR=#917a4a>....</TD><TD BGCOLOR=#886e49>....</TD><TD BGCOLOR=#7a724b>....</TD><TD BGCOLOR=#73784e>....</TD><TD BGCOLOR=#7e7b58>....</TD><TD BGCOLOR=#7b7a56>....</TD><TD BGCOLOR=#737251>....</TD><TD BGCOLOR=#746744>....</TD><TD BGCOLOR=#684f2c>....</TD><TD BGCOLOR=#6f5a2f>....</TD><TD BGCOLOR=#6b5323>....</TD><TD BGCOLOR=#6d522a>....</TD><TD BGCOLOR=#785f3d>....</TD><TD BGCOLOR=#816b48>....</TD><TD BGCOLOR=#806a44>....</TD><TD BGCOLOR=#81704f>....</TD><TD BGCOLOR=#7c6c50>....</TD><TD BGCOLOR=#796149>....</TD></TR>
<TR><TD BGCOLOR=#371e00 COLSPAN=2>....</TD><TD BGCOLOR=#3c1c01>....</TD><TD BGCOLOR=#3b1b01>....</TD><TD BGCOLOR=#391f02>....</TD><TD BGCOLOR=#381a00>....</TD><TD BGCOLOR=#3d1f03>....</TD><TD BGCOLOR=#3b1d02>....</TD><TD BGCOLOR=#391b00>....</TD><TD BGCOLOR=#391a02>....</TD><TD BGCOLOR=#361704>....</TD><TD BGCOLOR=#381a03>....</TD><TD BGCOLOR=#361900>....</TD><TD BGCOLOR=#381c05>....</TD><TD BGCOLOR=#341803>....</TD><TD BGCOLOR=#361908>....</TD><TD BGCOLOR=#3d1d04>....</TD><TD BGCOLOR=#4d2303>....</TD><TD BGCOLOR=#522d0f>....</TD><TD BGCOLOR=#665e3d>....</TD><TD BGCOLOR=#6d5d3d>....</TD><TD BGCOLOR=#675833>....</TD><TD BGCOLOR=#6f603d>....</TD><TD BGCOLOR=#685623>....</TD><TD BGCOLOR=#654914>....</TD><TD BGCOLOR=#624f1a>....</TD><TD BGCOLOR=#624617>....</TD><TD BGCOLOR=#644a1b>....</TD><TD BGCOLOR=#5e471a>....</TD><TD BGCOLOR=#5b3f21>....</TD><TD BGCOLOR=#543613>....</TD><TD BGCOLOR=#5d3f16>....</TD><TD BGCOLOR=#6c4e2a>....</TD><TD BGCOLOR=#674924>....</TD><TD BGCOLOR=#6b4b2d>....</TD><TD BGCOLOR=#715632>....</TD><TD BGCOLOR=#7e673a>....</TD><TD BGCOLOR=#876c43>....</TD><TD BGCOLOR=#96774c>....</TD><TD BGCOLOR=#917545>....</TD><TD BGCOLOR=#8e764a>....</TD><TD BGCOLOR=#9a8157>....</TD><TD BGCOLOR=#9b794c>....</TD><TD BGCOLOR=#9f7e54>....</TD><TD BGCOLOR=#9e7e55>....</TD><TD BGCOLOR=#96764d>....</TD><TD BGCOLOR=#927248>....</TD><TD BGCOLOR=#7b5e2e>....</TD><TD BGCOLOR=#795725>....</TD><TD BGCOLOR=#866532>....</TD><TD BGCOLOR=#876939>....</TD><TD BGCOLOR=#89673a>....</TD><TD BGCOLOR=#886940>....</TD><TD BGCOLOR=#8e7246>....</TD><TD BGCOLOR=#927444>....</TD><TD BGCOLOR=#997344>....</TD><TD BGCOLOR=#9b7949>....</TD><TD BGCOLOR=#9d7849>....</TD><TD BGCOLOR=#a0794a>....</TD><TD BGCOLOR=#a27c4d>....</TD><TD BGCOLOR=#a47e4f>....</TD><TD BGCOLOR=#a88253 COLSPAN=3>....</TD><TD BGCOLOR=#aa8455>....</TD><TD BGCOLOR=#ac8657>....</TD><TD BGCOLOR=#a88956>....</TD><TD BGCOLOR=#b08953>....</TD><TD BGCOLOR=#b2844f>....</TD><TD BGCOLOR=#af8353>....</TD><TD BGCOLOR=#ad894c>....</TD><TD BGCOLOR=#b3884c>....</TD><TD BGCOLOR=#b2884c>....</TD><TD BGCOLOR=#af8b4d>....</TD><TD BGCOLOR=#ab864b>....</TD><TD BGCOLOR=#a47f4a>....</TD><TD BGCOLOR=#a37e47>....</TD><TD BGCOLOR=#a07b42>....</TD><TD BGCOLOR=#997344>....</TD><TD BGCOLOR=#9d7748>....</TD><TD BGCOLOR=#a17b4c>....</TD><TD BGCOLOR=#a9864e>....</TD><TD BGCOLOR=#b39052>....</TD><TD BGCOLOR=#b68e54>....</TD><TD BGCOLOR=#b58a54>....</TD><TD BGCOLOR=#b58954>....</TD><TD BGCOLOR=#b58a56>....</TD><TD BGCOLOR=#b78c58>....</TD><TD BGCOLOR=#b98e59>....</TD><TD BGCOLOR=#b48a59>....</TD><TD BGCOLOR=#ad8557>....</TD><TD BGCOLOR=#a68256>....</TD><TD BGCOLOR=#a28055>....</TD><TD BGCOLOR=#a88251>....</TD><TD BGCOLOR=#a68653>....</TD><TD BGCOLOR=#a58451>....</TD><TD BGCOLOR=#a37c4c>....</TD><TD BGCOLOR=#9a7e4f>....</TD><TD BGCOLOR=#967c4f>....</TD><TD BGCOLOR=#997751>....</TD><TD BGCOLOR=#89734a>....</TD><TD BGCOLOR=#80754d>....</TD><TD BGCOLOR=#7c7a55>....</TD><TD BGCOLOR=#737142>....</TD><TD BGCOLOR=#6c5d33>....</TD><TD BGCOLOR=#6f5730>....</TD><TD BGCOLOR=#644b25>....</TD><TD BGCOLOR=#725a31>....</TD><TD BGCOLOR=#796133>....</TD><TD BGCOLOR=#866f44>....</TD><TD BGCOLOR=#826d49>....</TD><TD BGCOLOR=#7d6950>....</TD><TD BGCOLOR=#83694f>....</TD><TD BGCOLOR=#7f6a49>....</TD><TD BGCOLOR=#7b6746>....</TD><TD BGCOLOR=#73583e>....</TD></TR>
<TR><TD BGCOLOR=#351b00 COLSPAN=2>....</TD><TD BGCOLOR=#391900>....</TD><TD BGCOLOR=#371900>....</TD><TD BGCOLOR=#361c01>....</TD><TD BGCOLOR=#381a01>....</TD><TD BGCOLOR=#3a1c01 COLSPAN=2>....</TD><TD BGCOLOR=#371900>....</TD><TD BGCOLOR=#371a02>....</TD><TD BGCOLOR=#371905>....</TD><TD BGCOLOR=#361902>....</TD><TD BGCOLOR=#351a02>....</TD><TD BGCOLOR=#351b03>....</TD><TD BGCOLOR=#331803>....</TD><TD BGCOLOR=#341906>....</TD><TD BGCOLOR=#3f1e05>....</TD><TD BGCOLOR=#502102>....</TD><TD BGCOLOR=#563314>....</TD><TD BGCOLOR=#645f3d>....</TD><TD BGCOLOR=#6c5d3e>....</TD><TD BGCOLOR=#655734>....</TD><TD BGCOLOR=#6c623d>....</TD><TD BGCOLOR=#665120>....</TD><TD BGCOLOR=#634615>....</TD><TD BGCOLOR=#5b4718>....</TD><TD BGCOLOR=#61441a>....</TD><TD BGCOLOR=#62451d>....</TD><TD BGCOLOR=#634318>....</TD><TD BGCOLOR=#573416>....</TD><TD BGCOLOR=#57300f>....</TD><TD BGCOLOR=#5f3c14>....</TD><TD BGCOLOR=#634b25>....</TD><TD BGCOLOR=#69522c>....</TD><TD BGCOLOR=#725a3a>....</TD><TD BGCOLOR=#725a35>....</TD><TD BGCOLOR=#755d32>....</TD><TD BGCOLOR=#886d48>....</TD><TD BGCOLOR=#95774c>....</TD><TD BGCOLOR=#8b6f41>....</TD><TD BGCOLOR=#8e754b>....</TD><TD BGCOLOR=#987f57>....</TD><TD BGCOLOR=#97784c>....</TD><TD BGCOLOR=#9c794f>....</TD><TD BGCOLOR=#9b7a51>....</TD><TD BGCOLOR=#997950>....</TD><TD BGCOLOR=#8f6f46>....</TD><TD BGCOLOR=#816438>....</TD><TD BGCOLOR=#805a28>....</TD><TD BGCOLOR=#886532>....</TD><TD BGCOLOR=#856739>....</TD><TD BGCOLOR=#8a693e>....</TD><TD BGCOLOR=#906f4b>....</TD><TD BGCOLOR=#93764e>....</TD><TD BGCOLOR=#967647>....</TD><TD BGCOLOR=#9e7747>....</TD><TD BGCOLOR=#9a7b49>....</TD><TD BGCOLOR=#a17d4c>....</TD><TD BGCOLOR=#a87e50>....</TD><TD BGCOLOR=#ae8658>....</TD><TD BGCOLOR=#ad8657>....</TD><TD BGCOLOR=#ab8656>....</TD><TD BGCOLOR=#ab8655>....</TD><TD BGCOLOR=#aa8354>....</TD><TD BGCOLOR=#a88253>....</TD><TD BGCOLOR=#a78254>....</TD><TD BGCOLOR=#a88858>....</TD><TD BGCOLOR=#aa8752>....</TD><TD BGCOLOR=#ac8551>....</TD><TD BGCOLOR=#ac8958>....</TD><TD BGCOLOR=#b0894c>....</TD><TD BGCOLOR=#b3874c>....</TD><TD BGCOLOR=#b2884d>....</TD><TD BGCOLOR=#b38f51>....</TD><TD BGCOLOR=#af8c4e>....</TD><TD BGCOLOR=#b18c54>....</TD><TD BGCOLOR=#ad894e>....</TD><TD BGCOLOR=#a58147>....</TD><TD BGCOLOR=#9e7647>....</TD><TD BGCOLOR=#9e7748>....</TD><TD BGCOLOR=#a37d4d>....</TD><TD BGCOLOR=#ac8551>....</TD><TD BGCOLOR=#b9925b>....</TD><TD BGCOLOR=#ba8f5e>....</TD><TD BGCOLOR=#b78a5e>....</TD><TD BGCOLOR=#b18556>....</TD><TD BGCOLOR=#b48a58>....</TD><TD BGCOLOR=#b98e5e>....</TD><TD BGCOLOR=#b98e5f>....</TD><TD BGCOLOR=#b4895b>....</TD><TD BGCOLOR=#ae8458>....</TD><TD BGCOLOR=#a78156>....</TD><TD BGCOLOR=#a07c54>....</TD><TD BGCOLOR=#a18053>....</TD><TD BGCOLOR=#a18656>....</TD><TD BGCOLOR=#a18556>....</TD><TD BGCOLOR=#a58457>....</TD><TD BGCOLOR=#9a8053>....</TD><TD BGCOLOR=#997d52>....</TD><TD BGCOLOR=#9d7952>....</TD><TD BGCOLOR=#98774f>....</TD><TD BGCOLOR=#896f49>....</TD><TD BGCOLOR=#776e49>....</TD><TD BGCOLOR=#655c27>....</TD><TD BGCOLOR=#674e1d>....</TD><TD BGCOLOR=#6f5026>....</TD><TD BGCOLOR=#6e542b>....</TD><TD BGCOLOR=#816741>....</TD><TD BGCOLOR=#877047>....</TD><TD BGCOLOR=#836f46>....</TD><TD BGCOLOR=#84714f>....</TD><TD BGCOLOR=#7e6a55>....</TD><TD BGCOLOR=#816653>....</TD><TD BGCOLOR=#7d6646>....</TD><TD BGCOLOR=#796340>....</TD><TD BGCOLOR=#70553a>....</TD></TR>
<TR><TD BGCOLOR=#341a02 COLSPAN=2>....</TD><TD BGCOLOR=#351a02>....</TD><TD BGCOLOR=#341a01>....</TD><TD BGCOLOR=#361b03>....</TD><TD BGCOLOR=#391b03 COLSPAN=2>....</TD><TD BGCOLOR=#381a02>....</TD><TD BGCOLOR=#361902>....</TD><TD BGCOLOR=#351b03>....</TD><TD BGCOLOR=#331902>....</TD><TD BGCOLOR=#351b03>....</TD><TD BGCOLOR=#331a00>....</TD><TD BGCOLOR=#321b02>....</TD><TD BGCOLOR=#311904>....</TD><TD BGCOLOR=#361802>....</TD><TD BGCOLOR=#3e1c06>....</TD><TD BGCOLOR=#562003>....</TD><TD BGCOLOR=#533415>....</TD><TD BGCOLOR=#63613b>....</TD><TD BGCOLOR=#635f3e>....</TD><TD BGCOLOR=#66563d>....</TD><TD BGCOLOR=#696441>....</TD><TD BGCOLOR=#644b22>....</TD><TD BGCOLOR=#644818>....</TD><TD BGCOLOR=#5e461a>....</TD><TD BGCOLOR=#644614>....</TD><TD BGCOLOR=#604819>....</TD><TD BGCOLOR=#614213>....</TD><TD BGCOLOR=#583711>....</TD><TD BGCOLOR=#542f0b>....</TD><TD BGCOLOR=#5e3a13>....</TD><TD BGCOLOR=#604420>....</TD><TD BGCOLOR=#684f2c>....</TD><TD BGCOLOR=#725e31>....</TD><TD BGCOLOR=#765f36>....</TD><TD BGCOLOR=#765939>....</TD><TD BGCOLOR=#8a6d49>....</TD><TD BGCOLOR=#866a43>....</TD><TD BGCOLOR=#95754a>....</TD><TD BGCOLOR=#8e6d47>....</TD><TD BGCOLOR=#977953>....</TD><TD BGCOLOR=#957b4a>....</TD><TD BGCOLOR=#9c744c>....</TD><TD BGCOLOR=#9b7951>....</TD><TD BGCOLOR=#9a7f54>....</TD><TD BGCOLOR=#8b6f45>....</TD><TD BGCOLOR=#846942>....</TD><TD BGCOLOR=#835c37>....</TD><TD BGCOLOR=#826537>....</TD><TD BGCOLOR=#836737>....</TD><TD BGCOLOR=#8a6a41>....</TD><TD BGCOLOR=#93734b>....</TD><TD BGCOLOR=#96764d>....</TD><TD BGCOLOR=#987548>....</TD><TD BGCOLOR=#a17a47>....</TD><TD BGCOLOR=#a0804b>....</TD><TD BGCOLOR=#a88551>....</TD><TD BGCOLOR=#ac8455>....</TD><TD BGCOLOR=#b1855b>....</TD><TD BGCOLOR=#ae8557>....</TD><TD BGCOLOR=#a78853>....</TD><TD BGCOLOR=#a7854e>....</TD><TD BGCOLOR=#a7824d>....</TD><TD BGCOLOR=#a68151>....</TD><TD BGCOLOR=#a58155>....</TD><TD BGCOLOR=#a38152>....</TD><TD BGCOLOR=#a38151>....</TD><TD BGCOLOR=#ab8959>....</TD><TD BGCOLOR=#ae8b5b>....</TD><TD BGCOLOR=#b6874f>....</TD><TD BGCOLOR=#b28350>....</TD><TD BGCOLOR=#b0844e>....</TD><TD BGCOLOR=#b48d4f>....</TD><TD BGCOLOR=#ab8a4d>....</TD><TD BGCOLOR=#b1894f>....</TD><TD BGCOLOR=#a98449>....</TD><TD BGCOLOR=#a68249>....</TD><TD BGCOLOR=#a27545>....</TD><TD BGCOLOR=#a07745>....</TD><TD BGCOLOR=#a27d4a>....</TD><TD BGCOLOR=#b08352>....</TD><TD BGCOLOR=#c08c5d>....</TD><TD BGCOLOR=#bb8b5b>....</TD><TD BGCOLOR=#b88d5b>....</TD><TD BGCOLOR=#b58f57>....</TD><TD BGCOLOR=#b6915a>....</TD><TD BGCOLOR=#b79160>....</TD><TD BGCOLOR=#b89164>....</TD><TD BGCOLOR=#bd8e5f>....</TD><TD BGCOLOR=#b68759>....</TD><TD BGCOLOR=#a87c51>....</TD><TD BGCOLOR=#9e754b>....</TD><TD BGCOLOR=#9e7c4f>....</TD><TD BGCOLOR=#a08556>....</TD><TD BGCOLOR=#a28758>....</TD><TD BGCOLOR=#a38457>....</TD><TD BGCOLOR=#9c865a>....</TD><TD BGCOLOR=#987f53>....</TD><TD BGCOLOR=#997950>....</TD><TD BGCOLOR=#9a7b50>....</TD><TD BGCOLOR=#8e724a>....</TD><TD BGCOLOR=#7a623c>....</TD><TD BGCOLOR=#615018>....</TD><TD BGCOLOR=#695117>....</TD><TD BGCOLOR=#78592a>....</TD><TD BGCOLOR=#846a3d>....</TD><TD BGCOLOR=#846f50>....</TD><TD BGCOLOR=#877258>....</TD><TD BGCOLOR=#806e57>....</TD><TD BGCOLOR=#816f57>....</TD><TD BGCOLOR=#826749>....</TD><TD BGCOLOR=#7e664c>....</TD><TD BGCOLOR=#7d6540>....</TD><TD BGCOLOR=#7c6144>....</TD><TD BGCOLOR=#6d5238>....</TD></TR>
<TR><TD BGCOLOR=#331901 COLSPAN=2>....</TD><TD BGCOLOR=#361c03>....</TD><TD BGCOLOR=#341a02>....</TD><TD BGCOLOR=#351b03>....</TD><TD BGCOLOR=#381a03>....</TD><TD BGCOLOR=#3a1c05>....</TD><TD BGCOLOR=#371902>....</TD><TD BGCOLOR=#351802>....</TD><TD BGCOLOR=#361b05>....</TD><TD BGCOLOR=#341904 COLSPAN=2>....</TD><TD BGCOLOR=#331601>....</TD><TD BGCOLOR=#331904>....</TD><TD BGCOLOR=#2e1805>....</TD><TD BGCOLOR=#3a1704>....</TD><TD BGCOLOR=#401c07>....</TD><TD BGCOLOR=#541d02>....</TD><TD BGCOLOR=#563717>....</TD><TD BGCOLOR=#64623b>....</TD><TD BGCOLOR=#65613e>....</TD><TD BGCOLOR=#68593c>....</TD><TD BGCOLOR=#67623c>....</TD><TD BGCOLOR=#634a1f>....</TD><TD BGCOLOR=#624519>....</TD><TD BGCOLOR=#5d461c>....</TD><TD BGCOLOR=#634516>....</TD><TD BGCOLOR=#5f481c>....</TD><TD BGCOLOR=#5b4115>....</TD><TD BGCOLOR=#563314>....</TD><TD BGCOLOR=#4e2a0b>....</TD><TD BGCOLOR=#593813>....</TD><TD BGCOLOR=#634521>....</TD><TD BGCOLOR=#6d512f>....</TD><TD BGCOLOR=#6b5529>....</TD><TD BGCOLOR=#735a32>....</TD><TD BGCOLOR=#7b5e3e>....</TD><TD BGCOLOR=#775a36>....</TD><TD BGCOLOR=#846841>....</TD><TD BGCOLOR=#96764b>....</TD><TD BGCOLOR=#947348>....</TD><TD BGCOLOR=#997b53>....</TD><TD BGCOLOR=#967b52>....</TD><TD BGCOLOR=#90744a>....</TD><TD BGCOLOR=#947c50>....</TD><TD BGCOLOR=#91794d>....</TD><TD BGCOLOR=#8d6f45>....</TD><TD BGCOLOR=#886a43>....</TD><TD BGCOLOR=#835f3a>....</TD><TD BGCOLOR=#7f643b>....</TD><TD BGCOLOR=#87673e>....</TD><TD BGCOLOR=#907047>....</TD><TD BGCOLOR=#93734a>....</TD><TD BGCOLOR=#95754c>....</TD><TD BGCOLOR=#99784d>....</TD><TD BGCOLOR=#a07f50>....</TD><TD BGCOLOR=#a48656>....</TD><TD BGCOLOR=#ac885a>....</TD><TD BGCOLOR=#ad885e>....</TD><TD BGCOLOR=#a9845a>....</TD><TD BGCOLOR=#a78053>....</TD><TD BGCOLOR=#a58553>....</TD><TD BGCOLOR=#a1844d>....</TD><TD BGCOLOR=#a0814a>....</TD><TD BGCOLOR=#a17f4a>....</TD><TD BGCOLOR=#a88451>....</TD><TD BGCOLOR=#a58352>....</TD><TD BGCOLOR=#aa8858>....</TD><TD BGCOLOR=#ac8a5a>....</TD><TD BGCOLOR=#ad8c5b>....</TD><TD BGCOLOR=#ab8b58>....</TD><TD BGCOLOR=#a98654>....</TD><TD BGCOLOR=#aa844a>....</TD><TD BGCOLOR=#b38d4b>....</TD><TD BGCOLOR=#ac8b52>....</TD><TD BGCOLOR=#af8751>....</TD><TD BGCOLOR=#b28c55>....</TD><TD BGCOLOR=#a88550>....</TD><TD BGCOLOR=#a47b4c>....</TD><TD BGCOLOR=#9e7848>....</TD><TD BGCOLOR=#9e7b4b>....</TD><TD BGCOLOR=#ab8251>....</TD><TD BGCOLOR=#bb8d5d>....</TD><TD BGCOLOR=#b78a59>....</TD><TD BGCOLOR=#b98d5c>....</TD><TD BGCOLOR=#bc9461>....</TD><TD BGCOLOR=#b7925e>....</TD><TD BGCOLOR=#bb9663>....</TD><TD BGCOLOR=#bb9563>....</TD><TD BGCOLOR=#c29361>....</TD><TD BGCOLOR=#bf905f>....</TD><TD BGCOLOR=#ae8354>....</TD><TD BGCOLOR=#a0784b>....</TD><TD BGCOLOR=#9a784b>....</TD><TD BGCOLOR=#9a8050>....</TD><TD BGCOLOR=#9e8353>....</TD><TD BGCOLOR=#a18154>....</TD><TD BGCOLOR=#9c8357>....</TD><TD BGCOLOR=#9a8055>....</TD><TD BGCOLOR=#93784d>....</TD><TD BGCOLOR=#90794c>....</TD><TD BGCOLOR=#8b7b51>....</TD><TD BGCOLOR=#826a49>....</TD><TD BGCOLOR=#715428>....</TD><TD BGCOLOR=#775a26>....</TD><TD BGCOLOR=#876b3e>....</TD><TD BGCOLOR=#836e4a>....</TD><TD BGCOLOR=#85745b>....</TD><TD BGCOLOR=#86725c>....</TD><TD BGCOLOR=#827057>....</TD><TD BGCOLOR=#7e6c51>....</TD><TD BGCOLOR=#82674a>....</TD><TD BGCOLOR=#7d664b>....</TD><TD BGCOLOR=#7b6844>....</TD><TD BGCOLOR=#82684e>....</TD><TD BGCOLOR=#755339>....</TD></TR>
</TABLE><TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD BGCOLOR=#351b02>....</TD><TD BGCOLOR=#351b02>....</TD><TD BGCOLOR=#331900>....</TD><TD BGCOLOR=#361c03>....</TD><TD BGCOLOR=#331900>....</TD><TD BGCOLOR=#371904>....</TD><TD BGCOLOR=#391b04>....</TD><TD BGCOLOR=#391b03>....</TD><TD BGCOLOR=#351802>....</TD><TD BGCOLOR=#351a07>....</TD><TD BGCOLOR=#321705>....</TD><TD BGCOLOR=#2f1403>....</TD><TD BGCOLOR=#351303>....</TD><TD BGCOLOR=#351806>....</TD><TD BGCOLOR=#2a1405>....</TD><TD BGCOLOR=#3e1607>....</TD><TD BGCOLOR=#3f1804>....</TD><TD BGCOLOR=#531c01>....</TD><TD BGCOLOR=#593b1a>....</TD><TD BGCOLOR=#626039>....</TD><TD BGCOLOR=#63603a>....</TD><TD BGCOLOR=#685838>....</TD><TD BGCOLOR=#68633a>....</TD><TD BGCOLOR=#634a1c>....</TD><TD BGCOLOR=#65481e>....</TD><TD BGCOLOR=#5e4620>....</TD><TD BGCOLOR=#614216>....</TD><TD BGCOLOR=#5d471f>....</TD><TD BGCOLOR=#5a451e>....</TD><TD BGCOLOR=#573119>....</TD><TD BGCOLOR=#4f2b13>....</TD><TD BGCOLOR=#563918>....</TD><TD BGCOLOR=#664422>....</TD><TD BGCOLOR=#6c4c2b>....</TD><TD BGCOLOR=#6d5328>....</TD><TD BGCOLOR=#745931>....</TD><TD BGCOLOR=#7d6040>....</TD><TD BGCOLOR=#775a36>....</TD><TD BGCOLOR=#7e623b>....</TD><TD BGCOLOR=#8c6c40>....</TD><TD BGCOLOR=#997949>....</TD><TD BGCOLOR=#987a4f>....</TD><TD BGCOLOR=#977b59>....</TD><TD BGCOLOR=#916f49>....</TD><TD BGCOLOR=#92764c>....</TD><TD BGCOLOR=#8c7348>....</TD><TD BGCOLOR=#8f7147>....</TD><TD BGCOLOR=#8b6b44>....</TD><TD BGCOLOR=#82623d>....</TD><TD BGCOLOR=#7c633f>....</TD><TD BGCOLOR=#8b6747>....</TD><TD BGCOLOR=#907047>....</TD><TD BGCOLOR=#95754c>....</TD><TD BGCOLOR=#95754c>....</TD><TD BGCOLOR=#9a7c52>....</TD><TD BGCOLOR=#a0875c>....</TD><TD BGCOLOR=#a3885e>....</TD><TD BGCOLOR=#ab855e>....</TD><TD BGCOLOR=#a4815b>....</TD><TD BGCOLOR=#a1845c>....</TD><TD BGCOLOR=#a78259>....</TD><TD BGCOLOR=#a28052>....</TD><TD BGCOLOR=#998051>....</TD><TD BGCOLOR=#9c8354>....</TD><TD BGCOLOR=#a1804f>....</TD><TD BGCOLOR=#a27c4a>....</TD><TD BGCOLOR=#a58251>....</TD><TD BGCOLOR=#aa8858>....</TD><TD BGCOLOR=#ab8959>....</TD><TD BGCOLOR=#af8d5d>....</TD><TD BGCOLOR=#b08d5c>....</TD><TD BGCOLOR=#aa8657>....</TD><TD BGCOLOR=#a8834e>....</TD><TD BGCOLOR=#ae8b4e>....</TD><TD BGCOLOR=#af8d58>....</TD><TD BGCOLOR=#ad8451>....</TD><TD BGCOLOR=#ae8854>....</TD><TD BGCOLOR=#ae8c59>....</TD><TD BGCOLOR=#a47d50>....</TD><TD BGCOLOR=#9c784a>....</TD><TD BGCOLOR=#99794a>....</TD><TD BGCOLOR=#9f7e4c>....</TD><TD BGCOLOR=#b38c59>....</TD><TD BGCOLOR=#b18755>....</TD><TD BGCOLOR=#b08251>....</TD><TD BGCOLOR=#b98f60>....</TD><TD BGCOLOR=#bb9565>....</TD><TD BGCOLOR=#bb9662>....</TD><TD BGCOLOR=#bc9760>....</TD><TD BGCOLOR=#c69761>....</TD><TD BGCOLOR=#c1925e>....</TD><TD BGCOLOR=#bb905e>....</TD><TD BGCOLOR=#ab8453>....</TD><TD BGCOLOR=#9e7c4f>....</TD><TD BGCOLOR=#957a4b>....</TD><TD BGCOLOR=#997e4f>....</TD><TD BGCOLOR=#a48356>....</TD><TD BGCOLOR=#9f8057>....</TD><TD BGCOLOR=#9c8156>....</TD><TD BGCOLOR=#947c50>....</TD><TD BGCOLOR=#8b784a>....</TD><TD BGCOLOR=#897a52>....</TD><TD BGCOLOR=#876e54>....</TD><TD BGCOLOR=#7c5c3c>....</TD><TD BGCOLOR=#7f633b>....</TD><TD BGCOLOR=#856f4f>....</TD><TD BGCOLOR=#827258>....</TD><TD BGCOLOR=#80775a>....</TD><TD BGCOLOR=#817059>....</TD><TD BGCOLOR=#7c6a50>....</TD><TD BGCOLOR=#7b694a>....</TD><TD BGCOLOR=#7f6449>....</TD><TD BGCOLOR=#7c6749>....</TD><TD BGCOLOR=#766846>....</TD><TD BGCOLOR=#816851>....</TD><TD BGCOLOR=#764b31>....</TD></TR>
<TR><TD BGCOLOR=#351b02 COLSPAN=2>....</TD><TD BGCOLOR=#331900>....</TD><TD BGCOLOR=#361c03>....</TD><TD BGCOLOR=#331800>....</TD><TD BGCOLOR=#371903>....</TD><TD BGCOLOR=#361a03>....</TD><TD BGCOLOR=#381b03>....</TD><TD BGCOLOR=#341601>....</TD><TD BGCOLOR=#331804>....</TD><TD BGCOLOR=#341906>....</TD><TD BGCOLOR=#2f1404>....</TD><TD BGCOLOR=#321302>....</TD><TD BGCOLOR=#311a07>....</TD><TD BGCOLOR=#281505>....</TD><TD BGCOLOR=#3e1506>....</TD><TD BGCOLOR=#3d1503>....</TD><TD BGCOLOR=#511c02>....</TD><TD BGCOLOR=#5a3a1d>....</TD><TD BGCOLOR=#5f5e39>....</TD><TD BGCOLOR=#655f3a>....</TD><TD BGCOLOR=#665a36>....</TD><TD BGCOLOR=#666034>....</TD><TD BGCOLOR=#63491b>....</TD><TD BGCOLOR=#654a1e>....</TD><TD BGCOLOR=#624722>....</TD><TD BGCOLOR=#604118>....</TD><TD BGCOLOR=#5f4a20>....</TD><TD BGCOLOR=#58431e>....</TD><TD BGCOLOR=#552e19>....</TD><TD BGCOLOR=#4f2f18>....</TD><TD BGCOLOR=#573b1b>....</TD><TD BGCOLOR=#623f1d>....</TD><TD BGCOLOR=#6b4b2c>....</TD><TD BGCOLOR=#694b24>....</TD><TD BGCOLOR=#71552d>....</TD><TD BGCOLOR=#755935>....</TD><TD BGCOLOR=#745832>....</TD><TD BGCOLOR=#796138>....</TD><TD BGCOLOR=#806035>....</TD><TD BGCOLOR=#927242>....</TD><TD BGCOLOR=#967b4c>....</TD><TD BGCOLOR=#9c7f5a>....</TD><TD BGCOLOR=#966f4a>....</TD><TD BGCOLOR=#8d6b43>....</TD><TD BGCOLOR=#8a6f44>....</TD><TD BGCOLOR=#8c7046>....</TD><TD BGCOLOR=#8d6d48>....</TD><TD BGCOLOR=#81633e>....</TD><TD BGCOLOR=#7c603e>....</TD><TD BGCOLOR=#8b6446>....</TD><TD BGCOLOR=#927148>....</TD><TD BGCOLOR=#96764c>....</TD><TD BGCOLOR=#95754b>....</TD><TD BGCOLOR=#997f54>....</TD><TD BGCOLOR=#9e885e>....</TD><TD BGCOLOR=#a3875f>....</TD><TD BGCOLOR=#a57d59>....</TD><TD BGCOLOR=#a07e5a>....</TD><TD BGCOLOR=#a1865e>....</TD><TD BGCOLOR=#a58459>....</TD><TD BGCOLOR=#9e7e51>....</TD><TD BGCOLOR=#987d53>....</TD><TD BGCOLOR=#997d53>....</TD><TD BGCOLOR=#9b7b4d>....</TD><TD BGCOLOR=#a58052>....</TD><TD BGCOLOR=#a78654>....</TD><TD BGCOLOR=#ae8c5b>....</TD><TD BGCOLOR=#b18f5d>....</TD><TD BGCOLOR=#b08f5d>....</TD><TD BGCOLOR=#b18754>....</TD><TD BGCOLOR=#a67c4f>....</TD><TD BGCOLOR=#a07a4b>....</TD><TD BGCOLOR=#a5824e>....</TD><TD BGCOLOR=#ad8a54>....</TD><TD BGCOLOR=#ac8453>....</TD><TD BGCOLOR=#aa8451>....</TD><TD BGCOLOR=#ae8a56>....</TD><TD BGCOLOR=#a57e50>....</TD><TD BGCOLOR=#9a7748>....</TD><TD BGCOLOR=#957646>....</TD><TD BGCOLOR=#a0804e>....</TD><TD BGCOLOR=#ad8855>....</TD><TD BGCOLOR=#b18755>....</TD><TD BGCOLOR=#a97d4b>....</TD><TD BGCOLOR=#a97f51>....</TD><TD BGCOLOR=#b28b5a>....</TD><TD BGCOLOR=#b7925f>....</TD><TD BGCOLOR=#b9975f>....</TD><TD BGCOLOR=#c69960>....</TD><TD BGCOLOR=#c3965f>....</TD><TD BGCOLOR=#bb925b>....</TD><TD BGCOLOR=#af8953>....</TD><TD BGCOLOR=#a07e4f>....</TD><TD BGCOLOR=#987c4d>....</TD><TD BGCOLOR=#96794c>....</TD><TD BGCOLOR=#9e7a51>....</TD><TD BGCOLOR=#9d7d54>....</TD><TD BGCOLOR=#9d8156>....</TD><TD BGCOLOR=#998255>....</TD><TD BGCOLOR=#8a774b>....</TD><TD BGCOLOR=#877552>....</TD><TD BGCOLOR=#88735a>....</TD><TD BGCOLOR=#7a6146>....</TD><TD BGCOLOR=#82694e>....</TD><TD BGCOLOR=#877360>....</TD><TD BGCOLOR=#857560>....</TD><TD BGCOLOR=#807a59>....</TD><TD BGCOLOR=#7f6e53>....</TD><TD BGCOLOR=#7c674a>....</TD><TD BGCOLOR=#776442>....</TD><TD BGCOLOR=#81644e>....</TD><TD BGCOLOR=#7b6342>....</TD><TD BGCOLOR=#766849>....</TD><TD BGCOLOR=#796350>....</TD><TD BGCOLOR=#694125>....</TD></TR>
<TR><TD BGCOLOR=#341a01 COLSPAN=2>....</TD><TD BGCOLOR=#321800>....</TD><TD BGCOLOR=#361c03>....</TD><TD BGCOLOR=#331700>....</TD><TD BGCOLOR=#391902>....</TD><TD BGCOLOR=#341b02>....</TD><TD BGCOLOR=#371b03>....</TD><TD BGCOLOR=#361600>....</TD><TD BGCOLOR=#341a02>....</TD><TD BGCOLOR=#311601>....</TD><TD BGCOLOR=#301404>....</TD><TD BGCOLOR=#301a04>....</TD><TD BGCOLOR=#281d03>....</TD><TD BGCOLOR=#251602>....</TD><TD BGCOLOR=#3e1a07>....</TD><TD BGCOLOR=#3c1905>....</TD><TD BGCOLOR=#4c1f05>....</TD><TD BGCOLOR=#5e3e22>....</TD><TD BGCOLOR=#61603d>....</TD><TD BGCOLOR=#685c3b>....</TD><TD BGCOLOR=#605a33>....</TD><TD BGCOLOR=#685d31>....</TD><TD BGCOLOR=#63461b>....</TD><TD BGCOLOR=#61491a>....</TD><TD BGCOLOR=#62431d>....</TD><TD BGCOLOR=#60431a>....</TD><TD BGCOLOR=#604b1c>....</TD><TD BGCOLOR=#59401d>....</TD><TD BGCOLOR=#512810>....</TD><TD BGCOLOR=#4f3215>....</TD><TD BGCOLOR=#563a14>....</TD><TD BGCOLOR=#61401d>....</TD><TD BGCOLOR=#5f4325>....</TD><TD BGCOLOR=#60401e>....</TD><TD BGCOLOR=#694c24>....</TD><TD BGCOLOR=#755a33>....</TD><TD BGCOLOR=#735730>....</TD><TD BGCOLOR=#756238>....</TD><TD BGCOLOR=#7b5b34>....</TD><TD BGCOLOR=#88683d>....</TD><TD BGCOLOR=#8d7544>....</TD><TD BGCOLOR=#967948>....</TD><TD BGCOLOR=#977b4f>....</TD><TD BGCOLOR=#896e43>....</TD><TD BGCOLOR=#8a6f44>....</TD><TD BGCOLOR=#876c41>....</TD><TD BGCOLOR=#886e4b>....</TD><TD BGCOLOR=#7f613f>....</TD><TD BGCOLOR=#7e5c3a>....</TD><TD BGCOLOR=#8b6844>....</TD><TD BGCOLOR=#94744b>....</TD><TD BGCOLOR=#95764c>....</TD><TD BGCOLOR=#96794e>....</TD><TD BGCOLOR=#9a8054>....</TD><TD BGCOLOR=#9a8457>....</TD><TD BGCOLOR=#9e8056>....</TD><TD BGCOLOR=#a27c55>....</TD><TD BGCOLOR=#a5825e>....</TD><TD BGCOLOR=#a2865e>....</TD><TD BGCOLOR=#9e8453>....</TD><TD BGCOLOR=#997e50>....</TD><TD BGCOLOR=#997c4d>....</TD><TD BGCOLOR=#987a48>....</TD><TD BGCOLOR=#9e7d4b>....</TD><TD BGCOLOR=#a68152>....</TD><TD BGCOLOR=#a78753>....</TD><TD BGCOLOR=#af8e5a>....</TD><TD BGCOLOR=#b1905c>....</TD><TD BGCOLOR=#aa8a55>....</TD><TD BGCOLOR=#9f7a4a>....</TD><TD BGCOLOR=#9a7445>....</TD><TD BGCOLOR=#9d7748>....</TD><TD BGCOLOR=#a47e4d>....</TD><TD BGCOLOR=#ad8950>....</TD><TD BGCOLOR=#ad8856>....</TD><TD BGCOLOR=#a17c47>....</TD><TD BGCOLOR=#ad8950>....</TD><TD BGCOLOR=#a98451>....</TD><TD BGCOLOR=#9e7a47>....</TD><TD BGCOLOR=#9a7643>....</TD><TD BGCOLOR=#a07a4a>....</TD><TD BGCOLOR=#ab8253>....</TD><TD BGCOLOR=#b18856>....</TD><TD BGCOLOR=#ae8751>....</TD><TD BGCOLOR=#ae8252>....</TD><TD BGCOLOR=#a88049>....</TD><TD BGCOLOR=#a88553>....</TD><TD BGCOLOR=#ac8e59>....</TD><TD BGCOLOR=#b58f5c>....</TD><TD BGCOLOR=#b68e5a>....</TD><TD BGCOLOR=#b68f57>....</TD><TD BGCOLOR=#af894f>....</TD><TD BGCOLOR=#a4804f>....</TD><TD BGCOLOR=#9b7c4d>....</TD><TD BGCOLOR=#997a4e>....</TD><TD BGCOLOR=#9c774f>....</TD><TD BGCOLOR=#9d7d54>....</TD><TD BGCOLOR=#9a8055>....</TD><TD BGCOLOR=#9a8357>....</TD><TD BGCOLOR=#937c55>....</TD><TD BGCOLOR=#827051>....</TD><TD BGCOLOR=#857759>....</TD><TD BGCOLOR=#76644a>....</TD><TD BGCOLOR=#806c59>....</TD><TD BGCOLOR=#867263>....</TD><TD BGCOLOR=#87715d>....</TD><TD BGCOLOR=#7f7056>....</TD><TD BGCOLOR=#7f6a4f>....</TD><TD BGCOLOR=#796646>....</TD><TD BGCOLOR=#79694a>....</TD><TD BGCOLOR=#7c6351>....</TD><TD BGCOLOR=#755e40>....</TD><TD BGCOLOR=#74634d>....</TD><TD BGCOLOR=#725e4c>....</TD><TD BGCOLOR=#4e3317>....</TD></TR>
<TR><TD BGCOLOR=#361c03 COLSPAN=2>....</TD><TD BGCOLOR=#351b02>....</TD><TD BGCOLOR=#361c03>....</TD><TD BGCOLOR=#321700>....</TD><TD BGCOLOR=#391a03>....</TD><TD BGCOLOR=#341b02>....</TD><TD BGCOLOR=#361902>....</TD><TD BGCOLOR=#381701>....</TD><TD BGCOLOR=#351801>....</TD><TD BGCOLOR=#331502>....</TD><TD BGCOLOR=#331403>....</TD><TD BGCOLOR=#301602>....</TD><TD BGCOLOR=#291902>....</TD><TD BGCOLOR=#231402>....</TD><TD BGCOLOR=#3c1c08>....</TD><TD BGCOLOR=#3a1a06>....</TD><TD BGCOLOR=#482004>....</TD><TD BGCOLOR=#604327>....</TD><TD BGCOLOR=#685f3e>....</TD><TD BGCOLOR=#665838>....</TD><TD BGCOLOR=#5e5730>....</TD><TD BGCOLOR=#64592d>....</TD><TD BGCOLOR=#62451a>....</TD><TD BGCOLOR=#614a1c>....</TD><TD BGCOLOR=#604117>....</TD><TD BGCOLOR=#5f4217>....</TD><TD BGCOLOR=#5e491c>....</TD><TD BGCOLOR=#583c1c>....</TD><TD BGCOLOR=#562a14>....</TD><TD BGCOLOR=#563719>....</TD><TD BGCOLOR=#53350f>....</TD><TD BGCOLOR=#5b3a17>....</TD><TD BGCOLOR=#5a3f21>....</TD><TD BGCOLOR=#5d3d1c>....</TD><TD BGCOLOR=#684924>....</TD><TD BGCOLOR=#7c5c39>....</TD><TD BGCOLOR=#6f4f2d>....</TD><TD BGCOLOR=#78613b>....</TD><TD BGCOLOR=#7a5c36>....</TD><TD BGCOLOR=#87653f>....</TD><TD BGCOLOR=#8f7146>....</TD><TD BGCOLOR=#896f3f>....</TD><TD BGCOLOR=#987d51>....</TD><TD BGCOLOR=#987d52>....</TD><TD BGCOLOR=#8e7348>....</TD><TD BGCOLOR=#8d7247>....</TD><TD BGCOLOR=#826642>....</TD><TD BGCOLOR=#795c3b>....</TD><TD BGCOLOR=#76593b>....</TD><TD BGCOLOR=#876a4c>....</TD><TD BGCOLOR=#8f774e>....</TD><TD BGCOLOR=#91764e>....</TD><TD BGCOLOR=#91734c>....</TD><TD BGCOLOR=#9a7d55>....</TD><TD BGCOLOR=#977f53>....</TD><TD BGCOLOR=#9d8257>....</TD><TD BGCOLOR=#a18259>....</TD><TD BGCOLOR=#a1835b>....</TD><TD BGCOLOR=#9c8058>....</TD><TD BGCOLOR=#967b4f>....</TD><TD BGCOLOR=#94794a>....</TD><TD BGCOLOR=#917944>....</TD><TD BGCOLOR=#957b49>....</TD><TD BGCOLOR=#9d794d>....</TD><TD BGCOLOR=#a67b4c>....</TD><TD BGCOLOR=#aa8454>....</TD><TD BGCOLOR=#a88a58 COLSPAN=2>....</TD><TD BGCOLOR=#a17d4d>....</TD><TD BGCOLOR=#9a7445 COLSPAN=2>....</TD><TD BGCOLOR=#9e7849>....</TD><TD BGCOLOR=#a57f4f>....</TD><TD BGCOLOR=#ac8653>....</TD><TD BGCOLOR=#b18c58>....</TD><TD BGCOLOR=#a47f4b>....</TD><TD BGCOLOR=#9d7b48>....</TD><TD BGCOLOR=#a68a57>....</TD><TD BGCOLOR=#9d7d4c>....</TD><TD BGCOLOR=#9b7646>....</TD><TD BGCOLOR=#9c7546>....</TD><TD BGCOLOR=#a78251>....</TD><TD BGCOLOR=#b08b58>....</TD><TD BGCOLOR=#b18d56>....</TD><TD BGCOLOR=#b38956>....</TD><TD BGCOLOR=#b1894f>....</TD><TD BGCOLOR=#aa8853>....</TD><TD BGCOLOR=#a3864d>....</TD><TD BGCOLOR=#a7895a>....</TD><TD BGCOLOR=#a88559>....</TD><TD BGCOLOR=#ab8352>....</TD><TD BGCOLOR=#ae8350>....</TD><TD BGCOLOR=#a98551>....</TD><TD BGCOLOR=#9b7e4a>....</TD><TD BGCOLOR=#9b7c4d>....</TD><TD BGCOLOR=#9a754a>....</TD><TD BGCOLOR=#9a7b51>....</TD><TD BGCOLOR=#997e53>....</TD><TD BGCOLOR=#967e52>....</TD><TD BGCOLOR=#927c51>....</TD><TD BGCOLOR=#877650>....</TD><TD BGCOLOR=#7d704e>....</TD><TD BGCOLOR=#7b694f>....</TD><TD BGCOLOR=#7b6b55>....</TD><TD BGCOLOR=#80705c>....</TD><TD BGCOLOR=#836a58>....</TD><TD BGCOLOR=#7f6755>....</TD><TD BGCOLOR=#786752>....</TD><TD BGCOLOR=#746b53>....</TD><TD BGCOLOR=#746d54>....</TD><TD BGCOLOR=#72644f>....</TD><TD BGCOLOR=#6a5f4d>....</TD><TD BGCOLOR=#675846>....</TD><TD BGCOLOR=#69523d>....</TD><TD BGCOLOR=#3f230c>....</TD></TR>
<TR><TD BGCOLOR=#341a02 COLSPAN=3>....</TD><TD BGCOLOR=#361c03>....</TD><TD BGCOLOR=#321700>....</TD><TD BGCOLOR=#391903>....</TD><TD BGCOLOR=#351c03>....</TD><TD BGCOLOR=#351902>....</TD><TD BGCOLOR=#391701>....</TD><TD BGCOLOR=#391702>....</TD><TD BGCOLOR=#361401>....</TD><TD BGCOLOR=#341202>....</TD><TD BGCOLOR=#331402>....</TD><TD BGCOLOR=#2d1a03>....</TD><TD BGCOLOR=#231400>....</TD><TD BGCOLOR=#371c07>....</TD><TD BGCOLOR=#371904>....</TD><TD BGCOLOR=#442104>....</TD><TD BGCOLOR=#5f4627>....</TD><TD BGCOLOR=#69593b>....</TD><TD BGCOLOR=#675737>....</TD><TD BGCOLOR=#5d5730>....</TD><TD BGCOLOR=#63582c>....</TD><TD BGCOLOR=#614419>....</TD><TD BGCOLOR=#624920>....</TD><TD BGCOLOR=#614315>....</TD><TD BGCOLOR=#5e4114>....</TD><TD BGCOLOR=#5e481d>....</TD><TD BGCOLOR=#5b3d14>....</TD><TD BGCOLOR=#562710>....</TD><TD BGCOLOR=#58341d>....</TD><TD BGCOLOR=#553517>....</TD><TD BGCOLOR=#5d3c19>....</TD><TD BGCOLOR=#5c4022>....</TD><TD BGCOLOR=#5a3a18>....</TD><TD BGCOLOR=#63411f>....</TD><TD BGCOLOR=#684527>....</TD><TD BGCOLOR=#734f31>....</TD><TD BGCOLOR=#6d5231>....</TD><TD BGCOLOR=#7b5f3c>....</TD><TD BGCOLOR=#7e5a37>....</TD><TD BGCOLOR=#8e6c46>....</TD><TD BGCOLOR=#82693c>....</TD><TD BGCOLOR=#8c7347>....</TD><TD BGCOLOR=#93784d>....</TD><TD BGCOLOR=#92774c>....</TD><TD BGCOLOR=#886d42>....</TD><TD BGCOLOR=#846641>....</TD><TD BGCOLOR=#75593a>....</TD><TD BGCOLOR=#715940>....</TD><TD BGCOLOR=#816d54>....</TD><TD BGCOLOR=#887851>....</TD><TD BGCOLOR=#8d7751>....</TD><TD BGCOLOR=#947552>....</TD><TD BGCOLOR=#977853>....</TD><TD BGCOLOR=#967e52>....</TD><TD BGCOLOR=#9a8357>....</TD><TD BGCOLOR=#9c8558>....</TD><TD BGCOLOR=#9c8256>....</TD><TD BGCOLOR=#947850>....</TD><TD BGCOLOR=#92764e>....</TD><TD BGCOLOR=#8f7545>....</TD><TD BGCOLOR=#93783f>....</TD><TD BGCOLOR=#97784a>....</TD><TD BGCOLOR=#9c7951>....</TD><TD BGCOLOR=#a27d4a>....</TD><TD BGCOLOR=#a67d50>....</TD><TD BGCOLOR=#9f8353>....</TD><TD BGCOLOR=#9a8050>....</TD><TD BGCOLOR=#9e764a>....</TD><TD BGCOLOR=#9c7647>....</TD><TD BGCOLOR=#9d7748>....</TD><TD BGCOLOR=#a27c4d>....</TD><TD BGCOLOR=#a78153>....</TD><TD BGCOLOR=#a98355>....</TD><TD BGCOLOR=#ad8853>....</TD><TD BGCOLOR=#ab8554>....</TD><TD BGCOLOR=#9d794c>....</TD><TD BGCOLOR=#9f8152>....</TD><TD BGCOLOR=#9b7c4d>....</TD><TD BGCOLOR=#967749>....</TD><TD BGCOLOR=#987748>....</TD><TD BGCOLOR=#a2814f>....</TD><TD BGCOLOR=#aa8955>....</TD><TD BGCOLOR=#b09058>....</TD><TD BGCOLOR=#b48b56>....</TD><TD BGCOLOR=#b28a4d>....</TD><TD BGCOLOR=#ae8c53>....</TD><TD BGCOLOR=#a6894d>....</TD><TD BGCOLOR=#a6864e>....</TD><TD BGCOLOR=#a48450>....</TD><TD BGCOLOR=#a07e4f>....</TD><TD BGCOLOR=#9a774a>....</TD><TD BGCOLOR=#a17e47>....</TD><TD BGCOLOR=#9d8049>....</TD><TD BGCOLOR=#9a7c49>....</TD><TD BGCOLOR=#9a7649>....</TD><TD BGCOLOR=#97784e>....</TD><TD BGCOLOR=#987d52>....</TD><TD BGCOLOR=#967f53>....</TD><TD BGCOLOR=#917c4e>....</TD><TD BGCOLOR=#8c7c4e>....</TD><TD BGCOLOR=#7d704b>....</TD><TD BGCOLOR=#7e6d54>....</TD><TD BGCOLOR=#75654e>....</TD><TD BGCOLOR=#766a50>....</TD><TD BGCOLOR=#7b6a56>....</TD><TD BGCOLOR=#766a58>....</TD><TD BGCOLOR=#6e6253>....</TD><TD BGCOLOR=#73695d>....</TD><TD BGCOLOR=#706a5b>....</TD><TD BGCOLOR=#6e634c>....</TD><TD BGCOLOR=#695e51>....</TD><TD BGCOLOR=#63523f>....</TD><TD BGCOLOR=#47311e>....</TD><TD BGCOLOR=#230f08>....</TD></TR>
<TR><TD BGCOLOR=#331b01 COLSPAN=2>....</TD><TD BGCOLOR=#381701>....</TD><TD BGCOLOR=#391902>....</TD><TD BGCOLOR=#311800>....</TD><TD BGCOLOR=#391802>....</TD><TD BGCOLOR=#381902>....</TD><TD BGCOLOR=#381802>....</TD><TD BGCOLOR=#391601>....</TD><TD BGCOLOR=#371502>....</TD><TD BGCOLOR=#341503>....</TD><TD BGCOLOR=#361406>....</TD><TD BGCOLOR=#341604>....</TD><TD BGCOLOR=#2c1805>....</TD><TD BGCOLOR=#251101>....</TD><TD BGCOLOR=#341805>....</TD><TD BGCOLOR=#381803>....</TD><TD BGCOLOR=#431c05>....</TD><TD BGCOLOR=#61492f>....</TD><TD BGCOLOR=#675a3b>....</TD><TD BGCOLOR=#685939>....</TD><TD BGCOLOR=#605731>....</TD><TD BGCOLOR=#665c30>....</TD><TD BGCOLOR=#614319>....</TD><TD BGCOLOR=#604c1d>....</TD><TD BGCOLOR=#5d4412>....</TD><TD BGCOLOR=#5b4315>....</TD><TD BGCOLOR=#5c4921>....</TD><TD BGCOLOR=#5d4318>....</TD><TD BGCOLOR=#582e13>....</TD><TD BGCOLOR=#502c16>....</TD><TD BGCOLOR=#5c301a>....</TD><TD BGCOLOR=#5a3819>....</TD><TD BGCOLOR=#5d4223>....</TD><TD BGCOLOR=#5d3c1b>....</TD><TD BGCOLOR=#684024>....</TD><TD BGCOLOR=#63401f>....</TD><TD BGCOLOR=#6a4c2c>....</TD><TD BGCOLOR=#714e30>....</TD><TD BGCOLOR=#7d5a39>....</TD><TD BGCOLOR=#775b3a>....</TD><TD BGCOLOR=#82603e>....</TD><TD BGCOLOR=#82623a>....</TD><TD BGCOLOR=#93774b>....</TD><TD BGCOLOR=#96794e>....</TD><TD BGCOLOR=#876d42>....</TD><TD BGCOLOR=#8c764b>....</TD><TD BGCOLOR=#896744>....</TD><TD BGCOLOR=#745236>....</TD><TD BGCOLOR=#735740>....</TD><TD BGCOLOR=#7f6c56>....</TD><TD BGCOLOR=#867858>....</TD><TD BGCOLOR=#8b7551>....</TD><TD BGCOLOR=#8c714c>....</TD><TD BGCOLOR=#957a53>....</TD><TD BGCOLOR=#9b7e53>....</TD><TD BGCOLOR=#9a7d51>....</TD><TD BGCOLOR=#998054>....</TD><TD BGCOLOR=#957a4d>....</TD><TD BGCOLOR=#937348>....</TD><TD BGCOLOR=#8f7247>....</TD><TD BGCOLOR=#8e744a>....</TD><TD BGCOLOR=#917442>....</TD><TD BGCOLOR=#997645>....</TD><TD BGCOLOR=#9b7848>....</TD><TD BGCOLOR=#9d7e49>....</TD><TD BGCOLOR=#9c7a4a>....</TD><TD BGCOLOR=#987a4a>....</TD><TD BGCOLOR=#967848>....</TD><TD BGCOLOR=#987043>....</TD><TD BGCOLOR=#9d7346>....</TD><TD BGCOLOR=#a47d4c>....</TD><TD BGCOLOR=#a58151>....</TD><TD BGCOLOR=#a88659>....</TD><TD BGCOLOR=#aa885a>....</TD><TD BGCOLOR=#ad8756>....</TD><TD BGCOLOR=#a88454>....</TD><TD BGCOLOR=#a58355>....</TD><TD BGCOLOR=#9f7d51>....</TD><TD BGCOLOR=#9f8059>....</TD><TD BGCOLOR=#8f764e>....</TD><TD BGCOLOR=#96784b>....</TD><TD BGCOLOR=#a78353>....</TD><TD BGCOLOR=#b08e5c>....</TD><TD BGCOLOR=#b4945f>....</TD><TD BGCOLOR=#ba8f5d>....</TD><TD BGCOLOR=#b88e59>....</TD><TD BGCOLOR=#b48e5d>....</TD><TD BGCOLOR=#b48e59>....</TD><TD BGCOLOR=#b69157>....</TD><TD BGCOLOR=#b18c53>....</TD><TD BGCOLOR=#a98652>....</TD><TD BGCOLOR=#9e8053>....</TD><TD BGCOLOR=#9e7d41>....</TD><TD BGCOLOR=#9a7c47>....</TD><TD BGCOLOR=#96794b>....</TD><TD BGCOLOR=#95774c>....</TD><TD BGCOLOR=#8e7450>....</TD><TD BGCOLOR=#947953>....</TD><TD BGCOLOR=#987c53>....</TD><TD BGCOLOR=#9b7c53>....</TD><TD BGCOLOR=#8f754a>....</TD><TD BGCOLOR=#86724a>....</TD><TD BGCOLOR=#7d684c>....</TD><TD BGCOLOR=#72654e>....</TD><TD BGCOLOR=#71664f>....</TD><TD BGCOLOR=#706351>....</TD><TD BGCOLOR=#6c6958>....</TD><TD BGCOLOR=#6d6154>....</TD><TD BGCOLOR=#77655c>....</TD><TD BGCOLOR=#726458>....</TD><TD BGCOLOR=#6b6147>....</TD><TD BGCOLOR=#655b46>....</TD><TD BGCOLOR=#57442c>....</TD><TD BGCOLOR=#301e11>....</TD><TD BGCOLOR=#20100d>....</TD></TR>
<TR><TD BGCOLOR=#321b01 COLSPAN=2>....</TD><TD BGCOLOR=#391400>....</TD><TD BGCOLOR=#391600>....</TD><TD BGCOLOR=#331b02>....</TD><TD BGCOLOR=#381701>....</TD><TD BGCOLOR=#391801>....</TD><TD BGCOLOR=#391802>....</TD><TD BGCOLOR=#381702>....</TD><TD BGCOLOR=#331502>....</TD><TD BGCOLOR=#2e1403>....</TD><TD BGCOLOR=#2e1003>....</TD><TD BGCOLOR=#2c1303>....</TD><TD BGCOLOR=#281605>....</TD><TD BGCOLOR=#270f02>....</TD><TD BGCOLOR=#341605>....</TD><TD BGCOLOR=#3a1802>....</TD><TD BGCOLOR=#421807>....</TD><TD BGCOLOR=#644c37>....</TD><TD BGCOLOR=#645d3c>....</TD><TD BGCOLOR=#675d38>....</TD><TD BGCOLOR=#655b33>....</TD><TD BGCOLOR=#665f33>....</TD><TD BGCOLOR=#62441c>....</TD><TD BGCOLOR=#5d4c1c>....</TD><TD BGCOLOR=#5c4615>....</TD><TD BGCOLOR=#5a4418>....</TD><TD BGCOLOR=#5c4b25>....</TD><TD BGCOLOR=#5b3f1b>....</TD><TD BGCOLOR=#5b3718>....</TD><TD BGCOLOR=#442a0c>....</TD><TD BGCOLOR=#552c11>....</TD><TD BGCOLOR=#5e3d21>....</TD><TD BGCOLOR=#5c4122>....</TD><TD BGCOLOR=#5e3f1d>....</TD><TD BGCOLOR=#683e26>....</TD><TD BGCOLOR=#623b19>....</TD><TD BGCOLOR=#604221>....</TD><TD BGCOLOR=#70462a>....</TD><TD BGCOLOR=#774d2d>....</TD><TD BGCOLOR=#796543>....</TD><TD BGCOLOR=#7f5d3f>....</TD><TD BGCOLOR=#845d38>....</TD><TD BGCOLOR=#997b51>....</TD><TD BGCOLOR=#916f46>....</TD><TD BGCOLOR=#9c7d53>....</TD><TD BGCOLOR=#978256>....</TD><TD BGCOLOR=#967652>....</TD><TD BGCOLOR=#805e40>....</TD><TD BGCOLOR=#6d5239>....</TD><TD BGCOLOR=#7d6d54>....</TD><TD BGCOLOR=#86765c>....</TD><TD BGCOLOR=#826b47>....</TD><TD BGCOLOR=#8b744b>....</TD><TD BGCOLOR=#907c52>....</TD><TD BGCOLOR=#937a4f>....</TD><TD BGCOLOR=#97754d>....</TD><TD BGCOLOR=#99784f>....</TD><TD BGCOLOR=#937248>....</TD><TD BGCOLOR=#906e41>....</TD><TD BGCOLOR=#8c6f40>....</TD><TD BGCOLOR=#886d46>....</TD><TD BGCOLOR=#8c6f45>....</TD><TD BGCOLOR=#997645>....</TD><TD BGCOLOR=#9c7745>....</TD><TD BGCOLOR=#947445>....</TD><TD BGCOLOR=#937242>....</TD><TD BGCOLOR=#987746>....</TD><TD BGCOLOR=#987847>....</TD><TD BGCOLOR=#9e7d4c>....</TD><TD BGCOLOR=#a3794e>....</TD><TD BGCOLOR=#a6804d>....</TD><TD BGCOLOR=#a2804d>....</TD><TD BGCOLOR=#a48456>....</TD><TD BGCOLOR=#a78756>....</TD><TD BGCOLOR=#af8859>....</TD><TD BGCOLOR=#a98555>....</TD><TD BGCOLOR=#a68952>....</TD><TD BGCOLOR=#a3864b>....</TD><TD BGCOLOR=#a48553>....</TD><TD BGCOLOR=#a58554>....</TD><TD BGCOLOR=#af8d5b>....</TD><TD BGCOLOR=#b08b5c>....</TD><TD BGCOLOR=#b1905f>....</TD><TD BGCOLOR=#ad8f5e>....</TD><TD BGCOLOR=#b68d5b>....</TD><TD BGCOLOR=#b5885c>....</TD><TD BGCOLOR=#b58b60>....</TD><TD BGCOLOR=#ba8c5c>....</TD><TD BGCOLOR=#b68f5c>....</TD><TD BGCOLOR=#b28a54>....</TD><TD BGCOLOR=#b18b57>....</TD><TD BGCOLOR=#ae8e60>....</TD><TD BGCOLOR=#b4955a>....</TD><TD BGCOLOR=#af8e5c>....</TD><TD BGCOLOR=#ad8b5c>....</TD><TD BGCOLOR=#a48452>....</TD><TD BGCOLOR=#947d52>....</TD><TD BGCOLOR=#8c7349>....</TD><TD BGCOLOR=#93744d>....</TD><TD BGCOLOR=#9c7953>....</TD><TD BGCOLOR=#997951>....</TD><TD BGCOLOR=#8b7148>....</TD><TD BGCOLOR=#806647>....</TD><TD BGCOLOR=#6f6049>....</TD><TD BGCOLOR=#6f5f4f>....</TD><TD BGCOLOR=#6c5f51>....</TD><TD BGCOLOR=#686758>....</TD><TD BGCOLOR=#6b624f>....</TD><TD BGCOLOR=#6d604f>....</TD><TD BGCOLOR=#695f51>....</TD><TD BGCOLOR=#635e49>....</TD><TD BGCOLOR=#5a5342>....</TD><TD BGCOLOR=#392a19>....</TD><TD BGCOLOR=#1b0e09>....</TD><TD BGCOLOR=#210d08>....</TD></TR>
<TR><TD BGCOLOR=#361a02 COLSPAN=2>....</TD><TD BGCOLOR=#361500>....</TD><TD BGCOLOR=#341400>....</TD><TD BGCOLOR=#341901>....</TD><TD BGCOLOR=#351801>....</TD><TD BGCOLOR=#371a02>....</TD><TD BGCOLOR=#361901>....</TD><TD BGCOLOR=#351902>....</TD><TD BGCOLOR=#311703>....</TD><TD BGCOLOR=#311604>....</TD><TD BGCOLOR=#2e1205>....</TD><TD BGCOLOR=#2b1604>....</TD><TD BGCOLOR=#261502>....</TD><TD BGCOLOR=#270f02>....</TD><TD BGCOLOR=#351606>....</TD><TD BGCOLOR=#391902>....</TD><TD BGCOLOR=#401a08>....</TD><TD BGCOLOR=#624e38>....</TD><TD BGCOLOR=#63603d>....</TD><TD BGCOLOR=#645d33>....</TD><TD BGCOLOR=#635d31>....</TD><TD BGCOLOR=#656236>....</TD><TD BGCOLOR=#5e4420>....</TD><TD BGCOLOR=#5b4923>....</TD><TD BGCOLOR=#5c451a>....</TD><TD BGCOLOR=#5b4519>....</TD><TD BGCOLOR=#5c4a21>....</TD><TD BGCOLOR=#5f3d17>....</TD><TD BGCOLOR=#613f1c>....</TD><TD BGCOLOR=#453611>....</TD><TD BGCOLOR=#4a2f0d>....</TD><TD BGCOLOR=#5b3e21>....</TD><TD BGCOLOR=#624425>....</TD><TD BGCOLOR=#5d411e>....</TD><TD BGCOLOR=#674229>....</TD><TD BGCOLOR=#5d3516>....</TD><TD BGCOLOR=#603b20>....</TD><TD BGCOLOR=#643a22>....</TD><TD BGCOLOR=#6d4525>....</TD><TD BGCOLOR=#715d3b>....</TD><TD BGCOLOR=#795739>....</TD><TD BGCOLOR=#8c6640>....</TD><TD BGCOLOR=#8f704a>....</TD><TD BGCOLOR=#956f49>....</TD><TD BGCOLOR=#ac855c>....</TD><TD BGCOLOR=#a08153>....</TD><TD BGCOLOR=#9a7f56>....</TD><TD BGCOLOR=#8a6b49>....</TD><TD BGCOLOR=#725b3d>....</TD><TD BGCOLOR=#7d7054>....</TD><TD BGCOLOR=#847459>....</TD><TD BGCOLOR=#7c6542>....</TD><TD BGCOLOR=#8c754d>....</TD><TD BGCOLOR=#8a7a50>....</TD><TD BGCOLOR=#89784d>....</TD><TD BGCOLOR=#90714b>....</TD><TD BGCOLOR=#94714c>....</TD><TD BGCOLOR=#8f6f47>....</TD><TD BGCOLOR=#886a40>....</TD><TD BGCOLOR=#8a6a41>....</TD><TD BGCOLOR=#8c6d42>....</TD><TD BGCOLOR=#896b40>....</TD><TD BGCOLOR=#936f41>....</TD><TD BGCOLOR=#987344>....</TD><TD BGCOLOR=#9e7e52>....</TD><TD BGCOLOR=#a47f51>....</TD><TD BGCOLOR=#a78353>....</TD><TD BGCOLOR=#a28352>....</TD><TD BGCOLOR=#a08352>....</TD><TD BGCOLOR=#a47f57>....</TD><TD BGCOLOR=#b08b5a>....</TD><TD BGCOLOR=#b18c57>....</TD><TD BGCOLOR=#b79261>....</TD><TD BGCOLOR=#b69363>....</TD><TD BGCOLOR=#b98f61>....</TD><TD BGCOLOR=#b68f60>....</TD><TD BGCOLOR=#b29260>....</TD><TD BGCOLOR=#b49264>....</TD><TD BGCOLOR=#b79068>....</TD><TD BGCOLOR=#bc9165>....</TD><TD BGCOLOR=#bc9464>....</TD><TD BGCOLOR=#b79363>....</TD><TD BGCOLOR=#b69564>....</TD><TD BGCOLOR=#b99b69>....</TD><TD BGCOLOR=#c39c68>....</TD><TD BGCOLOR=#c79a6b>....</TD><TD BGCOLOR=#c89a6e>....</TD><TD BGCOLOR=#cb9f6d>....</TD><TD BGCOLOR=#c9a272>....</TD><TD BGCOLOR=#c69c6a>....</TD><TD BGCOLOR=#c09969>....</TD><TD BGCOLOR=#b29267>....</TD><TD BGCOLOR=#b39462>....</TD><TD BGCOLOR=#b79365>....</TD><TD BGCOLOR=#b8905e>....</TD><TD BGCOLOR=#ba9358>....</TD><TD BGCOLOR=#ad935d>....</TD><TD BGCOLOR=#a38958>....</TD><TD BGCOLOR=#998053>....</TD><TD BGCOLOR=#95784f>....</TD><TD BGCOLOR=#93774e>....</TD><TD BGCOLOR=#92784f>....</TD><TD BGCOLOR=#846648>....</TD><TD BGCOLOR=#6f5b44>....</TD><TD BGCOLOR=#6e5f4f>....</TD><TD BGCOLOR=#655d53>....</TD><TD BGCOLOR=#626151>....</TD><TD BGCOLOR=#66624a>....</TD><TD BGCOLOR=#5e5e49>....</TD><TD BGCOLOR=#5e5e51>....</TD><TD BGCOLOR=#5e564a>....</TD><TD BGCOLOR=#443431>....</TD><TD BGCOLOR=#24140a>....</TD><TD BGCOLOR=#1b1007>....</TD><TD BGCOLOR=#381e10>....</TD></TR>
<TR><TD BGCOLOR=#351700 COLSPAN=2>....</TD><TD BGCOLOR=#341700>....</TD><TD BGCOLOR=#331500>....</TD><TD BGCOLOR=#331600>....</TD><TD BGCOLOR=#321800>....</TD><TD BGCOLOR=#341901>....</TD><TD BGCOLOR=#331800>....</TD><TD BGCOLOR=#301901>....</TD><TD BGCOLOR=#2d1702>....</TD><TD BGCOLOR=#311504>....</TD><TD BGCOLOR=#2e1507>....</TD><TD BGCOLOR=#291803>....</TD><TD BGCOLOR=#271602>....</TD><TD BGCOLOR=#2a1104>....</TD><TD BGCOLOR=#351605>....</TD><TD BGCOLOR=#381a03>....</TD><TD BGCOLOR=#3e1b08>....</TD><TD BGCOLOR=#625139>....</TD><TD BGCOLOR=#62623e>....</TD><TD BGCOLOR=#636031>....</TD><TD BGCOLOR=#636032>....</TD><TD BGCOLOR=#66653a>....</TD><TD BGCOLOR=#5f4627>....</TD><TD BGCOLOR=#5f4c2d>....</TD><TD BGCOLOR=#5b441d>....</TD><TD BGCOLOR=#584218>....</TD><TD BGCOLOR=#59491e>....</TD><TD BGCOLOR=#5c4116>....</TD><TD BGCOLOR=#5f421a>....</TD><TD BGCOLOR=#4a3d13>....</TD><TD BGCOLOR=#452e0a>....</TD><TD BGCOLOR=#4e3617>....</TD><TD BGCOLOR=#5b3d1e>....</TD><TD BGCOLOR=#5f4622>....</TD><TD BGCOLOR=#5b4126>....</TD><TD BGCOLOR=#634325>....</TD><TD BGCOLOR=#604026>....</TD><TD BGCOLOR=#58381f>....</TD><TD BGCOLOR=#6c4727>....</TD><TD BGCOLOR=#65512f>....</TD><TD BGCOLOR=#735133>....</TD><TD BGCOLOR=#845d38>....</TD><TD BGCOLOR=#8b6a48>....</TD><TD BGCOLOR=#a77d5b>....</TD><TD BGCOLOR=#ae7f57>....</TD><TD BGCOLOR=#b38859>....</TD><TD BGCOLOR=#a38157>....</TD><TD BGCOLOR=#9b7854>....</TD><TD BGCOLOR=#816546>....</TD><TD BGCOLOR=#806f52>....</TD><TD BGCOLOR=#7d6e53>....</TD><TD BGCOLOR=#7a6340>....</TD><TD BGCOLOR=#89724a>....</TD><TD BGCOLOR=#847149>....</TD><TD BGCOLOR=#86714b>....</TD><TD BGCOLOR=#8d704d>....</TD><TD BGCOLOR=#8a704c>....</TD><TD BGCOLOR=#826b42>....</TD><TD BGCOLOR=#7f643e>....</TD><TD BGCOLOR=#84653f>....</TD><TD BGCOLOR=#906d3f>....</TD><TD BGCOLOR=#9e7f4d>....</TD><TD BGCOLOR=#ac8957>....</TD><TD BGCOLOR=#b28d59>....</TD><TD BGCOLOR=#af8f5e>....</TD><TD BGCOLOR=#ab8c5b>....</TD><TD BGCOLOR=#ab8a59>....</TD><TD BGCOLOR=#ab8959>....</TD><TD BGCOLOR=#ae8b5c>....</TD><TD BGCOLOR=#b5946f>....</TD><TD BGCOLOR=#bc9969>....</TD><TD BGCOLOR=#caa36d>....</TD><TD BGCOLOR=#cca370>....</TD><TD BGCOLOR=#cca576>....</TD><TD BGCOLOR=#d1a477>....</TD><TD BGCOLOR=#d2a87a>....</TD><TD BGCOLOR=#d0a87a>....</TD><TD BGCOLOR=#cea077>....</TD><TD BGCOLOR=#cb9e75>....</TD><TD BGCOLOR=#cda371>....</TD><TD BGCOLOR=#d3a775>....</TD><TD BGCOLOR=#d2a578>....</TD><TD BGCOLOR=#d1a77a>....</TD><TD BGCOLOR=#d1aa7b>....</TD><TD BGCOLOR=#cfa972>....</TD><TD BGCOLOR=#d4a674>....</TD><TD BGCOLOR=#d8a678>....</TD><TD BGCOLOR=#d7ae77>....</TD><TD BGCOLOR=#d0ab7b>....</TD><TD BGCOLOR=#d3aa7b>....</TD><TD BGCOLOR=#c9a175>....</TD><TD BGCOLOR=#c2a27b>....</TD><TD BGCOLOR=#bf9d73>....</TD><TD BGCOLOR=#bd9b74>....</TD><TD BGCOLOR=#b59569>....</TD><TD BGCOLOR=#b29461>....</TD><TD BGCOLOR=#b09066>....</TD><TD BGCOLOR=#af9366>....</TD><TD BGCOLOR=#aa9464>....</TD><TD BGCOLOR=#a48d5e>....</TD><TD BGCOLOR=#967e54>....</TD><TD BGCOLOR=#937950>....</TD><TD BGCOLOR=#8d6b4e>....</TD><TD BGCOLOR=#715f45>....</TD><TD BGCOLOR=#67624e>....</TD><TD BGCOLOR=#5e5952>....</TD><TD BGCOLOR=#625548>....</TD><TD BGCOLOR=#645949>....</TD><TD BGCOLOR=#5a5a4d>....</TD><TD BGCOLOR=#58584d>....</TD><TD BGCOLOR=#544337>....</TD><TD BGCOLOR=#381a16>....</TD><TD BGCOLOR=#2e1603>....</TD><TD BGCOLOR=#3f2f13>....</TD><TD BGCOLOR=#603b17>....</TD></TR>
<TR><TD BGCOLOR=#351200 COLSPAN=2>....</TD><TD BGCOLOR=#351502 COLSPAN=2>....</TD><TD BGCOLOR=#361300>....</TD><TD BGCOLOR=#331500>....</TD><TD BGCOLOR=#321902>....</TD><TD BGCOLOR=#341502>....</TD><TD BGCOLOR=#301905>....</TD><TD BGCOLOR=#281507>....</TD><TD BGCOLOR=#2f1107>....</TD><TD BGCOLOR=#2d1308>....</TD><TD BGCOLOR=#281406>....</TD><TD BGCOLOR=#2a1505>....</TD><TD BGCOLOR=#2e0e04>....</TD><TD BGCOLOR=#351604>....</TD><TD BGCOLOR=#391c05>....</TD><TD BGCOLOR=#3f1d08>....</TD><TD BGCOLOR=#62533c>....</TD><TD BGCOLOR=#61613b>....</TD><TD BGCOLOR=#705b36>....</TD><TD BGCOLOR=#6e623e>....</TD><TD BGCOLOR=#6b6640>....</TD><TD BGCOLOR=#614e27>....</TD><TD BGCOLOR=#5c4a23>....</TD><TD BGCOLOR=#5d411a>....</TD><TD BGCOLOR=#5d3e17>....</TD><TD BGCOLOR=#61451d>....</TD><TD BGCOLOR=#5a3e14>....</TD><TD BGCOLOR=#5f4717>....</TD><TD BGCOLOR=#564114>....</TD><TD BGCOLOR=#4b3410>....</TD><TD BGCOLOR=#3e3010>....</TD><TD BGCOLOR=#53391c>....</TD><TD BGCOLOR=#5d4122>....</TD><TD BGCOLOR=#5e4226>....</TD><TD BGCOLOR=#614227>....</TD><TD BGCOLOR=#603f29>....</TD><TD BGCOLOR=#5f3e29>....</TD><TD BGCOLOR=#5e3c1e>....</TD><TD BGCOLOR=#654a26>....</TD><TD BGCOLOR=#75502d>....</TD><TD BGCOLOR=#754e27>....</TD><TD BGCOLOR=#906e47>....</TD><TD BGCOLOR=#a67a54>....</TD><TD BGCOLOR=#b38359>....</TD><TD BGCOLOR=#b78c5d>....</TD><TD BGCOLOR=#ad8756>....</TD><TD BGCOLOR=#a97f54>....</TD><TD BGCOLOR=#8f6a49>....</TD><TD BGCOLOR=#846851>....</TD><TD BGCOLOR=#75624e>....</TD><TD BGCOLOR=#7b6447>....</TD><TD BGCOLOR=#826943>....</TD><TD BGCOLOR=#836b45>....</TD><TD BGCOLOR=#826f4f>....</TD><TD BGCOLOR=#84704e>....</TD><TD BGCOLOR=#795c3a>....</TD><TD BGCOLOR=#7a5c3c>....</TD><TD BGCOLOR=#8d7453>....</TD><TD BGCOLOR=#a4885f>....</TD><TD BGCOLOR=#ae915b>....</TD><TD BGCOLOR=#b5995e>....</TD><TD BGCOLOR=#b6965d>....</TD><TD BGCOLOR=#b7925e>....</TD><TD BGCOLOR=#b48c5f>....</TD><TD BGCOLOR=#ab915e>....</TD><TD BGCOLOR=#a7915d>....</TD><TD BGCOLOR=#b09562>....</TD><TD BGCOLOR=#b99465>....</TD><TD BGCOLOR=#c39c74>....</TD><TD BGCOLOR=#c9a176>....</TD><TD BGCOLOR=#d3aa7c>....</TD><TD BGCOLOR=#d8af81>....</TD><TD BGCOLOR=#dbb687>....</TD><TD BGCOLOR=#deb386>....</TD><TD BGCOLOR=#e3b287>....</TD><TD BGCOLOR=#ddaf83>....</TD><TD BGCOLOR=#d8ad7d>....</TD><TD BGCOLOR=#e0b17d>....</TD><TD BGCOLOR=#e5b881>....</TD><TD BGCOLOR=#ddb17b>....</TD><TD BGCOLOR=#dcaf83>....</TD><TD BGCOLOR=#d2a87a>....</TD><TD BGCOLOR=#caa477>....</TD><TD BGCOLOR=#d0a274>....</TD><TD BGCOLOR=#d8a278>....</TD><TD BGCOLOR=#d9a37a>....</TD><TD BGCOLOR=#d4a776>....</TD><TD BGCOLOR=#d6ad7f>....</TD><TD BGCOLOR=#d6a779>....</TD><TD BGCOLOR=#d3a475>....</TD><TD BGCOLOR=#cca775>....</TD><TD BGCOLOR=#bea27c>....</TD><TD BGCOLOR=#c19874>....</TD><TD BGCOLOR=#c0966e>....</TD><TD BGCOLOR=#b69869>....</TD><TD BGCOLOR=#ae996c>....</TD><TD BGCOLOR=#b2946e>....</TD><TD BGCOLOR=#b09369>....</TD><TD BGCOLOR=#b39868>....</TD><TD BGCOLOR=#b09367>....</TD><TD BGCOLOR=#a38862>....</TD><TD BGCOLOR=#9d7b62>....</TD><TD BGCOLOR=#836a50>....</TD><TD BGCOLOR=#635641>....</TD><TD BGCOLOR=#5e544e>....</TD><TD BGCOLOR=#5b534d>....</TD><TD BGCOLOR=#565248>....</TD><TD BGCOLOR=#525244>....</TD><TD BGCOLOR=#4d4438>....</TD><TD BGCOLOR=#3e221f>....</TD><TD BGCOLOR=#371c07>....</TD><TD BGCOLOR=#523a18>....</TD><TD BGCOLOR=#5f4923>....</TD><TD BGCOLOR=#71542a>....</TD></TR>
</TABLE><TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD BGCOLOR=#341301>....</TD><TD BGCOLOR=#341301>....</TD><TD BGCOLOR=#371402>....</TD><TD BGCOLOR=#351301>....</TD><TD BGCOLOR=#361401>....</TD><TD BGCOLOR=#341400>....</TD><TD BGCOLOR=#311903>....</TD><TD BGCOLOR=#361403>....</TD><TD BGCOLOR=#321906>....</TD><TD BGCOLOR=#2d170a>....</TD><TD BGCOLOR=#2e1208>....</TD><TD BGCOLOR=#2d1508>....</TD><TD BGCOLOR=#2c1309>....</TD><TD BGCOLOR=#2f1608>....</TD><TD BGCOLOR=#2f0f05>....</TD><TD BGCOLOR=#341703>....</TD><TD BGCOLOR=#371802>....</TD><TD BGCOLOR=#3d1c06>....</TD><TD BGCOLOR=#635742>....</TD><TD BGCOLOR=#636140>....</TD><TD BGCOLOR=#6e5838>....</TD><TD BGCOLOR=#706344>....</TD><TD BGCOLOR=#706a46>....</TD><TD BGCOLOR=#64562c>....</TD><TD BGCOLOR=#5d4f24>....</TD><TD BGCOLOR=#5b421b>....</TD><TD BGCOLOR=#5e3f19>....</TD><TD BGCOLOR=#61421d>....</TD><TD BGCOLOR=#5a3d13>....</TD><TD BGCOLOR=#5a4414>....</TD><TD BGCOLOR=#584012>....</TD><TD BGCOLOR=#513712>....</TD><TD BGCOLOR=#402c0c>....</TD><TD BGCOLOR=#502f14>....</TD><TD BGCOLOR=#613e24>....</TD><TD BGCOLOR=#5e3d22>....</TD><TD BGCOLOR=#654329>....</TD><TD BGCOLOR=#603d29>....</TD><TD BGCOLOR=#5f3c28>....</TD><TD BGCOLOR=#5e3c22>....</TD><TD BGCOLOR=#644827>....</TD><TD BGCOLOR=#6b4522>....</TD><TD BGCOLOR=#805a36>....</TD><TD BGCOLOR=#926f48>....</TD><TD BGCOLOR=#9d724c>....</TD><TD BGCOLOR=#ae8057>....</TD><TD BGCOLOR=#b3885c>....</TD><TD BGCOLOR=#b48a5b>....</TD><TD BGCOLOR=#ac8254>....</TD><TD BGCOLOR=#97734f>....</TD><TD BGCOLOR=#81684d>....</TD><TD BGCOLOR=#6e6144>....</TD><TD BGCOLOR=#776444>....</TD><TD BGCOLOR=#816544>....</TD><TD BGCOLOR=#806441>....</TD><TD BGCOLOR=#705d35>....</TD><TD BGCOLOR=#745f35>....</TD><TD BGCOLOR=#93754b>....</TD><TD BGCOLOR=#aa8a5f>....</TD><TD BGCOLOR=#ae9064>....</TD><TD BGCOLOR=#b79665>....</TD><TD BGCOLOR=#bc9864>....</TD><TD BGCOLOR=#ba9861>....</TD><TD BGCOLOR=#b79560>....</TD><TD BGCOLOR=#b79160>....</TD><TD BGCOLOR=#b88f62>....</TD><TD BGCOLOR=#b19361>....</TD><TD BGCOLOR=#ac9460>....</TD><TD BGCOLOR=#b29865>....</TD><TD BGCOLOR=#c09d6d>....</TD><TD BGCOLOR=#ca9f73>....</TD><TD BGCOLOR=#d1a67b>....</TD><TD BGCOLOR=#d6ab7f>....</TD><TD BGCOLOR=#dcb185>....</TD><TD BGCOLOR=#dfb384>....</TD><TD BGCOLOR=#e2b083>....</TD><TD BGCOLOR=#e4aa80>....</TD><TD BGCOLOR=#dba67d>....</TD><TD BGCOLOR=#cea476>....</TD><TD BGCOLOR=#d3a16e>....</TD><TD BGCOLOR=#d5a371>....</TD><TD BGCOLOR=#d2a470>....</TD><TD BGCOLOR=#d1a174>....</TD><TD BGCOLOR=#cd9b6e>....</TD><TD BGCOLOR=#ce9a70>....</TD><TD BGCOLOR=#d1976f>....</TD><TD BGCOLOR=#d39b74>....</TD><TD BGCOLOR=#d39f77>....</TD><TD BGCOLOR=#d6a578>....</TD><TD BGCOLOR=#d7ac7a>....</TD><TD BGCOLOR=#ddae7e>....</TD><TD BGCOLOR=#daab7d>....</TD><TD BGCOLOR=#d2a87b>....</TD><TD BGCOLOR=#d1ad7d>....</TD><TD BGCOLOR=#d2a378>....</TD><TD BGCOLOR=#c69c71>....</TD><TD BGCOLOR=#b89a6c>....</TD><TD BGCOLOR=#b5996a>....</TD><TD BGCOLOR=#b9946f>....</TD><TD BGCOLOR=#b48e67>....</TD><TD BGCOLOR=#b29065>....</TD><TD BGCOLOR=#b08f6c>....</TD><TD BGCOLOR=#a88d69>....</TD><TD BGCOLOR=#ad8d6c>....</TD><TD BGCOLOR=#a18463>....</TD><TD BGCOLOR=#8b765c>....</TD><TD BGCOLOR=#665648>....</TD><TD BGCOLOR=#4c4136>....</TD><TD BGCOLOR=#483a31>....</TD><TD BGCOLOR=#45392c>....</TD><TD BGCOLOR=#382b1c>....</TD><TD BGCOLOR=#381f18>....</TD><TD BGCOLOR=#503e22>....</TD><TD BGCOLOR=#584625>....</TD><TD BGCOLOR=#644c2d>....</TD><TD BGCOLOR=#806345>....</TD></TR>
<TR><TD BGCOLOR=#2f1500 COLSPAN=2>....</TD><TD BGCOLOR=#371502>....</TD><TD BGCOLOR=#351401>....</TD><TD BGCOLOR=#311501>....</TD><TD BGCOLOR=#341500>....</TD><TD BGCOLOR=#2f1601>....</TD><TD BGCOLOR=#361403>....</TD><TD BGCOLOR=#361906>....</TD><TD BGCOLOR=#2f1304>....</TD><TD BGCOLOR=#2b1506>....</TD><TD BGCOLOR=#291605>....</TD><TD BGCOLOR=#2d0e04>....</TD><TD BGCOLOR=#2e1105>....</TD><TD BGCOLOR=#280e02>....</TD><TD BGCOLOR=#321803>....</TD><TD BGCOLOR=#381600>....</TD><TD BGCOLOR=#3a1c06>....</TD><TD BGCOLOR=#625a47>....</TD><TD BGCOLOR=#666049>....</TD><TD BGCOLOR=#675f3e>....</TD><TD BGCOLOR=#6d674a>....</TD><TD BGCOLOR=#726d4c>....</TD><TD BGCOLOR=#625830>....</TD><TD BGCOLOR=#5a532a>....</TD><TD BGCOLOR=#584520>....</TD><TD BGCOLOR=#573e1b>....</TD><TD BGCOLOR=#5a411c>....</TD><TD BGCOLOR=#5a3d12>....</TD><TD BGCOLOR=#5c461a>....</TD><TD BGCOLOR=#563d11>....</TD><TD BGCOLOR=#563910>....</TD><TD BGCOLOR=#4e2f0f>....</TD><TD BGCOLOR=#4b240b>....</TD><TD BGCOLOR=#512b17>....</TD><TD BGCOLOR=#5a3821>....</TD><TD BGCOLOR=#5b391f>....</TD><TD BGCOLOR=#583520>....</TD><TD BGCOLOR=#5a3724>....</TD><TD BGCOLOR=#694832>....</TD><TD BGCOLOR=#5f452a>....</TD><TD BGCOLOR=#704c31>....</TD><TD BGCOLOR=#916d4e>....</TD><TD BGCOLOR=#8e6745>....</TD><TD BGCOLOR=#825a36>....</TD><TD BGCOLOR=#9c714b>....</TD><TD BGCOLOR=#aa7b53>....</TD><TD BGCOLOR=#ab7e56>....</TD><TD BGCOLOR=#a77e52>....</TD><TD BGCOLOR=#9a7e53>....</TD><TD BGCOLOR=#7b6a46>....</TD><TD BGCOLOR=#705d3c>....</TD><TD BGCOLOR=#705837>....</TD><TD BGCOLOR=#6d4e2c>....</TD><TD BGCOLOR=#74552f>....</TD><TD BGCOLOR=#8e7546>....</TD><TD BGCOLOR=#a68a5a>....</TD><TD BGCOLOR=#b19661>....</TD><TD BGCOLOR=#b4975f>....</TD><TD BGCOLOR=#ba9760>....</TD><TD BGCOLOR=#ba9460>....</TD><TD BGCOLOR=#bb9160>....</TD><TD BGCOLOR=#bb9366>....</TD><TD BGCOLOR=#b69063>....</TD><TD BGCOLOR=#b28d5f>....</TD><TD BGCOLOR=#b28f5e>....</TD><TD BGCOLOR=#b99062>....</TD><TD BGCOLOR=#bd9b6b>....</TD><TD BGCOLOR=#c5a674>....</TD><TD BGCOLOR=#cda879>....</TD><TD BGCOLOR=#d8aa7d>....</TD><TD BGCOLOR=#dcae81>....</TD><TD BGCOLOR=#e1b285>....</TD><TD BGCOLOR=#e6b78a>....</TD><TD BGCOLOR=#ebba8a>....</TD><TD BGCOLOR=#eeb789>....</TD><TD BGCOLOR=#f1b287>....</TD><TD BGCOLOR=#e8ad84>....</TD><TD BGCOLOR=#d8ab7e>....</TD><TD BGCOLOR=#d6a16f>....</TD><TD BGCOLOR=#ce9a68>....</TD><TD BGCOLOR=#c99764>....</TD><TD BGCOLOR=#cb9567>....</TD><TD BGCOLOR=#d89c6f>....</TD><TD BGCOLOR=#e0a177>....</TD><TD BGCOLOR=#d99972>....</TD><TD BGCOLOR=#d19c73>....</TD><TD BGCOLOR=#cfa178>....</TD><TD BGCOLOR=#deaa7e>....</TD><TD BGCOLOR=#dbac7c>....</TD><TD BGCOLOR=#d5a97a>....</TD><TD BGCOLOR=#d5a87e>....</TD><TD BGCOLOR=#d6a780>....</TD><TD BGCOLOR=#d7a570>....</TD><TD BGCOLOR=#d4a474>....</TD><TD BGCOLOR=#cba47a>....</TD><TD BGCOLOR=#c0a077>....</TD><TD BGCOLOR=#c69d70>....</TD><TD BGCOLOR=#c39d75>....</TD><TD BGCOLOR=#bf9a6e>....</TD><TD BGCOLOR=#b89269>....</TD><TD BGCOLOR=#b18e73>....</TD><TD BGCOLOR=#aa8f6c>....</TD><TD BGCOLOR=#ad8e66>....</TD><TD BGCOLOR=#aa8b66>....</TD><TD BGCOLOR=#a28866>....</TD><TD BGCOLOR=#957d5e>....</TD><TD BGCOLOR=#6d563d>....</TD><TD BGCOLOR=#422413>....</TD><TD BGCOLOR=#412715>....</TD><TD BGCOLOR=#68543c>....</TD><TD BGCOLOR=#745c3f>....</TD><TD BGCOLOR=#715b37>....</TD><TD BGCOLOR=#6d5434>....</TD><TD BGCOLOR=#705339>....</TD><TD BGCOLOR=#6c4c37>....</TD></TR>
<TR><TD BGCOLOR=#2b1700 COLSPAN=2>....</TD><TD BGCOLOR=#371502>....</TD><TD BGCOLOR=#351502>....</TD><TD BGCOLOR=#2d1701>....</TD><TD BGCOLOR=#351600>....</TD><TD BGCOLOR=#2e1500>....</TD><TD BGCOLOR=#361404>....</TD><TD BGCOLOR=#361604>....</TD><TD BGCOLOR=#321201>....</TD><TD BGCOLOR=#291603>....</TD><TD BGCOLOR=#291a05>....</TD><TD BGCOLOR=#310f05>....</TD><TD BGCOLOR=#300f04>....</TD><TD BGCOLOR=#261002>....</TD><TD BGCOLOR=#311b04>....</TD><TD BGCOLOR=#3d1901>....</TD><TD BGCOLOR=#3a1d07>....</TD><TD BGCOLOR=#615c4c>....</TD><TD BGCOLOR=#675e4e>....</TD><TD BGCOLOR=#636444>....</TD><TD BGCOLOR=#6c6b4e>....</TD><TD BGCOLOR=#746f51>....</TD><TD BGCOLOR=#655e38>....</TD><TD BGCOLOR=#5b5931>....</TD><TD BGCOLOR=#584b27>....</TD><TD BGCOLOR=#55421f>....</TD><TD BGCOLOR=#57431e>....</TD><TD BGCOLOR=#583b0e>....</TD><TD BGCOLOR=#5a431b>....</TD><TD BGCOLOR=#573d13>....</TD><TD BGCOLOR=#56390d>....</TD><TD BGCOLOR=#553612>....</TD><TD BGCOLOR=#4b270d>....</TD><TD BGCOLOR=#432310>....</TD><TD BGCOLOR=#4d301a>....</TD><TD BGCOLOR=#57351b>....</TD><TD BGCOLOR=#522f1a>....</TD><TD BGCOLOR=#56331f>....</TD><TD BGCOLOR=#5a3b27>....</TD><TD BGCOLOR=#543c25>....</TD><TD BGCOLOR=#74533c>....</TD><TD BGCOLOR=#87664b>....</TD><TD BGCOLOR=#7d5437>....</TD><TD BGCOLOR=#845e3c>....</TD><TD BGCOLOR=#8c6440>....</TD><TD BGCOLOR=#a3714d>....</TD><TD BGCOLOR=#9c6d49>....</TD><TD BGCOLOR=#966d42>....</TD><TD BGCOLOR=#887042>....</TD><TD BGCOLOR=#807149>....</TD><TD BGCOLOR=#663a25>....</TD><TD BGCOLOR=#6d4528>....</TD><TD BGCOLOR=#906f46>....</TD><TD BGCOLOR=#a6895b>....</TD><TD BGCOLOR=#af9064>....</TD><TD BGCOLOR=#b59163>....</TD><TD BGCOLOR=#b49865>....</TD><TD BGCOLOR=#b09662>....</TD><TD BGCOLOR=#b89765>....</TD><TD BGCOLOR=#ba9766>....</TD><TD BGCOLOR=#b5905e>....</TD><TD BGCOLOR=#b98e66>....</TD><TD BGCOLOR=#af855e>....</TD><TD BGCOLOR=#b59164>....</TD><TD BGCOLOR=#bc9d6a>....</TD><TD BGCOLOR=#cb9b70>....</TD><TD BGCOLOR=#cea477>....</TD><TD BGCOLOR=#cda979>....</TD><TD BGCOLOR=#d2ab7c>....</TD><TD BGCOLOR=#deae7f>....</TD><TD BGCOLOR=#dead7e>....</TD><TD BGCOLOR=#e3b282>....</TD><TD BGCOLOR=#e6b686>....</TD><TD BGCOLOR=#e9bc88>....</TD><TD BGCOLOR=#eebb89>....</TD><TD BGCOLOR=#f0b586>....</TD><TD BGCOLOR=#ebb387>....</TD><TD BGCOLOR=#e2b186>....</TD><TD BGCOLOR=#dba372>....</TD><TD BGCOLOR=#cf9968>....</TD><TD BGCOLOR=#c7905c>....</TD><TD BGCOLOR=#d19567>....</TD><TD BGCOLOR=#d09767>....</TD><TD BGCOLOR=#dca576>....</TD><TD BGCOLOR=#d89a71>....</TD><TD BGCOLOR=#c8946b>....</TD><TD BGCOLOR=#c1966c>....</TD><TD BGCOLOR=#ce996d>....</TD><TD BGCOLOR=#c7946e>....</TD><TD BGCOLOR=#bf946c>....</TD><TD BGCOLOR=#bc9368>....</TD><TD BGCOLOR=#c7956b>....</TD><TD BGCOLOR=#c89369>....</TD><TD BGCOLOR=#ca9b72>....</TD><TD BGCOLOR=#c89d79>....</TD><TD BGCOLOR=#c39875>....</TD><TD BGCOLOR=#c89d6f>....</TD><TD BGCOLOR=#c4a477>....</TD><TD BGCOLOR=#c3a575>....</TD><TD BGCOLOR=#c5a376>....</TD><TD BGCOLOR=#c3a182>....</TD><TD BGCOLOR=#b59a77>....</TD><TD BGCOLOR=#b49570>....</TD><TD BGCOLOR=#b2916d>....</TD><TD BGCOLOR=#a3865c>....</TD><TD BGCOLOR=#85663b>....</TD><TD BGCOLOR=#8a6846>....</TD><TD BGCOLOR=#9e7b5b>....</TD><TD BGCOLOR=#a98a69>....</TD><TD BGCOLOR=#ab8f68>....</TD><TD BGCOLOR=#ac8b57>....</TD><TD BGCOLOR=#a97b53>....</TD><TD BGCOLOR=#956a47>....</TD><TD BGCOLOR=#7f5c40>....</TD><TD BGCOLOR=#785942>....</TD></TR>
<TR><TD BGCOLOR=#321501 COLSPAN=2>....</TD><TD BGCOLOR=#361603>....</TD><TD BGCOLOR=#341501>....</TD><TD BGCOLOR=#351803>....</TD><TD BGCOLOR=#351600>....</TD><TD BGCOLOR=#321400>....</TD><TD BGCOLOR=#321302>....</TD><TD BGCOLOR=#331607>....</TD><TD BGCOLOR=#2d1506>....</TD><TD BGCOLOR=#2b1506>....</TD><TD BGCOLOR=#2c1506>....</TD><TD BGCOLOR=#2f0e04>....</TD><TD BGCOLOR=#2d0d04>....</TD><TD BGCOLOR=#290f05>....</TD><TD BGCOLOR=#361706>....</TD><TD BGCOLOR=#3c1b06>....</TD><TD BGCOLOR=#3b1e08>....</TD><TD BGCOLOR=#645b48>....</TD><TD BGCOLOR=#636346>....</TD><TD BGCOLOR=#675f3c>....</TD><TD BGCOLOR=#716b4a>....</TD><TD BGCOLOR=#777053>....</TD><TD BGCOLOR=#6a5d42>....</TD><TD BGCOLOR=#625c3e>....</TD><TD BGCOLOR=#5a4f2a>....</TD><TD BGCOLOR=#564520>....</TD><TD BGCOLOR=#5c4522>....</TD><TD BGCOLOR=#5c3f11>....</TD><TD BGCOLOR=#604222>....</TD><TD BGCOLOR=#5b3c16>....</TD><TD BGCOLOR=#583909>....</TD><TD BGCOLOR=#5c3914>....</TD><TD BGCOLOR=#563215>....</TD><TD BGCOLOR=#502614>....</TD><TD BGCOLOR=#4f2a19>....</TD><TD BGCOLOR=#4a2a17>....</TD><TD BGCOLOR=#4d2613>....</TD><TD BGCOLOR=#573513>....</TD><TD BGCOLOR=#543511>....</TD><TD BGCOLOR=#522d14>....</TD><TD BGCOLOR=#685035>....</TD><TD BGCOLOR=#775536>....</TD><TD BGCOLOR=#795031>....</TD><TD BGCOLOR=#825a37>....</TD><TD BGCOLOR=#8b6038>....</TD><TD BGCOLOR=#95683d>....</TD><TD BGCOLOR=#997551>....</TD><TD BGCOLOR=#a77b53>....</TD><TD BGCOLOR=#9b7d4f>....</TD><TD BGCOLOR=#936741>....</TD><TD BGCOLOR=#875730>....</TD><TD BGCOLOR=#9e805b>....</TD><TD BGCOLOR=#a78b64>....</TD><TD BGCOLOR=#ae8f61>....</TD><TD BGCOLOR=#b09361>....</TD><TD BGCOLOR=#b99464>....</TD><TD BGCOLOR=#b69866>....</TD><TD BGCOLOR=#b59666>....</TD><TD BGCOLOR=#bc926b>....</TD><TD BGCOLOR=#b58e6a>....</TD><TD BGCOLOR=#ab9264>....</TD><TD BGCOLOR=#b2905d>....</TD><TD BGCOLOR=#bb9565>....</TD><TD BGCOLOR=#bd9c70>....</TD><TD BGCOLOR=#bda079>....</TD><TD BGCOLOR=#c79872>....</TD><TD BGCOLOR=#cfa378>....</TD><TD BGCOLOR=#d3a678>....</TD><TD BGCOLOR=#dca679>....</TD><TD BGCOLOR=#d8ac81>....</TD><TD BGCOLOR=#dcac7c>....</TD><TD BGCOLOR=#daab7c>....</TD><TD BGCOLOR=#d6ac81>....</TD><TD BGCOLOR=#d0aa78>....</TD><TD BGCOLOR=#d2a577>....</TD><TD BGCOLOR=#daa87e>....</TD><TD BGCOLOR=#d8a47a>....</TD><TD BGCOLOR=#d8a775>....</TD><TD BGCOLOR=#d19a6b>....</TD><TD BGCOLOR=#c19163>....</TD><TD BGCOLOR=#b28856>....</TD><TD BGCOLOR=#b48761>....</TD><TD BGCOLOR=#c29769>....</TD><TD BGCOLOR=#c99f70>....</TD><TD BGCOLOR=#c98f67>....</TD><TD BGCOLOR=#b4825b>....</TD><TD BGCOLOR=#ad8965>....</TD><TD BGCOLOR=#b18664>....</TD><TD BGCOLOR=#ac7e62>....</TD><TD BGCOLOR=#b08966>....</TD><TD BGCOLOR=#b78f64>....</TD><TD BGCOLOR=#c69467>....</TD><TD BGCOLOR=#d29874>....</TD><TD BGCOLOR=#cf9f74>....</TD><TD BGCOLOR=#d6a57c>....</TD><TD BGCOLOR=#dea584>....</TD><TD BGCOLOR=#d2a380>....</TD><TD BGCOLOR=#ccaa81>....</TD><TD BGCOLOR=#cda37b>....</TD><TD BGCOLOR=#cda37a>....</TD><TD BGCOLOR=#d1a884>....</TD><TD BGCOLOR=#cbac8c>....</TD><TD BGCOLOR=#c1a98f>....</TD><TD BGCOLOR=#baa384>....</TD><TD BGCOLOR=#886c44>....</TD><TD BGCOLOR=#87653e>....</TD><TD BGCOLOR=#b0856a>....</TD><TD BGCOLOR=#c7a184>....</TD><TD BGCOLOR=#c59e7e>....</TD><TD BGCOLOR=#c39475>....</TD><TD BGCOLOR=#d19b79>....</TD><TD BGCOLOR=#d39779>....</TD><TD BGCOLOR=#af8761>....</TD><TD BGCOLOR=#906847>....</TD><TD BGCOLOR=#766044>....</TD></TR>
<TR><TD BGCOLOR=#321300 COLSPAN=2>....</TD><TD BGCOLOR=#341501>....</TD><TD BGCOLOR=#331400 COLSPAN=2>....</TD><TD BGCOLOR=#351600>....</TD><TD BGCOLOR=#341501>....</TD><TD BGCOLOR=#331302>....</TD><TD BGCOLOR=#2f1406>....</TD><TD BGCOLOR=#271405>....</TD><TD BGCOLOR=#2b1305>....</TD><TD BGCOLOR=#2e1206>....</TD><TD BGCOLOR=#321208>....</TD><TD BGCOLOR=#2d0c04>....</TD><TD BGCOLOR=#2d0f07>....</TD><TD BGCOLOR=#361606>....</TD><TD BGCOLOR=#3a1b07>....</TD><TD BGCOLOR=#3d1f09>....</TD><TD BGCOLOR=#675d49>....</TD><TD BGCOLOR=#606243>....</TD><TD BGCOLOR=#6b623f>....</TD><TD BGCOLOR=#736e4c>....</TD><TD BGCOLOR=#736e50>....</TD><TD BGCOLOR=#6b6045>....</TD><TD BGCOLOR=#656145>....</TD><TD BGCOLOR=#5d5433>....</TD><TD BGCOLOR=#594928>....</TD><TD BGCOLOR=#5d4725>....</TD><TD BGCOLOR=#5b3c14>....</TD><TD BGCOLOR=#5a3e1f>....</TD><TD BGCOLOR=#55411b>....</TD><TD BGCOLOR=#533e0d>....</TD><TD BGCOLOR=#5d3c0e>....</TD><TD BGCOLOR=#5c3b18>....</TD><TD BGCOLOR=#4e2410>....</TD><TD BGCOLOR=#492415>....</TD><TD BGCOLOR=#432416>....</TD><TD BGCOLOR=#482312>....</TD><TD BGCOLOR=#4a280e>....</TD><TD BGCOLOR=#583717>....</TD><TD BGCOLOR=#5f3017>....</TD><TD BGCOLOR=#634327>....</TD><TD BGCOLOR=#6c4427>....</TD><TD BGCOLOR=#683e21>....</TD><TD BGCOLOR=#7a5130>....</TD><TD BGCOLOR=#976b45>....</TD><TD BGCOLOR=#a2744a>....</TD><TD BGCOLOR=#ae7a51>....</TD><TD BGCOLOR=#b98255>....</TD><TD BGCOLOR=#b29461>....</TD><TD BGCOLOR=#a0784d>....</TD><TD BGCOLOR=#9b784a>....</TD><TD BGCOLOR=#a0865c>....</TD><TD BGCOLOR=#aa8c65>....</TD><TD BGCOLOR=#b69068>....</TD><TD BGCOLOR=#b59064>....</TD><TD BGCOLOR=#c0976d>....</TD><TD BGCOLOR=#ba956a>....</TD><TD BGCOLOR=#b08e60>....</TD><TD BGCOLOR=#b28c62>....</TD><TD BGCOLOR=#b48a67>....</TD><TD BGCOLOR=#bb956a>....</TD><TD BGCOLOR=#bb9664>....</TD><TD BGCOLOR=#c09a6a>....</TD><TD BGCOLOR=#c6a277>....</TD><TD BGCOLOR=#c7a47d>....</TD><TD BGCOLOR=#d4a175>....</TD><TD BGCOLOR=#d9a87b>....</TD><TD BGCOLOR=#d7aa7f>....</TD><TD BGCOLOR=#dcac84>....</TD><TD BGCOLOR=#dcae81>....</TD><TD BGCOLOR=#dfab7d>....</TD><TD BGCOLOR=#dca97a>....</TD><TD BGCOLOR=#d4a77a>....</TD><TD BGCOLOR=#d1a478>....</TD><TD BGCOLOR=#c99a71>....</TD><TD BGCOLOR=#c79572>....</TD><TD BGCOLOR=#c68f6a>....</TD><TD BGCOLOR=#c58b5e>....</TD><TD BGCOLOR=#be8a5d>....</TD><TD BGCOLOR=#b38b5e>....</TD><TD BGCOLOR=#b4905d>....</TD><TD BGCOLOR=#b68d64>....</TD><TD BGCOLOR=#b28a59>....</TD><TD BGCOLOR=#be9662>....</TD><TD BGCOLOR=#c08b61>....</TD><TD BGCOLOR=#b2825a>....</TD><TD BGCOLOR=#af8866>....</TD><TD BGCOLOR=#ad8161>....</TD><TD BGCOLOR=#b58466>....</TD><TD BGCOLOR=#bf916f>....</TD><TD BGCOLOR=#cb9c74>....</TD><TD BGCOLOR=#d79f77>....</TD><TD BGCOLOR=#dfa97f>....</TD><TD BGCOLOR=#dfad7c>....</TD><TD BGCOLOR=#e3b080>....</TD><TD BGCOLOR=#e6ad86>....</TD><TD BGCOLOR=#e4ad8a>....</TD><TD BGCOLOR=#dbad88>....</TD><TD BGCOLOR=#d7a683>....</TD><TD BGCOLOR=#cca37f>....</TD><TD BGCOLOR=#c4a17e>....</TD><TD BGCOLOR=#caab8c>....</TD><TD BGCOLOR=#b59b80>....</TD><TD BGCOLOR=#97755d>....</TD><TD BGCOLOR=#8b6145>....</TD><TD BGCOLOR=#b68d69>....</TD><TD BGCOLOR=#d9af8d>....</TD><TD BGCOLOR=#e2b296>....</TD><TD BGCOLOR=#dda68d>....</TD><TD BGCOLOR=#dda18a>....</TD><TD BGCOLOR=#de9b88>....</TD><TD BGCOLOR=#dd9582>....</TD><TD BGCOLOR=#c29071>....</TD><TD BGCOLOR=#a06c50>....</TD><TD BGCOLOR=#806046>....</TD></TR>
<TR><TD BGCOLOR=#331400 COLSPAN=2>....</TD><TD BGCOLOR=#351602 COLSPAN=2>....</TD><TD BGCOLOR=#331401>....</TD><TD BGCOLOR=#351700>....</TD><TD BGCOLOR=#321300>....</TD><TD BGCOLOR=#301000>....</TD><TD BGCOLOR=#2e1506>....</TD><TD BGCOLOR=#251606>....</TD><TD BGCOLOR=#2a1306>....</TD><TD BGCOLOR=#331208>....</TD><TD BGCOLOR=#300f05>....</TD><TD BGCOLOR=#2d0c04>....</TD><TD BGCOLOR=#2f0c05>....</TD><TD BGCOLOR=#321404>....</TD><TD BGCOLOR=#3b1e09>....</TD><TD BGCOLOR=#3e1f0c>....</TD><TD BGCOLOR=#635a46>....</TD><TD BGCOLOR=#616343>....</TD><TD BGCOLOR=#68623e>....</TD><TD BGCOLOR=#6f6e4b>....</TD><TD BGCOLOR=#717051>....</TD><TD BGCOLOR=#696246>....</TD><TD BGCOLOR=#666547>....</TD><TD BGCOLOR=#5d573d>....</TD><TD BGCOLOR=#5a4d31>....</TD><TD BGCOLOR=#594623>....</TD><TD BGCOLOR=#593a11>....</TD><TD BGCOLOR=#583e15>....</TD><TD BGCOLOR=#554316>....</TD><TD BGCOLOR=#533f0d>....</TD><TD BGCOLOR=#5e410f>....</TD><TD BGCOLOR=#593d11>....</TD><TD BGCOLOR=#5b3615>....</TD><TD BGCOLOR=#503019>....</TD><TD BGCOLOR=#462b16>....</TD><TD BGCOLOR=#4f2e18>....</TD><TD BGCOLOR=#40210c>....</TD><TD BGCOLOR=#4f3117>....</TD><TD BGCOLOR=#5b2910>....</TD><TD BGCOLOR=#5e391a>....</TD><TD BGCOLOR=#532d12>....</TD><TD BGCOLOR=#673d24>....</TD><TD BGCOLOR=#875d40>....</TD><TD BGCOLOR=#9f7250>....</TD><TD BGCOLOR=#b5865e>....</TD><TD BGCOLOR=#b77f53>....</TD><TD BGCOLOR=#bb8355>....</TD><TD BGCOLOR=#a28654>....</TD><TD BGCOLOR=#a28059>....</TD><TD BGCOLOR=#9f8154>....</TD><TD BGCOLOR=#a18657>....</TD><TD BGCOLOR=#b1956c>....</TD><TD BGCOLOR=#b3916d>....</TD><TD BGCOLOR=#b68f6b>....</TD><TD BGCOLOR=#b6926d>....</TD><TD BGCOLOR=#b6906c>....</TD><TD BGCOLOR=#b58c62>....</TD><TD BGCOLOR=#bd9569>....</TD><TD BGCOLOR=#be926b>....</TD><TD BGCOLOR=#cb976e>....</TD><TD BGCOLOR=#cba174>....</TD><TD BGCOLOR=#cda77b>....</TD><TD BGCOLOR=#d3aa80>....</TD><TD BGCOLOR=#d8ae85>....</TD><TD BGCOLOR=#e4b385>....</TD><TD BGCOLOR=#e3af83>....</TD><TD BGCOLOR=#e5b389>....</TD><TD BGCOLOR=#e2b68d>....</TD><TD BGCOLOR=#e7b383>....</TD><TD BGCOLOR=#eaae83>....</TD><TD BGCOLOR=#e4a97d>....</TD><TD BGCOLOR=#e3af7f>....</TD><TD BGCOLOR=#e0ab7f>....</TD><TD BGCOLOR=#d9a57b>....</TD><TD BGCOLOR=#d19f78>....</TD><TD BGCOLOR=#cc966f>....</TD><TD BGCOLOR=#cb8f66>....</TD><TD BGCOLOR=#be8f64>....</TD><TD BGCOLOR=#b88f66>....</TD><TD BGCOLOR=#b79062>....</TD><TD BGCOLOR=#bc916c>....</TD><TD BGCOLOR=#bc9365>....</TD><TD BGCOLOR=#b08758>....</TD><TD BGCOLOR=#b88a5e>....</TD><TD BGCOLOR=#a97b53>....</TD><TD BGCOLOR=#b58868>....</TD><TD BGCOLOR=#ca9a7b>....</TD><TD BGCOLOR=#d2a17f>....</TD><TD BGCOLOR=#daac89>....</TD><TD BGCOLOR=#e0b08b>....</TD><TD BGCOLOR=#e0a885>....</TD><TD BGCOLOR=#e2ae83>....</TD><TD BGCOLOR=#e6b080>....</TD><TD BGCOLOR=#e4af80>....</TD><TD BGCOLOR=#e7b288>....</TD><TD BGCOLOR=#e8ae87>....</TD><TD BGCOLOR=#e0ac87>....</TD><TD BGCOLOR=#daaa8a>....</TD><TD BGCOLOR=#c9a887>....</TD><TD BGCOLOR=#b99979>....</TD><TD BGCOLOR=#997558>....</TD><TD BGCOLOR=#92694e>....</TD><TD BGCOLOR=#b4836e>....</TD><TD BGCOLOR=#cb957d>....</TD><TD BGCOLOR=#deaa8a>....</TD><TD BGCOLOR=#eab597>....</TD><TD BGCOLOR=#edb096>....</TD><TD BGCOLOR=#f9b8a2>....</TD><TD BGCOLOR=#f4b0a1>....</TD><TD BGCOLOR=#f1aca2>....</TD><TD BGCOLOR=#e79691>....</TD><TD BGCOLOR=#cc907c>....</TD><TD BGCOLOR=#b0745c>....</TD><TD BGCOLOR=#815a40>....</TD></TR>
<TR><TD BGCOLOR=#311400 COLSPAN=2>....</TD><TD BGCOLOR=#341602>....</TD><TD BGCOLOR=#351602>....</TD><TD BGCOLOR=#331401>....</TD><TD BGCOLOR=#351600>....</TD><TD BGCOLOR=#321300>....</TD><TD BGCOLOR=#311201>....</TD><TD BGCOLOR=#2d1506>....</TD><TD BGCOLOR=#231706>....</TD><TD BGCOLOR=#2b1306>....</TD><TD BGCOLOR=#351108>....</TD><TD BGCOLOR=#2c0c03>....</TD><TD BGCOLOR=#2d0d05>....</TD><TD BGCOLOR=#310b06>....</TD><TD BGCOLOR=#361707>....</TD><TD BGCOLOR=#371a05>....</TD><TD BGCOLOR=#43250f>....</TD><TD BGCOLOR=#625946>....</TD><TD BGCOLOR=#656646>....</TD><TD BGCOLOR=#66623d>....</TD><TD BGCOLOR=#6e714d>....</TD><TD BGCOLOR=#6f7051>....</TD><TD BGCOLOR=#6c674a>....</TD><TD BGCOLOR=#696a4c>....</TD><TD BGCOLOR=#615c45>....</TD><TD BGCOLOR=#5d533a>....</TD><TD BGCOLOR=#5b4b27>....</TD><TD BGCOLOR=#5c4010>....</TD><TD BGCOLOR=#5e410f>....</TD><TD BGCOLOR=#5d400e>....</TD><TD BGCOLOR=#5a3c0c>....</TD><TD BGCOLOR=#5c4012>....</TD><TD BGCOLOR=#574010>....</TD><TD BGCOLOR=#5f3f0f>....</TD><TD BGCOLOR=#462a07>....</TD><TD BGCOLOR=#3f2909>....</TD><TD BGCOLOR=#412606>....</TD><TD BGCOLOR=#41260d>....</TD><TD BGCOLOR=#3f280f>....</TD><TD BGCOLOR=#562a0e>....</TD><TD BGCOLOR=#5b3a18>....</TD><TD BGCOLOR=#5d3e22>....</TD><TD BGCOLOR=#7f5840>....</TD><TD BGCOLOR=#896044>....</TD><TD BGCOLOR=#936645>....</TD><TD BGCOLOR=#9e704a>....</TD><TD BGCOLOR=#b18156>....</TD><TD BGCOLOR=#af7e54>....</TD><TD BGCOLOR=#876e44>....</TD><TD BGCOLOR=#866547>....</TD><TD BGCOLOR=#947349>....</TD><TD BGCOLOR=#9a7e4d>....</TD><TD BGCOLOR=#927c50>....</TD><TD BGCOLOR=#917855>....</TD><TD BGCOLOR=#957251>....</TD><TD BGCOLOR=#b19471>....</TD><TD BGCOLOR=#ae8d6b>....</TD><TD BGCOLOR=#b78a62>....</TD><TD BGCOLOR=#c09065>....</TD><TD BGCOLOR=#c99d74>....</TD><TD BGCOLOR=#d8a379>....</TD><TD BGCOLOR=#d2a77d>....</TD><TD BGCOLOR=#d2ae84>....</TD><TD BGCOLOR=#ddb086>....</TD><TD BGCOLOR=#e4b389>....</TD><TD BGCOLOR=#e3b78e>....</TD><TD BGCOLOR=#edb892>....</TD><TD BGCOLOR=#efb78e>....</TD><TD BGCOLOR=#ebb98a>....</TD><TD BGCOLOR=#f1ba87>....</TD><TD BGCOLOR=#f6b78e>....</TD><TD BGCOLOR=#fabe93>....</TD><TD BGCOLOR=#f4bc89>....</TD><TD BGCOLOR=#f5bb88>....</TD><TD BGCOLOR=#efb787>....</TD><TD BGCOLOR=#e4b283>....</TD><TD BGCOLOR=#e0ab7f>....</TD><TD BGCOLOR=#d8a177>....</TD><TD BGCOLOR=#cfa278>....</TD><TD BGCOLOR=#c59570>....</TD><TD BGCOLOR=#c1916b>....</TD><TD BGCOLOR=#b98c6f>....</TD><TD BGCOLOR=#b78b66>....</TD><TD BGCOLOR=#b98f69>....</TD><TD BGCOLOR=#b68c63>....</TD><TD BGCOLOR=#ba8c65>....</TD><TD BGCOLOR=#c08e70>....</TD><TD BGCOLOR=#c69576>....</TD><TD BGCOLOR=#c39973>....</TD><TD BGCOLOR=#c39d74>....</TD><TD BGCOLOR=#c29975>....</TD><TD BGCOLOR=#c89776>....</TD><TD BGCOLOR=#cd9d77>....</TD><TD BGCOLOR=#d8a179>....</TD><TD BGCOLOR=#d69f78>....</TD><TD BGCOLOR=#d4a27c>....</TD><TD BGCOLOR=#daa57a>....</TD><TD BGCOLOR=#d6a57e>....</TD><TD BGCOLOR=#bb9271>....</TD><TD BGCOLOR=#a18667>....</TD><TD BGCOLOR=#a98165>....</TD><TD BGCOLOR=#c39278>....</TD><TD BGCOLOR=#d39980>....</TD><TD BGCOLOR=#d9a187>....</TD><TD BGCOLOR=#e7b394>....</TD><TD BGCOLOR=#edb194>....</TD><TD BGCOLOR=#f7b6a3>....</TD><TD BGCOLOR=#f9b7a2>....</TD><TD BGCOLOR=#f0ac97>....</TD><TD BGCOLOR=#df9b8e>....</TD><TD BGCOLOR=#f2b1ab>....</TD><TD BGCOLOR=#f0a2a2>....</TD><TD BGCOLOR=#d5998a>....</TD><TD BGCOLOR=#bb816a>....</TD><TD BGCOLOR=#845e42>....</TD></TR>
<TR><TD BGCOLOR=#241802 COLSPAN=2>....</TD><TD BGCOLOR=#2e1604>....</TD><TD BGCOLOR=#311103>....</TD><TD BGCOLOR=#331304>....</TD><TD BGCOLOR=#301101>....</TD><TD BGCOLOR=#331304 COLSPAN=2>....</TD><TD BGCOLOR=#2f1304>....</TD><TD BGCOLOR=#241605>....</TD><TD BGCOLOR=#2f1307>....</TD><TD BGCOLOR=#341207>....</TD><TD BGCOLOR=#2b1106>....</TD><TD BGCOLOR=#300e07>....</TD><TD BGCOLOR=#321407>....</TD><TD BGCOLOR=#360f03>....</TD><TD BGCOLOR=#401905>....</TD><TD BGCOLOR=#442914>....</TD><TD BGCOLOR=#5d5b49>....</TD><TD BGCOLOR=#666442>....</TD><TD BGCOLOR=#6b6241>....</TD><TD BGCOLOR=#6e7657>....</TD><TD BGCOLOR=#736c53>....</TD><TD BGCOLOR=#696546>....</TD><TD BGCOLOR=#706749>....</TD><TD BGCOLOR=#695f41>....</TD><TD BGCOLOR=#62573a>....</TD><TD BGCOLOR=#605231>....</TD><TD BGCOLOR=#5c4419>....</TD><TD BGCOLOR=#574114>....</TD><TD BGCOLOR=#5a3e0c>....</TD><TD BGCOLOR=#5c3601>....</TD><TD BGCOLOR=#5b3b0d>....</TD><TD BGCOLOR=#524213>....</TD><TD BGCOLOR=#5a3d0e>....</TD><TD BGCOLOR=#5c330c>....</TD><TD BGCOLOR=#462d0f>....</TD><TD BGCOLOR=#403619>....</TD><TD BGCOLOR=#372808>....</TD><TD BGCOLOR=#412811>....</TD><TD BGCOLOR=#5d2f15>....</TD><TD BGCOLOR=#5f3a26>....</TD><TD BGCOLOR=#603e20>....</TD><TD BGCOLOR=#80603e>....</TD><TD BGCOLOR=#866340>....</TD><TD BGCOLOR=#885c38>....</TD><TD BGCOLOR=#9a6743>....</TD><TD BGCOLOR=#ad7b53>....</TD><TD BGCOLOR=#a0704a>....</TD><TD BGCOLOR=#8a6741>....</TD><TD BGCOLOR=#876e46>....</TD><TD BGCOLOR=#8b6640>....</TD><TD BGCOLOR=#876c3f>....</TD><TD BGCOLOR=#6d532b>....</TD><TD BGCOLOR=#816041>....</TD><TD BGCOLOR=#7a522f>....</TD><TD BGCOLOR=#9f734e>....</TD><TD BGCOLOR=#b28e62>....</TD><TD BGCOLOR=#c8a273>....</TD><TD BGCOLOR=#c5956d>....</TD><TD BGCOLOR=#bd8c6a>....</TD><TD BGCOLOR=#c29269>....</TD><TD BGCOLOR=#daaf8b>....</TD><TD BGCOLOR=#d8ba90>....</TD><TD BGCOLOR=#e6b388>....</TD><TD BGCOLOR=#ebb58d>....</TD><TD BGCOLOR=#edb395>....</TD><TD BGCOLOR=#f5b19c>....</TD><TD BGCOLOR=#f3b89c>....</TD><TD BGCOLOR=#fcc09d>....</TD><TD BGCOLOR=#f8c6a3>....</TD><TD BGCOLOR=#fbc8a1>....</TD><TD BGCOLOR=#fec6a3>....</TD><TD BGCOLOR=#fac1a1>....</TD><TD BGCOLOR=#fdc491>....</TD><TD BGCOLOR=#fcb88e>....</TD><TD BGCOLOR=#f9b590>....</TD><TD BGCOLOR=#f0ae89>....</TD><TD BGCOLOR=#e2a473>....</TD><TD BGCOLOR=#d6a26f>....</TD><TD BGCOLOR=#ce9a72>....</TD><TD BGCOLOR=#c8956e>....</TD><TD BGCOLOR=#c49366>....</TD><TD BGCOLOR=#c28c66>....</TD><TD BGCOLOR=#ba8966>....</TD><TD BGCOLOR=#b8876a>....</TD><TD BGCOLOR=#b78368>....</TD><TD BGCOLOR=#ba866a>....</TD><TD BGCOLOR=#c08c6e>....</TD><TD BGCOLOR=#b58e76>....</TD><TD BGCOLOR=#b18d68>....</TD><TD BGCOLOR=#ac866f>....</TD><TD BGCOLOR=#ac8966>....</TD><TD BGCOLOR=#b18e62>....</TD><TD BGCOLOR=#ab8965>....</TD><TD BGCOLOR=#b18b6d>....</TD><TD BGCOLOR=#c09173>....</TD><TD BGCOLOR=#c58f6e>....</TD><TD BGCOLOR=#b3805b>....</TD><TD BGCOLOR=#b28061>....</TD><TD BGCOLOR=#bc8b6f>....</TD><TD BGCOLOR=#d99c7c>....</TD><TD BGCOLOR=#eeae90>....</TD><TD BGCOLOR=#eeb999>....</TD><TD BGCOLOR=#ecb8a2>....</TD><TD BGCOLOR=#f3c5a7>....</TD><TD BGCOLOR=#fbc3a4>....</TD><TD BGCOLOR=#fbc2a5>....</TD><TD BGCOLOR=#f8b89c>....</TD><TD BGCOLOR=#f4a794>....</TD><TD BGCOLOR=#e8988b>....</TD><TD BGCOLOR=#f8b9ac>....</TD><TD BGCOLOR=#f2a7a6>....</TD><TD BGCOLOR=#e49995>....</TD><TD BGCOLOR=#cb917e>....</TD><TD BGCOLOR=#976e4f>....</TD></TR>
<TR><TD BGCOLOR=#2a1502 COLSPAN=2>....</TD><TD BGCOLOR=#341304>....</TD><TD BGCOLOR=#340f03>....</TD><TD BGCOLOR=#341204>....</TD><TD BGCOLOR=#311102>....</TD><TD BGCOLOR=#331305>....</TD><TD BGCOLOR=#331304>....</TD><TD BGCOLOR=#301204>....</TD><TD BGCOLOR=#251605>....</TD><TD BGCOLOR=#2a1204>....</TD><TD BGCOLOR=#351409>....</TD><TD BGCOLOR=#2d0f05>....</TD><TD BGCOLOR=#300b06>....</TD><TD BGCOLOR=#321407>....</TD><TD BGCOLOR=#321505>....</TD><TD BGCOLOR=#3d1b08>....</TD><TD BGCOLOR=#422712>....</TD><TD BGCOLOR=#5d5d47>....</TD><TD BGCOLOR=#666343>....</TD><TD BGCOLOR=#6b5e40>....</TD><TD BGCOLOR=#6c7254>....</TD><TD BGCOLOR=#71674f>....</TD><TD BGCOLOR=#6a6446>....</TD><TD BGCOLOR=#726849>....</TD><TD BGCOLOR=#6e6345>....</TD><TD BGCOLOR=#675c3e>....</TD><TD BGCOLOR=#615333>....</TD><TD BGCOLOR=#624824>....</TD><TD BGCOLOR=#56421b>....</TD><TD BGCOLOR=#594213>....</TD><TD BGCOLOR=#563603>....</TD><TD BGCOLOR=#5b3b0f>....</TD><TD BGCOLOR=#554016>....</TD><TD BGCOLOR=#583b0f>....</TD><TD BGCOLOR=#623e16>....</TD><TD BGCOLOR=#513d1a>....</TD><TD BGCOLOR=#312809>....</TD><TD BGCOLOR=#352a0d>....</TD><TD BGCOLOR=#44331e>....</TD><TD BGCOLOR=#4f2609>....</TD><TD BGCOLOR=#633c25>....</TD><TD BGCOLOR=#62371e>....</TD><TD BGCOLOR=#75482a>....</TD><TD BGCOLOR=#845536>....</TD><TD BGCOLOR=#905c3b>....</TD><TD BGCOLOR=#a46d4a>....</TD><TD BGCOLOR=#a6774c>....</TD><TD BGCOLOR=#a8744d>....</TD><TD BGCOLOR=#a4704d>....</TD><TD BGCOLOR=#9e724e>....</TD><TD BGCOLOR=#976c47>....</TD><TD BGCOLOR=#8d6c44>....</TD><TD BGCOLOR=#856440>....</TD><TD BGCOLOR=#886343>....</TD><TD BGCOLOR=#8f6844>....</TD><TD BGCOLOR=#895e38>....</TD><TD BGCOLOR=#a2784e>....</TD><TD BGCOLOR=#b5895e>....</TD><TD BGCOLOR=#c3946b>....</TD><TD BGCOLOR=#c89973>....</TD><TD BGCOLOR=#bd8e66>....</TD><TD BGCOLOR=#b98c6a>....</TD><TD BGCOLOR=#bd9d74>....</TD><TD BGCOLOR=#dba982>....</TD><TD BGCOLOR=#e7b492>....</TD><TD BGCOLOR=#ebb798>....</TD><TD BGCOLOR=#f6b7a1>....</TD><TD BGCOLOR=#f7c1a4>....</TD><TD BGCOLOR=#fcc6a2>....</TD><TD BGCOLOR=#fed3b0>....</TD><TD BGCOLOR=#fbcea4>....</TD><TD BGCOLOR=#fdcca3>....</TD><TD BGCOLOR=#fdcaa5>....</TD><TD BGCOLOR=#fec69b>....</TD><TD BGCOLOR=#fdc196>....</TD><TD BGCOLOR=#fcbd92>....</TD><TD BGCOLOR=#f2b388>....</TD><TD BGCOLOR=#e4ac7d>....</TD><TD BGCOLOR=#daa977>....</TD><TD BGCOLOR=#ce9973>....</TD><TD BGCOLOR=#c1916a>....</TD><TD BGCOLOR=#c89c6c>....</TD><TD BGCOLOR=#ca976b>....</TD><TD BGCOLOR=#be8d62>....</TD><TD BGCOLOR=#b68663>....</TD><TD BGCOLOR=#ba886b>....</TD><TD BGCOLOR=#be8c70>....</TD><TD BGCOLOR=#c39277>....</TD><TD BGCOLOR=#b08771>....</TD><TD BGCOLOR=#b69572>....</TD><TD BGCOLOR=#bc9787>....</TD><TD BGCOLOR=#c39b83>....</TD><TD BGCOLOR=#c79870>....</TD><TD BGCOLOR=#c59e79>....</TD><TD BGCOLOR=#dbb893>....</TD><TD BGCOLOR=#d6b089>....</TD><TD BGCOLOR=#be8e71>....</TD><TD BGCOLOR=#c18669>....</TD><TD BGCOLOR=#bc7764>....</TD><TD BGCOLOR=#d59788>....</TD><TD BGCOLOR=#ebad9b>....</TD><TD BGCOLOR=#f8b8a6>....</TD><TD BGCOLOR=#f9c9b0>....</TD><TD BGCOLOR=#fcc9b3>....</TD><TD BGCOLOR=#fac8a5>....</TD><TD BGCOLOR=#f5b898>....</TD><TD BGCOLOR=#f2b096>....</TD><TD BGCOLOR=#e0a289>....</TD><TD BGCOLOR=#de9a87>....</TD><TD BGCOLOR=#fbb6a6>....</TD><TD BGCOLOR=#fbc0ad>....</TD><TD BGCOLOR=#f4afa1>....</TD><TD BGCOLOR=#f0a395>....</TD><TD BGCOLOR=#e09a84>....</TD><TD BGCOLOR=#a87353>....</TD></TR>
<TR><TD BGCOLOR=#2e1302 COLSPAN=2>....</TD><TD BGCOLOR=#341304>....</TD><TD BGCOLOR=#311102>....</TD><TD BGCOLOR=#2f1404>....</TD><TD BGCOLOR=#311102>....</TD><TD BGCOLOR=#331304>....</TD><TD BGCOLOR=#321203>....</TD><TD BGCOLOR=#331205>....</TD><TD BGCOLOR=#281707>....</TD><TD BGCOLOR=#271506>....</TD><TD BGCOLOR=#331107>....</TD><TD BGCOLOR=#2a1004>....</TD><TD BGCOLOR=#2d0d06>....</TD><TD BGCOLOR=#331206>....</TD><TD BGCOLOR=#301605>....</TD><TD BGCOLOR=#391807>....</TD><TD BGCOLOR=#422710>....</TD><TD BGCOLOR=#5c5c42>....</TD><TD BGCOLOR=#636043>....</TD><TD BGCOLOR=#6c5c40>....</TD><TD BGCOLOR=#6d6f53>....</TD><TD BGCOLOR=#766851>....</TD><TD BGCOLOR=#6e6548>....</TD><TD BGCOLOR=#706647>....</TD><TD BGCOLOR=#6d6244>....</TD><TD BGCOLOR=#6a5f41>....</TD><TD BGCOLOR=#635738>....</TD><TD BGCOLOR=#5e4e2d>....</TD><TD BGCOLOR=#544323>....</TD><TD BGCOLOR=#573e17>....</TD><TD BGCOLOR=#583509>....</TD><TD BGCOLOR=#5a3a11>....</TD><TD BGCOLOR=#583d18>....</TD><TD BGCOLOR=#563710>....</TD><TD BGCOLOR=#5e3c15>....</TD><TD BGCOLOR=#553b15>....</TD><TD BGCOLOR=#3f2b0d>....</TD><TD BGCOLOR=#33230f>....</TD><TD BGCOLOR=#4b3729>....</TD><TD BGCOLOR=#552c0c>....</TD><TD BGCOLOR=#613b1f>....</TD><TD BGCOLOR=#673e27>....</TD><TD BGCOLOR=#79452b>....</TD><TD BGCOLOR=#814d30>....</TD><TD BGCOLOR=#9e6a49>....</TD><TD BGCOLOR=#a6734e>....</TD><TD BGCOLOR=#a17546>....</TD><TD BGCOLOR=#a57046>....</TD><TD BGCOLOR=#ad7751>....</TD><TD BGCOLOR=#9e6b45>....</TD><TD BGCOLOR=#9c6b45>....</TD><TD BGCOLOR=#9b7251>....</TD><TD BGCOLOR=#987050>....</TD><TD BGCOLOR=#9e7452>....</TD><TD BGCOLOR=#9f7854>....</TD><TD BGCOLOR=#99714a>....</TD><TD BGCOLOR=#ad7b54>....</TD><TD BGCOLOR=#ba825d>....</TD><TD BGCOLOR=#b47b56>....</TD><TD BGCOLOR=#c68e66>....</TD><TD BGCOLOR=#cc936f>....</TD><TD BGCOLOR=#d19774>....</TD><TD BGCOLOR=#ca9f72>....</TD><TD BGCOLOR=#d79d75>....</TD><TD BGCOLOR=#cc9575>....</TD><TD BGCOLOR=#e2b392>....</TD><TD BGCOLOR=#f4bca4>....</TD><TD BGCOLOR=#f9cbac>....</TD><TD BGCOLOR=#fccea8>....</TD><TD BGCOLOR=#fcd7b3>....</TD><TD BGCOLOR=#fddbad>....</TD><TD BGCOLOR=#fdd5a3>....</TD><TD BGCOLOR=#fdd0a1>....</TD><TD BGCOLOR=#fdc89a>....</TD><TD BGCOLOR=#f6c193>....</TD><TD BGCOLOR=#f2b68c>....</TD><TD BGCOLOR=#e8ab82>....</TD><TD BGCOLOR=#d7a878>....</TD><TD BGCOLOR=#cea071>....</TD><TD BGCOLOR=#af7856>....</TD><TD BGCOLOR=#b37d5e>....</TD><TD BGCOLOR=#c59570>....</TD><TD BGCOLOR=#c6966e>....</TD><TD BGCOLOR=#bb9667>....</TD><TD BGCOLOR=#b99167>....</TD><TD BGCOLOR=#ba8e6b>....</TD><TD BGCOLOR=#b7896d>....</TD><TD BGCOLOR=#b98b75>....</TD><TD BGCOLOR=#bb8e7c>....</TD><TD BGCOLOR=#be9e80>....</TD><TD BGCOLOR=#bb9a92>....</TD><TD BGCOLOR=#c79a90>....</TD><TD BGCOLOR=#b38871>....</TD><TD BGCOLOR=#a9866f>....</TD><TD BGCOLOR=#a38267>....</TD><TD BGCOLOR=#977454>....</TD><TD BGCOLOR=#b78e75>....</TD><TD BGCOLOR=#bf816c>....</TD><TD BGCOLOR=#bf766b>....</TD><TD BGCOLOR=#db9f98>....</TD><TD BGCOLOR=#f1b6ae>....</TD><TD BGCOLOR=#f1b3a5>....</TD><TD BGCOLOR=#f3c4ab>....</TD><TD BGCOLOR=#eeb49e>....</TD><TD BGCOLOR=#e8ab8c>....</TD><TD BGCOLOR=#dd9f84>....</TD><TD BGCOLOR=#c48e79>....</TD><TD BGCOLOR=#cb9a84>....</TD><TD BGCOLOR=#f7c6b0>....</TD><TD BGCOLOR=#fecab3>....</TD><TD BGCOLOR=#f9c2a8>....</TD><TD BGCOLOR=#f8c5a9>....</TD><TD BGCOLOR=#fbb6a0>....</TD><TD BGCOLOR=#f4a793>....</TD><TD BGCOLOR=#bf8369>....</TD></TR>
<TR><TD BGCOLOR=#2c1403 COLSPAN=2>....</TD><TD BGCOLOR=#311403>....</TD><TD BGCOLOR=#301504>....</TD><TD BGCOLOR=#2e1907>....</TD><TD BGCOLOR=#2e1001>....</TD><TD BGCOLOR=#2e1002>....</TD><TD BGCOLOR=#311203>....</TD><TD BGCOLOR=#361507>....</TD><TD BGCOLOR=#2c1708>....</TD><TD BGCOLOR=#271607>....</TD><TD BGCOLOR=#2d0e03>....</TD><TD BGCOLOR=#281305>....</TD><TD BGCOLOR=#271006>....</TD><TD BGCOLOR=#321107>....</TD><TD BGCOLOR=#321303>....</TD><TD BGCOLOR=#3c1709>....</TD><TD BGCOLOR=#462911>....</TD><TD BGCOLOR=#59593a>....</TD><TD BGCOLOR=#686045>....</TD><TD BGCOLOR=#6c5c40>....</TD><TD BGCOLOR=#717255>....</TD><TD BGCOLOR=#71674f>....</TD><TD BGCOLOR=#6b6244>....</TD><TD BGCOLOR=#72684b>....</TD><TD BGCOLOR=#6d6346>....</TD><TD BGCOLOR=#6c6145>....</TD><TD BGCOLOR=#645b3e>....</TD><TD BGCOLOR=#5c583b>....</TD><TD BGCOLOR=#55492c>....</TD><TD BGCOLOR=#5a3b19>....</TD><TD BGCOLOR=#5c340d>....</TD><TD BGCOLOR=#593914>....</TD><TD BGCOLOR=#583a18>....</TD><TD BGCOLOR=#563711>....</TD><TD BGCOLOR=#5c3b12>....</TD><TD BGCOLOR=#5a3812>....</TD><TD BGCOLOR=#543615>....</TD><TD BGCOLOR=#37200f>....</TD><TD BGCOLOR=#3b2117>....</TD><TD BGCOLOR=#603519>....</TD><TD BGCOLOR=#6b4728>....</TD><TD BGCOLOR=#6d4c32>....</TD><TD BGCOLOR=#79482d>....</TD><TD BGCOLOR=#895b3d>....</TD><TD BGCOLOR=#9c704d>....</TD><TD BGCOLOR=#9b6d46>....</TD><TD BGCOLOR=#946838>....</TD><TD BGCOLOR=#a07041>....</TD><TD BGCOLOR=#9c6e42>....</TD><TD BGCOLOR=#9e7247>....</TD><TD BGCOLOR=#9f6a43>....</TD><TD BGCOLOR=#a37256>....</TD><TD BGCOLOR=#9d6e51>....</TD><TD BGCOLOR=#aa7b5a>....</TD><TD BGCOLOR=#9f7653>....</TD><TD BGCOLOR=#b08560>....</TD><TD BGCOLOR=#ba845f>....</TD><TD BGCOLOR=#c88968>....</TD><TD BGCOLOR=#d59571>....</TD><TD BGCOLOR=#da986f>....</TD><TD BGCOLOR=#e8a080>....</TD><TD BGCOLOR=#eca17d>....</TD><TD BGCOLOR=#edb283>....</TD><TD BGCOLOR=#efaf84>....</TD><TD BGCOLOR=#e9ac88>....</TD><TD BGCOLOR=#cf9d7a>....</TD><TD BGCOLOR=#dda88b>....</TD><TD BGCOLOR=#f0c4a5>....</TD><TD BGCOLOR=#f8cba8>....</TD><TD BGCOLOR=#fee2bd>....</TD><TD BGCOLOR=#fddfae>....</TD><TD BGCOLOR=#fbd59f>....</TD><TD BGCOLOR=#f7cb96>....</TD><TD BGCOLOR=#f2bc8a>....</TD><TD BGCOLOR=#daa577>....</TD><TD BGCOLOR=#d59971>....</TD><TD BGCOLOR=#d4966f>....</TD><TD BGCOLOR=#c69b69>....</TD><TD BGCOLOR=#cba070>....</TD><TD BGCOLOR=#be8967>....</TD><TD BGCOLOR=#ba8168>....</TD><TD BGCOLOR=#b57e64>....</TD><TD BGCOLOR=#b28565>....</TD><TD BGCOLOR=#b3936e>....</TD><TD BGCOLOR=#af8762>....</TD><TD BGCOLOR=#af8663>....</TD><TD BGCOLOR=#a67a5e>....</TD><TD BGCOLOR=#a27560>....</TD><TD BGCOLOR=#a67568>....</TD><TD BGCOLOR=#a28468>....</TD><TD BGCOLOR=#9f7d7a>....</TD><TD BGCOLOR=#b07f80>....</TD><TD BGCOLOR=#9c7874>....</TD><TD BGCOLOR=#8a6f68>....</TD><TD BGCOLOR=#6c4d41>....</TD><TD BGCOLOR=#987360>....</TD><TD BGCOLOR=#b8927c>....</TD><TD BGCOLOR=#c18673>....</TD><TD BGCOLOR=#c4857a>....</TD><TD BGCOLOR=#d6a09a>....</TD><TD BGCOLOR=#f0b0aa>....</TD><TD BGCOLOR=#f1afa2>....</TD><TD BGCOLOR=#e6b197>....</TD><TD BGCOLOR=#e5a48e>....</TD><TD BGCOLOR=#cf9277>....</TD><TD BGCOLOR=#cc9f83>....</TD><TD BGCOLOR=#e1c2ab>....</TD><TD BGCOLOR=#fbdac2>....</TD><TD BGCOLOR=#fdd4ba>....</TD><TD BGCOLOR=#faccb0>....</TD><TD BGCOLOR=#f7c1a4>....</TD><TD BGCOLOR=#fdd7b9>....</TD><TD BGCOLOR=#fdc4af>....</TD><TD BGCOLOR=#efa495>....</TD><TD BGCOLOR=#bf806d>....</TD></TR>
<TR><TD BGCOLOR=#2f1305 COLSPAN=2>....</TD><TD BGCOLOR=#341200>....</TD><TD BGCOLOR=#351403>....</TD><TD BGCOLOR=#301408>....</TD><TD BGCOLOR=#2f1203>....</TD><TD BGCOLOR=#2a1202>....</TD><TD BGCOLOR=#2f1504>....</TD><TD BGCOLOR=#351404>....</TD><TD BGCOLOR=#311105>....</TD><TD BGCOLOR=#291207>....</TD><TD BGCOLOR=#2a1204>....</TD><TD BGCOLOR=#271101>....</TD><TD BGCOLOR=#271207>....</TD><TD BGCOLOR=#2f120b>....</TD><TD BGCOLOR=#361304>....</TD><TD BGCOLOR=#421305>....</TD><TD BGCOLOR=#4e2b14>....</TD><TD BGCOLOR=#5c5c35>....</TD><TD BGCOLOR=#6f5941>....</TD><TD BGCOLOR=#685e3e>....</TD><TD BGCOLOR=#6f7353>....</TD><TD BGCOLOR=#676d4d>....</TD><TD BGCOLOR=#686743>....</TD><TD BGCOLOR=#6b634b>....</TD><TD BGCOLOR=#69614a>....</TD><TD BGCOLOR=#686049>....</TD><TD BGCOLOR=#655d48>....</TD><TD BGCOLOR=#5e5748>....</TD><TD BGCOLOR=#5b4e34>....</TD><TD BGCOLOR=#5a3d1a>....</TD><TD BGCOLOR=#5b3410>....</TD><TD BGCOLOR=#5a3a16>....</TD><TD BGCOLOR=#5a3a17>....</TD><TD BGCOLOR=#583811>....</TD><TD BGCOLOR=#5a3d0d>....</TD><TD BGCOLOR=#56360d>....</TD><TD BGCOLOR=#533613>....</TD><TD BGCOLOR=#493821>....</TD><TD BGCOLOR=#3c240e>....</TD><TD BGCOLOR=#583322>....</TD><TD BGCOLOR=#6d482b>....</TD><TD BGCOLOR=#725433>....</TD><TD BGCOLOR=#6c3e23>....</TD><TD BGCOLOR=#755134>....</TD><TD BGCOLOR=#896746>....</TD><TD BGCOLOR=#8a5b34>....</TD><TD BGCOLOR=#97683f>....</TD><TD BGCOLOR=#9e7242>....</TD><TD BGCOLOR=#a87b4c>....</TD><TD BGCOLOR=#a4754b>....</TD><TD BGCOLOR=#a47144>....</TD><TD BGCOLOR=#b27759>....</TD><TD BGCOLOR=#a76e54>....</TD><TD BGCOLOR=#af7e5d>....</TD><TD BGCOLOR=#a87b59>....</TD><TD BGCOLOR=#ae7c59>....</TD><TD BGCOLOR=#bb8560>....</TD><TD BGCOLOR=#c5916a>....</TD><TD BGCOLOR=#ca946a>....</TD><TD BGCOLOR=#dd976e>....</TD><TD BGCOLOR=#ef9a7b>....</TD><TD BGCOLOR=#fca483>....</TD><TD BGCOLOR=#fbaf8f>....</TD><TD BGCOLOR=#f8b99a>....</TD><TD BGCOLOR=#f0ad8c>....</TD><TD BGCOLOR=#f3b18b>....</TD><TD BGCOLOR=#dd9f7c>....</TD><TD BGCOLOR=#c28a6c>....</TD><TD BGCOLOR=#cd9a7e>....</TD><TD BGCOLOR=#e0b68f>....</TD><TD BGCOLOR=#e7bf93>....</TD><TD BGCOLOR=#e2aa7e>....</TD><TD BGCOLOR=#ce9a6c>....</TD><TD BGCOLOR=#c9946d>....</TD><TD BGCOLOR=#cf976f>....</TD><TD BGCOLOR=#d89d73>....</TD><TD BGCOLOR=#d4986d>....</TD><TD BGCOLOR=#c9976a>....</TD><TD BGCOLOR=#ba8a63>....</TD><TD BGCOLOR=#b48161>....</TD><TD BGCOLOR=#af8464>....</TD><TD BGCOLOR=#a5785d>....</TD><TD BGCOLOR=#a07863>....</TD><TD BGCOLOR=#a3756a>....</TD><TD BGCOLOR=#a46e65>....</TD><TD BGCOLOR=#93735a>....</TD><TD BGCOLOR=#997057>....</TD><TD BGCOLOR=#976c58>....</TD><TD BGCOLOR=#9c6865>....</TD><TD BGCOLOR=#917159>....</TD><TD BGCOLOR=#916666>....</TD><TD BGCOLOR=#9f676c>....</TD><TD BGCOLOR=#9f6f70>....</TD><TD BGCOLOR=#92776c>....</TD><TD BGCOLOR=#745041>....</TD><TD BGCOLOR=#a17867>....</TD><TD BGCOLOR=#b8907c>....</TD><TD BGCOLOR=#bf8c73>....</TD><TD BGCOLOR=#c38b76>....</TD><TD BGCOLOR=#c48e80>....</TD><TD BGCOLOR=#d9a090>....</TD><TD BGCOLOR=#dfaa92>....</TD><TD BGCOLOR=#eec2a3>....</TD><TD BGCOLOR=#fad2ac>....</TD><TD BGCOLOR=#fce9bd>....</TD><TD BGCOLOR=#fcf4c4>....</TD><TD BGCOLOR=#fee8c4>....</TD><TD BGCOLOR=#fed2b2>....</TD><TD BGCOLOR=#f9c5a4>....</TD><TD BGCOLOR=#f7c0a2>....</TD><TD BGCOLOR=#fabba3>....</TD><TD BGCOLOR=#fac5b0>....</TD><TD BGCOLOR=#f6b9a8>....</TD><TD BGCOLOR=#eea99a>....</TD><TD BGCOLOR=#bc7665>....</TD></TR>
<TR><TD BGCOLOR=#2f1305 COLSPAN=2>....</TD><TD BGCOLOR=#351201>....</TD><TD BGCOLOR=#341301>....</TD><TD BGCOLOR=#301407>....</TD><TD BGCOLOR=#301303>....</TD><TD BGCOLOR=#2b1302>....</TD><TD BGCOLOR=#2f1504>....</TD><TD BGCOLOR=#311303>....</TD><TD BGCOLOR=#2d1003>....</TD><TD BGCOLOR=#280f06>....</TD><TD BGCOLOR=#281305>....</TD><TD BGCOLOR=#281604>....</TD><TD BGCOLOR=#251006>....</TD><TD BGCOLOR=#32150d>....</TD><TD BGCOLOR=#351204>....</TD><TD BGCOLOR=#441504>....</TD><TD BGCOLOR=#4a3118>....</TD><TD BGCOLOR=#5e5d3b>....</TD><TD BGCOLOR=#6c5a3e>....</TD><TD BGCOLOR=#64603d>....</TD><TD BGCOLOR=#717354>....</TD><TD BGCOLOR=#6a6c4d>....</TD><TD BGCOLOR=#686945>....</TD><TD BGCOLOR=#6b634c>....</TD><TD BGCOLOR=#686049>....</TD><TD BGCOLOR=#6b634c>....</TD><TD BGCOLOR=#685e49>....</TD><TD BGCOLOR=#685a49>....</TD><TD BGCOLOR=#5f4e35>....</TD><TD BGCOLOR=#5f4222>....</TD><TD BGCOLOR=#593410>....</TD><TD BGCOLOR=#5b3c10>....</TD><TD BGCOLOR=#5b3b15>....</TD><TD BGCOLOR=#573711>....</TD><TD BGCOLOR=#593d0d>....</TD><TD BGCOLOR=#55370a>....</TD><TD BGCOLOR=#53350c>....</TD><TD BGCOLOR=#4d3617>....</TD><TD BGCOLOR=#4a2c11>....</TD><TD BGCOLOR=#441f0b>....</TD><TD BGCOLOR=#6a452a>....</TD><TD BGCOLOR=#775338>....</TD><TD BGCOLOR=#7b5035>....</TD><TD BGCOLOR=#78543a>....</TD><TD BGCOLOR=#77543a>....</TD><TD BGCOLOR=#7f5536>....</TD><TD BGCOLOR=#8f633f>....</TD><TD BGCOLOR=#9f6e46>....</TD><TD BGCOLOR=#ae7e56>....</TD><TD BGCOLOR=#a27650>....</TD><TD BGCOLOR=#af7c4e>....</TD><TD BGCOLOR=#b37954>....</TD><TD BGCOLOR=#b67e5f>....</TD><TD BGCOLOR=#af7c5b>....</TD><TD BGCOLOR=#aa7851>....</TD><TD BGCOLOR=#b7865c>....</TD><TD BGCOLOR=#c49265>....</TD><TD BGCOLOR=#c08c62>....</TD><TD BGCOLOR=#cb9168>....</TD><TD BGCOLOR=#d8926a>....</TD><TD BGCOLOR=#f3a282>....</TD><TD BGCOLOR=#fbad8e>....</TD><TD BGCOLOR=#fdb296>....</TD><TD BGCOLOR=#fab29b>....</TD><TD BGCOLOR=#f0aa8f>....</TD><TD BGCOLOR=#eea58b>....</TD><TD BGCOLOR=#eaa587>....</TD><TD BGCOLOR=#dfa27e>....</TD><TD BGCOLOR=#dea57c>....</TD><TD BGCOLOR=#dd9b79>....</TD><TD BGCOLOR=#e0a580>....</TD><TD BGCOLOR=#dfa07c>....</TD><TD BGCOLOR=#cf9a72>....</TD><TD BGCOLOR=#cb9a6f>....</TD><TD BGCOLOR=#b78f65>....</TD><TD BGCOLOR=#a8835d>....</TD><TD BGCOLOR=#a57c5e>....</TD><TD BGCOLOR=#98715b>....</TD><TD BGCOLOR=#966e5f>....</TD><TD BGCOLOR=#91675f>....</TD><TD BGCOLOR=#926c63>....</TD><TD BGCOLOR=#8e6d60>....</TD><TD BGCOLOR=#8d6b62>....</TD><TD BGCOLOR=#956868>....</TD><TD BGCOLOR=#936460>....</TD><TD BGCOLOR=#886a5a>....</TD><TD BGCOLOR=#926157>....</TD><TD BGCOLOR=#946060>....</TD><TD BGCOLOR=#956164>....</TD><TD BGCOLOR=#9f7362>....</TD><TD BGCOLOR=#a36569>....</TD><TD BGCOLOR=#915254>....</TD><TD BGCOLOR=#865752>....</TD><TD BGCOLOR=#8b695b>....</TD><TD BGCOLOR=#875a48>....</TD><TD BGCOLOR=#ac7f6a>....</TD><TD BGCOLOR=#bc917d>....</TD><TD BGCOLOR=#c38e75>....</TD><TD BGCOLOR=#cc9375>....</TD><TD BGCOLOR=#deb08e>....</TD><TD BGCOLOR=#f2d2aa>....</TD><TD BGCOLOR=#fde7ba>....</TD><TD BGCOLOR=#fcf1c0>....</TD><TD BGCOLOR=#fbe3b2>....</TD><TD BGCOLOR=#f9dbaf>....</TD><TD BGCOLOR=#eac69e>....</TD><TD BGCOLOR=#edb69e>....</TD><TD BGCOLOR=#f2b095>....</TD><TD BGCOLOR=#f0af8f>....</TD><TD BGCOLOR=#f6b497>....</TD><TD BGCOLOR=#fcb19a>....</TD><TD BGCOLOR=#f3ab9d>....</TD><TD BGCOLOR=#e2988e>....</TD><TD BGCOLOR=#dd958d>....</TD><TD BGCOLOR=#b87a70>....</TD></TR>
<TR><TD BGCOLOR=#2f1305 COLSPAN=2>....</TD><TD BGCOLOR=#351301>....</TD><TD BGCOLOR=#341301>....</TD><TD BGCOLOR=#2f1205>....</TD><TD BGCOLOR=#301303>....</TD><TD BGCOLOR=#2c1403>....</TD><TD BGCOLOR=#301605>....</TD><TD BGCOLOR=#2f1402>....</TD><TD BGCOLOR=#2a1204>....</TD><TD BGCOLOR=#290f06>....</TD><TD BGCOLOR=#241205>....</TD><TD BGCOLOR=#251604>....</TD><TD BGCOLOR=#271205>....</TD><TD BGCOLOR=#32150d>....</TD><TD BGCOLOR=#351204>....</TD><TD BGCOLOR=#451402>....</TD><TD BGCOLOR=#45361c>....</TD><TD BGCOLOR=#5d5a3d>....</TD><TD BGCOLOR=#695a3c>....</TD><TD BGCOLOR=#63643e>....</TD><TD BGCOLOR=#737253>....</TD><TD BGCOLOR=#6b694c>....</TD><TD BGCOLOR=#666944>....</TD><TD BGCOLOR=#6b644c>....</TD><TD BGCOLOR=#686049>....</TD><TD BGCOLOR=#6b634c>....</TD><TD BGCOLOR=#695f49>....</TD><TD BGCOLOR=#685c45>....</TD><TD BGCOLOR=#5d5336>....</TD><TD BGCOLOR=#5b4828>....</TD><TD BGCOLOR=#583c15>....</TD><TD BGCOLOR=#5b3d09>....</TD><TD BGCOLOR=#5d3d14>....</TD><TD BGCOLOR=#553510>....</TD><TD BGCOLOR=#583c0d>....</TD><TD BGCOLOR=#553809>....</TD><TD BGCOLOR=#573607>....</TD><TD BGCOLOR=#563810>....</TD><TD BGCOLOR=#563110>....</TD><TD BGCOLOR=#48220b>....</TD><TD BGCOLOR=#5b371c>....</TD><TD BGCOLOR=#734834>....</TD><TD BGCOLOR=#855738>....</TD><TD BGCOLOR=#87593d>....</TD><TD BGCOLOR=#83553d>....</TD><TD BGCOLOR=#8a5c41>....</TD><TD BGCOLOR=#875d3f>....</TD><TD BGCOLOR=#935d3d>....</TD><TD BGCOLOR=#a06b4b>....</TD><TD BGCOLOR=#a17756>....</TD><TD BGCOLOR=#b68454>....</TD><TD BGCOLOR=#c0895b>....</TD><TD BGCOLOR=#b8815c>....</TD><TD BGCOLOR=#bd8866>....</TD><TD BGCOLOR=#b37f52>....</TD><TD BGCOLOR=#b68555>....</TD><TD BGCOLOR=#bb8f5a>....</TD><TD BGCOLOR=#b78356>....</TD><TD BGCOLOR=#c88962>....</TD><TD BGCOLOR=#d38e66>....</TD><TD BGCOLOR=#f4a987>....</TD><TD BGCOLOR=#feba95>....</TD><TD BGCOLOR=#fcb495>....</TD><TD BGCOLOR=#fab098>....</TD><TD BGCOLOR=#f8b093>....</TD><TD BGCOLOR=#fcaf94>....</TD><TD BGCOLOR=#f4aa8b>....</TD><TD BGCOLOR=#e4a07a>....</TD><TD BGCOLOR=#e4a57a>....</TD><TD BGCOLOR=#e49d7b>....</TD><TD BGCOLOR=#e2a381>....</TD><TD BGCOLOR=#e8a689>....</TD><TD BGCOLOR=#da9e7e>....</TD><TD BGCOLOR=#dc9b72>....</TD><TD BGCOLOR=#b78e68>....</TD><TD BGCOLOR=#9a785f>....</TD><TD BGCOLOR=#7f5b4b>....</TD><TD BGCOLOR=#895e54>....</TD><TD BGCOLOR=#8c5f5c>....</TD><TD BGCOLOR=#8b5f61>....</TD><TD BGCOLOR=#905961>....</TD><TD BGCOLOR=#976669>....</TD><TD BGCOLOR=#986a6d>....</TD><TD BGCOLOR=#9b676b>....</TD><TD BGCOLOR=#a36364>....</TD><TD BGCOLOR=#ad746d>....</TD><TD BGCOLOR=#af6467>....</TD><TD BGCOLOR=#bd7a87>....</TD><TD BGCOLOR=#a4696d>....</TD><TD BGCOLOR=#a25e4e>....</TD><TD BGCOLOR=#9f4446>....</TD><TD BGCOLOR=#82322b>....</TD><TD BGCOLOR=#8d5a4f>....</TD><TD BGCOLOR=#a8836f>....</TD><TD BGCOLOR=#cba58b>....</TD><TD BGCOLOR=#d7ba97>....</TD><TD BGCOLOR=#e2b696>....</TD><TD BGCOLOR=#e2a98f>....</TD><TD BGCOLOR=#f0b393>....</TD><TD BGCOLOR=#fcc7a4>....</TD><TD BGCOLOR=#f8bfa2>....</TD><TD BGCOLOR=#f7c2a5>....</TD><TD BGCOLOR=#efc2a6>....</TD><TD BGCOLOR=#f9c3a9>....</TD><TD BGCOLOR=#f9bda3>....</TD><TD BGCOLOR=#f4b695>....</TD><TD BGCOLOR=#ecaa8e>....</TD><TD BGCOLOR=#e9a383>....</TD><TD BGCOLOR=#f1ad8b>....</TD><TD BGCOLOR=#f8b394>....</TD><TD BGCOLOR=#f6a88f>....</TD><TD BGCOLOR=#f3a994>....</TD><TD BGCOLOR=#ec9f90>....</TD><TD BGCOLOR=#dc9289>....</TD><TD BGCOLOR=#be7d77>....</TD></TR>
<TR><TD BGCOLOR=#311305 COLSPAN=2>....</TD><TD BGCOLOR=#381203>....</TD><TD BGCOLOR=#341202>....</TD><TD BGCOLOR=#2c1404>....</TD><TD BGCOLOR=#311304>....</TD><TD BGCOLOR=#2f1504>....</TD><TD BGCOLOR=#301504>....</TD><TD BGCOLOR=#2f1302>....</TD><TD BGCOLOR=#2a1403>....</TD><TD BGCOLOR=#291105>....</TD><TD BGCOLOR=#261105>....</TD><TD BGCOLOR=#261405>....</TD><TD BGCOLOR=#281105>....</TD><TD BGCOLOR=#33140a>....</TD><TD BGCOLOR=#331203>....</TD><TD BGCOLOR=#401203>....</TD><TD BGCOLOR=#44371e>....</TD><TD BGCOLOR=#5c593c>....</TD><TD BGCOLOR=#675d3e>....</TD><TD BGCOLOR=#6b6240>....</TD><TD BGCOLOR=#767054>....</TD><TD BGCOLOR=#6d6a4f>....</TD><TD BGCOLOR=#636b47>....</TD><TD BGCOLOR=#675f47>....</TD><TD BGCOLOR=#686149>....</TD><TD BGCOLOR=#68644b>....</TD><TD BGCOLOR=#6c614b>....</TD><TD BGCOLOR=#6a6246>....</TD><TD BGCOLOR=#5e5a39>....</TD><TD BGCOLOR=#594c2d>....</TD><TD BGCOLOR=#583f15>....</TD><TD BGCOLOR=#5a3b0c>....</TD><TD BGCOLOR=#5d3e14>....</TD><TD BGCOLOR=#56360d>....</TD><TD BGCOLOR=#563f13>....</TD><TD BGCOLOR=#51380c>....</TD><TD BGCOLOR=#583908>....</TD><TD BGCOLOR=#553c0e>....</TD><TD BGCOLOR=#573311>....</TD><TD BGCOLOR=#4a1f09>....</TD><TD BGCOLOR=#4b230d>....</TD><TD BGCOLOR=#653f2b>....</TD><TD BGCOLOR=#825737>....</TD><TD BGCOLOR=#88583b>....</TD><TD BGCOLOR=#834f37>....</TD><TD BGCOLOR=#855239>....</TD><TD BGCOLOR=#8a6446>....</TD><TD BGCOLOR=#9a6647>....</TD><TD BGCOLOR=#a77354>....</TD><TD BGCOLOR=#92694a>....</TD><TD BGCOLOR=#9f6c41>....</TD><TD BGCOLOR=#c79360>....</TD><TD BGCOLOR=#be8b5d>....</TD><TD BGCOLOR=#c18e64>....</TD><TD BGCOLOR=#b37e4c>....</TD><TD BGCOLOR=#b1824f>....</TD><TD BGCOLOR=#a77a47>....</TD><TD BGCOLOR=#ac784e>....</TD><TD BGCOLOR=#cf906e>....</TD><TD BGCOLOR=#db9570>....</TD><TD BGCOLOR=#eea681>....</TD><TD BGCOLOR=#fdbd94>....</TD><TD BGCOLOR=#f7ac8a>....</TD><TD BGCOLOR=#faac90>....</TD><TD BGCOLOR=#fcb595>....</TD><TD BGCOLOR=#f6af8f>....</TD><TD BGCOLOR=#fbb38f>....</TD><TD BGCOLOR=#f2a981>....</TD><TD BGCOLOR=#eea57c>....</TD><TD BGCOLOR=#e7a17f>....</TD><TD BGCOLOR=#de9e7d>....</TD><TD BGCOLOR=#e5a288>....</TD><TD BGCOLOR=#efae95>....</TD><TD BGCOLOR=#e4a280>....</TD><TD BGCOLOR=#c68d6d>....</TD><TD BGCOLOR=#bd9a88>....</TD><TD BGCOLOR=#925b58>....</TD><TD BGCOLOR=#ad6865>....</TD><TD BGCOLOR=#c1726f>....</TD><TD BGCOLOR=#c67c80>....</TD><TD BGCOLOR=#b46167>....</TD><TD BGCOLOR=#ae6168>....</TD><TD BGCOLOR=#ba7d80>....</TD><TD BGCOLOR=#bf8588>....</TD><TD BGCOLOR=#b66b67>....</TD><TD BGCOLOR=#c07677>....</TD><TD BGCOLOR=#be6b78>....</TD><TD BGCOLOR=#af6068>....</TD><TD BGCOLOR=#9d5554>....</TD><TD BGCOLOR=#bf6255>....</TD><TD BGCOLOR=#af3f3c>....</TD><TD BGCOLOR=#8f362d>....</TD><TD BGCOLOR=#946051>....</TD><TD BGCOLOR=#a7836b>....</TD><TD BGCOLOR=#cfad90>....</TD><TD BGCOLOR=#c8b18b>....</TD><TD BGCOLOR=#c79b77>....</TD><TD BGCOLOR=#cd917a>....</TD><TD BGCOLOR=#e3a490>....</TD><TD BGCOLOR=#f2b79c>....</TD><TD BGCOLOR=#f3baa6>....</TD><TD BGCOLOR=#eeb5a2>....</TD><TD BGCOLOR=#f3beac>....</TD><TD BGCOLOR=#e7b39f>....</TD><TD BGCOLOR=#edbba3>....</TD><TD BGCOLOR=#e0a788>....</TD><TD BGCOLOR=#e2a17f>....</TD><TD BGCOLOR=#d89a78>....</TD><TD BGCOLOR=#e3a584>....</TD><TD BGCOLOR=#df997b>....</TD><TD BGCOLOR=#e59a82>....</TD><TD BGCOLOR=#f0ab94>....</TD><TD BGCOLOR=#eea58e>....</TD><TD BGCOLOR=#eb9e8c>....</TD><TD BGCOLOR=#db9286>....</TD></TR>
</TABLE><TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD BGCOLOR=#311102>....</TD><TD BGCOLOR=#311102>....</TD><TD BGCOLOR=#3a1105>....</TD><TD BGCOLOR=#311102>....</TD><TD BGCOLOR=#281703>....</TD><TD BGCOLOR=#331405>....</TD><TD BGCOLOR=#311303>....</TD><TD BGCOLOR=#321304>....</TD><TD BGCOLOR=#301202>....</TD><TD BGCOLOR=#291100>....</TD><TD BGCOLOR=#261403>....</TD><TD BGCOLOR=#291005>....</TD><TD BGCOLOR=#2a0f06>....</TD><TD BGCOLOR=#2a0e04>....</TD><TD BGCOLOR=#351508>....</TD><TD BGCOLOR=#301504>....</TD><TD BGCOLOR=#3b1305>....</TD><TD BGCOLOR=#473820>....</TD><TD BGCOLOR=#5c5b3d>....</TD><TD BGCOLOR=#625d41>....</TD><TD BGCOLOR=#6e583b>....</TD><TD BGCOLOR=#766f54>....</TD><TD BGCOLOR=#68664e>....</TD><TD BGCOLOR=#64694a>....</TD><TD BGCOLOR=#696049>....</TD><TD BGCOLOR=#676049>....</TD><TD BGCOLOR=#64644a>....</TD><TD BGCOLOR=#6f614c>....</TD><TD BGCOLOR=#6e6345>....</TD><TD BGCOLOR=#5f5b3a>....</TD><TD BGCOLOR=#5f4e38>....</TD><TD BGCOLOR=#5c3e17>....</TD><TD BGCOLOR=#593813>....</TD><TD BGCOLOR=#5c3c12>....</TD><TD BGCOLOR=#553608>....</TD><TD BGCOLOR=#553e15>....</TD><TD BGCOLOR=#4d340c>....</TD><TD BGCOLOR=#563706>....</TD><TD BGCOLOR=#543f10>....</TD><TD BGCOLOR=#52381b>....</TD><TD BGCOLOR=#492212>....</TD><TD BGCOLOR=#461c0d>....</TD><TD BGCOLOR=#613f24>....</TD><TD BGCOLOR=#785435>....</TD><TD BGCOLOR=#896142>....</TD><TD BGCOLOR=#7f5235>....</TD><TD BGCOLOR=#7f4f34>....</TD><TD BGCOLOR=#896342>....</TD><TD BGCOLOR=#9f6a48>....</TD><TD BGCOLOR=#a6704f>....</TD><TD BGCOLOR=#a87a5b>....</TD><TD BGCOLOR=#91603c>....</TD><TD BGCOLOR=#bd8b5a>....</TD><TD BGCOLOR=#cb9663>....</TD><TD BGCOLOR=#bf8757>....</TD><TD BGCOLOR=#b27b4a>....</TD><TD BGCOLOR=#b78455>....</TD><TD BGCOLOR=#b27750>....</TD><TD BGCOLOR=#b97b58>....</TD><TD BGCOLOR=#d1896a>....</TD><TD BGCOLOR=#e99679>....</TD><TD BGCOLOR=#fcbd9a>....</TD><TD BGCOLOR=#fdc29d>....</TD><TD BGCOLOR=#fbb191>....</TD><TD BGCOLOR=#f8ad8f>....</TD><TD BGCOLOR=#eaa485>....</TD><TD BGCOLOR=#ebae95>....</TD><TD BGCOLOR=#f1ab8a>....</TD><TD BGCOLOR=#fbae84>....</TD><TD BGCOLOR=#faaf84>....</TD><TD BGCOLOR=#f5aa84>....</TD><TD BGCOLOR=#e49a77>....</TD><TD BGCOLOR=#eba684>....</TD><TD BGCOLOR=#eaa88c>....</TD><TD BGCOLOR=#d5a286>....</TD><TD BGCOLOR=#c48366>....</TD><TD BGCOLOR=#b19680>....</TD><TD BGCOLOR=#bc7871>....</TD><TD BGCOLOR=#c37d78>....</TD><TD BGCOLOR=#dc7f86>....</TD><TD BGCOLOR=#d67e85>....</TD><TD BGCOLOR=#c66f62>....</TD><TD BGCOLOR=#b85751>....</TD><TD BGCOLOR=#c06f68>....</TD><TD BGCOLOR=#c87b77>....</TD><TD BGCOLOR=#c9695d>....</TD><TD BGCOLOR=#d18383>....</TD><TD BGCOLOR=#b36e78>....</TD><TD BGCOLOR=#ab5650>....</TD><TD BGCOLOR=#b85953>....</TD><TD BGCOLOR=#b7413b>....</TD><TD BGCOLOR=#be4442>....</TD><TD BGCOLOR=#96383c>....</TD><TD BGCOLOR=#925649>....</TD><TD BGCOLOR=#9c745e>....</TD><TD BGCOLOR=#b89278>....</TD><TD BGCOLOR=#b79578>....</TD><TD BGCOLOR=#b28265>....</TD><TD BGCOLOR=#c58874>....</TD><TD BGCOLOR=#e3a8a3>....</TD><TD BGCOLOR=#dea28c>....</TD><TD BGCOLOR=#e1a492>....</TD><TD BGCOLOR=#e0a58f>....</TD><TD BGCOLOR=#dea88d>....</TD><TD BGCOLOR=#da9f83>....</TD><TD BGCOLOR=#d08e73>....</TD><TD BGCOLOR=#c7856a>....</TD><TD BGCOLOR=#c48267>....</TD><TD BGCOLOR=#c68d70>....</TD><TD BGCOLOR=#d4977d>....</TD><TD BGCOLOR=#e5a08b>....</TD><TD BGCOLOR=#f1ae9c>....</TD><TD BGCOLOR=#f6b2a1>....</TD><TD BGCOLOR=#f9b39b>....</TD><TD BGCOLOR=#fcb498>....</TD><TD BGCOLOR=#f3a791>....</TD></TR>
<TR><TD BGCOLOR=#2f0e01 COLSPAN=2>....</TD><TD BGCOLOR=#351304>....</TD><TD BGCOLOR=#2f1604>....</TD><TD BGCOLOR=#291804>....</TD><TD BGCOLOR=#321505>....</TD><TD BGCOLOR=#330f01>....</TD><TD BGCOLOR=#321103>....</TD><TD BGCOLOR=#321504>....</TD><TD BGCOLOR=#2d1101>....</TD><TD BGCOLOR=#271404>....</TD><TD BGCOLOR=#261205>....</TD><TD BGCOLOR=#280c04>....</TD><TD BGCOLOR=#2d0c04>....</TD><TD BGCOLOR=#36160a>....</TD><TD BGCOLOR=#2c1705>....</TD><TD BGCOLOR=#381404>....</TD><TD BGCOLOR=#4a3927>....</TD><TD BGCOLOR=#5b5a44>....</TD><TD BGCOLOR=#605b40>....</TD><TD BGCOLOR=#6a5e3d>....</TD><TD BGCOLOR=#777659>....</TD><TD BGCOLOR=#69614b>....</TD><TD BGCOLOR=#6a6449>....</TD><TD BGCOLOR=#68624a>....</TD><TD BGCOLOR=#6a5f48>....</TD><TD BGCOLOR=#656249>....</TD><TD BGCOLOR=#6c614a>....</TD><TD BGCOLOR=#6d6143>....</TD><TD BGCOLOR=#5e593d>....</TD><TD BGCOLOR=#5f4d41>....</TD><TD BGCOLOR=#5b3c1c>....</TD><TD BGCOLOR=#57370d>....</TD><TD BGCOLOR=#5b3b12>....</TD><TD BGCOLOR=#55350b>....</TD><TD BGCOLOR=#573a11>....</TD><TD BGCOLOR=#513205>....</TD><TD BGCOLOR=#593803>....</TD><TD BGCOLOR=#583a0d>....</TD><TD BGCOLOR=#5a4630>....</TD><TD BGCOLOR=#5f4d40>....</TD><TD BGCOLOR=#402113>....</TD><TD BGCOLOR=#54230f>....</TD><TD BGCOLOR=#724826>....</TD><TD BGCOLOR=#78512d>....</TD><TD BGCOLOR=#77502c>....</TD><TD BGCOLOR=#805835>....</TD><TD BGCOLOR=#8d6041>....</TD><TD BGCOLOR=#9f6243>....</TD><TD BGCOLOR=#a36547>....</TD><TD BGCOLOR=#a37054>....</TD><TD BGCOLOR=#885a38>....</TD><TD BGCOLOR=#b37f5a>....</TD><TD BGCOLOR=#d2966d>....</TD><TD BGCOLOR=#c18158>....</TD><TD BGCOLOR=#b67a52>....</TD><TD BGCOLOR=#bc7f58>....</TD><TD BGCOLOR=#c67e5b>....</TD><TD BGCOLOR=#d48661>....</TD><TD BGCOLOR=#f29a78>....</TD><TD BGCOLOR=#fea991>....</TD><TD BGCOLOR=#fecaad>....</TD><TD BGCOLOR=#fbc4a5>....</TD><TD BGCOLOR=#f0af8f>....</TD><TD BGCOLOR=#e2a17e>....</TD><TD BGCOLOR=#d2926c>....</TD><TD BGCOLOR=#cf8e7a>....</TD><TD BGCOLOR=#eba78b>....</TD><TD BGCOLOR=#eca87f>....</TD><TD BGCOLOR=#cd9062>....</TD><TD BGCOLOR=#e09d6f>....</TD><TD BGCOLOR=#e8a57a>....</TD><TD BGCOLOR=#f1ac85>....</TD><TD BGCOLOR=#f1ad8d>....</TD><TD BGCOLOR=#e2ad95>....</TD><TD BGCOLOR=#ba7d63>....</TD><TD BGCOLOR=#ae967d>....</TD><TD BGCOLOR=#ca9678>....</TD><TD BGCOLOR=#e8dcc3>....</TD><TD BGCOLOR=#b07283>....</TD><TD BGCOLOR=#c06069>....</TD><TD BGCOLOR=#b25243>....</TD><TD BGCOLOR=#ba4c3f>....</TD><TD BGCOLOR=#c4584a>....</TD><TD BGCOLOR=#c15648>....</TD><TD BGCOLOR=#c54235>....</TD><TD BGCOLOR=#ad3e35>....</TD><TD BGCOLOR=#ae5d54>....</TD><TD BGCOLOR=#bc5d51>....</TD><TD BGCOLOR=#b94e48>....</TD><TD BGCOLOR=#c94c45>....</TD><TD BGCOLOR=#c44642>....</TD><TD BGCOLOR=#ae434a>....</TD><TD BGCOLOR=#8f3d3b>....</TD><TD BGCOLOR=#9f6f5f>....</TD><TD BGCOLOR=#b48f77>....</TD><TD BGCOLOR=#b59479>....</TD><TD BGCOLOR=#b07e5d>....</TD><TD BGCOLOR=#b67b63>....</TD><TD BGCOLOR=#e2afa4>....</TD><TD BGCOLOR=#e7b296>....</TD><TD BGCOLOR=#e6a990>....</TD><TD BGCOLOR=#d49b7e>....</TD><TD BGCOLOR=#d09b79>....</TD><TD BGCOLOR=#d9a07b>....</TD><TD BGCOLOR=#da9c77>....</TD><TD BGCOLOR=#d59b7a>....</TD><TD BGCOLOR=#dea88a>....</TD><TD BGCOLOR=#eaae8c>....</TD><TD BGCOLOR=#e7a791>....</TD><TD BGCOLOR=#e9ada2>....</TD><TD BGCOLOR=#f4bdaa>....</TD><TD BGCOLOR=#fcc0ab>....</TD><TD BGCOLOR=#fdc7ae>....</TD><TD BGCOLOR=#fdc8ac>....</TD><TD BGCOLOR=#eaad90>....</TD></TR>
<TR><TD BGCOLOR=#321203 COLSPAN=2>....</TD><TD BGCOLOR=#2f1504>....</TD><TD BGCOLOR=#2a1603>....</TD><TD BGCOLOR=#271702>....</TD><TD BGCOLOR=#301504>....</TD><TD BGCOLOR=#350d01>....</TD><TD BGCOLOR=#321003>....</TD><TD BGCOLOR=#311505>....</TD><TD BGCOLOR=#311002>....</TD><TD BGCOLOR=#281405>....</TD><TD BGCOLOR=#231204>....</TD><TD BGCOLOR=#261106>....</TD><TD BGCOLOR=#270b02>....</TD><TD BGCOLOR=#341408>....</TD><TD BGCOLOR=#2d1305>....</TD><TD BGCOLOR=#391203>....</TD><TD BGCOLOR=#4c3b2e>....</TD><TD BGCOLOR=#5c584b>....</TD><TD BGCOLOR=#605b41>....</TD><TD BGCOLOR=#6a5d3c>....</TD><TD BGCOLOR=#777558>....</TD><TD BGCOLOR=#6b654e>....</TD><TD BGCOLOR=#6b674b>....</TD><TD BGCOLOR=#656249>....</TD><TD BGCOLOR=#6d5e49>....</TD><TD BGCOLOR=#6b654d>....</TD><TD BGCOLOR=#6a624b>....</TD><TD BGCOLOR=#6d6245>....</TD><TD BGCOLOR=#605c3b>....</TD><TD BGCOLOR=#5c4b36>....</TD><TD BGCOLOR=#57390f>....</TD><TD BGCOLOR=#553607>....</TD><TD BGCOLOR=#5a3a0f>....</TD><TD BGCOLOR=#563510>....</TD><TD BGCOLOR=#593914>....</TD><TD BGCOLOR=#513406>....</TD><TD BGCOLOR=#553906>....</TD><TD BGCOLOR=#5a3b18>....</TD><TD BGCOLOR=#735f4d>....</TD><TD BGCOLOR=#787264>....</TD><TD BGCOLOR=#56453a>....</TD><TD BGCOLOR=#4f1a13>....</TD><TD BGCOLOR=#613219>....</TD><TD BGCOLOR=#663f20>....</TD><TD BGCOLOR=#6a4727>....</TD><TD BGCOLOR=#7c5c3b>....</TD><TD BGCOLOR=#926747>....</TD><TD BGCOLOR=#a16646>....</TD><TD BGCOLOR=#a06344>....</TD><TD BGCOLOR=#9a684c>....</TD><TD BGCOLOR=#916447>....</TD><TD BGCOLOR=#95664a>....</TD><TD BGCOLOR=#c4936e>....</TD><TD BGCOLOR=#c59269>....</TD><TD BGCOLOR=#ba8462>....</TD><TD BGCOLOR=#b27753>....</TD><TD BGCOLOR=#c67c58>....</TD><TD BGCOLOR=#dc815f>....</TD><TD BGCOLOR=#fca886>....</TD><TD BGCOLOR=#fdc29f>....</TD><TD BGCOLOR=#fdcaaa>....</TD><TD BGCOLOR=#fdc1a7>....</TD><TD BGCOLOR=#fcc6a7>....</TD><TD BGCOLOR=#ebb58d>....</TD><TD BGCOLOR=#dfa377>....</TD><TD BGCOLOR=#e2a07e>....</TD><TD BGCOLOR=#f7b992>....</TD><TD BGCOLOR=#fbca9c>....</TD><TD BGCOLOR=#dfb689>....</TD><TD BGCOLOR=#b6825b>....</TD><TD BGCOLOR=#d39a78>....</TD><TD BGCOLOR=#db9d7f>....</TD><TD BGCOLOR=#d18d77>....</TD><TD BGCOLOR=#b8806c>....</TD><TD BGCOLOR=#b9806a>....</TD><TD BGCOLOR=#b39c81>....</TD><TD BGCOLOR=#c6926d>....</TD><TD BGCOLOR=#ebe7cf>....</TD><TD BGCOLOR=#ac7776>....</TD><TD BGCOLOR=#b75047>....</TD><TD BGCOLOR=#b6524b>....</TD><TD BGCOLOR=#bd4946>....</TD><TD BGCOLOR=#b43f37>....</TD><TD BGCOLOR=#ac4031>....</TD><TD BGCOLOR=#b03c34>....</TD><TD BGCOLOR=#b63c36>....</TD><TD BGCOLOR=#ba4739>....</TD><TD BGCOLOR=#be5340>....</TD><TD BGCOLOR=#d07571>....</TD><TD BGCOLOR=#cd6459>....</TD><TD BGCOLOR=#c24f40>....</TD><TD BGCOLOR=#ba4c45>....</TD><TD BGCOLOR=#913539>....</TD><TD BGCOLOR=#885649>....</TD><TD BGCOLOR=#996f5c>....</TD><TD BGCOLOR=#a07863>....</TD><TD BGCOLOR=#a3795d>....</TD><TD BGCOLOR=#b88268>....</TD><TD BGCOLOR=#ddab95>....</TD><TD BGCOLOR=#ebbc92>....</TD><TD BGCOLOR=#f2cea8>....</TD><TD BGCOLOR=#f7d6ab>....</TD><TD BGCOLOR=#fbdeaf>....</TD><TD BGCOLOR=#fcd9ad>....</TD><TD BGCOLOR=#fdcda7>....</TD><TD BGCOLOR=#fbc9a2>....</TD><TD BGCOLOR=#f9c69f>....</TD><TD BGCOLOR=#f0b588>....</TD><TD BGCOLOR=#edb39e>....</TD><TD BGCOLOR=#e9b1b2>....</TD><TD BGCOLOR=#f0b9aa>....</TD><TD BGCOLOR=#fbbbad>....</TD><TD BGCOLOR=#fac7bb>....</TD><TD BGCOLOR=#eec1b0>....</TD><TD BGCOLOR=#cc947d>....</TD></TR>
<TR><TD BGCOLOR=#330e03 COLSPAN=2>....</TD><TD BGCOLOR=#2c1505>....</TD><TD BGCOLOR=#2e1305>....</TD><TD BGCOLOR=#2c1304>....</TD><TD BGCOLOR=#2d1506>....</TD><TD BGCOLOR=#350f04>....</TD><TD BGCOLOR=#311105>....</TD><TD BGCOLOR=#2f1505>....</TD><TD BGCOLOR=#301001>....</TD><TD BGCOLOR=#251202>....</TD><TD BGCOLOR=#231204>....</TD><TD BGCOLOR=#200d03>....</TD><TD BGCOLOR=#250d02>....</TD><TD BGCOLOR=#37190a>....</TD><TD BGCOLOR=#2d1204>....</TD><TD BGCOLOR=#390e02>....</TD><TD BGCOLOR=#52392a>....</TD><TD BGCOLOR=#5a5a49>....</TD><TD BGCOLOR=#5e5e44>....</TD><TD BGCOLOR=#695b3d>....</TD><TD BGCOLOR=#6f745b>....</TD><TD BGCOLOR=#6e674c>....</TD><TD BGCOLOR=#686750>....</TD><TD BGCOLOR=#6a5f4c>....</TD><TD BGCOLOR=#6a5e4b>....</TD><TD BGCOLOR=#64644d>....</TD><TD BGCOLOR=#65664e>....</TD><TD BGCOLOR=#6b5f47>....</TD><TD BGCOLOR=#575333>....</TD><TD BGCOLOR=#594721>....</TD><TD BGCOLOR=#563907>....</TD><TD BGCOLOR=#53360b>....</TD><TD BGCOLOR=#5e3a0f>....</TD><TD BGCOLOR=#58350c>....</TD><TD BGCOLOR=#5f3614>....</TD><TD BGCOLOR=#543607>....</TD><TD BGCOLOR=#573604>....</TD><TD BGCOLOR=#604121>....</TD><TD BGCOLOR=#87705c>....</TD><TD BGCOLOR=#9f917b>....</TD><TD BGCOLOR=#988a83>....</TD><TD BGCOLOR=#684a44>....</TD><TD BGCOLOR=#492615>....</TD><TD BGCOLOR=#5d3122>....</TD><TD BGCOLOR=#643824>....</TD><TD BGCOLOR=#765736>....</TD><TD BGCOLOR=#96734b>....</TD><TD BGCOLOR=#9d6947>....</TD><TD BGCOLOR=#a46c4f>....</TD><TD BGCOLOR=#99664b>....</TD><TD BGCOLOR=#a06b4b>....</TD><TD BGCOLOR=#885c3f>....</TD><TD BGCOLOR=#a57d5f>....</TD><TD BGCOLOR=#b58965>....</TD><TD BGCOLOR=#b58661>....</TD><TD BGCOLOR=#ae8061>....</TD><TD BGCOLOR=#b97555>....</TD><TD BGCOLOR=#cf7b5b>....</TD><TD BGCOLOR=#f4b192>....</TD><TD BGCOLOR=#fad4b1>....</TD><TD BGCOLOR=#fac39f>....</TD><TD BGCOLOR=#fdb8a1>....</TD><TD BGCOLOR=#fdbe9f>....</TD><TD BGCOLOR=#f6b999>....</TD><TD BGCOLOR=#f3b58d>....</TD><TD BGCOLOR=#f6b68c>....</TD><TD BGCOLOR=#f4b687>....</TD><TD BGCOLOR=#efb47f>....</TD><TD BGCOLOR=#e5a976>....</TD><TD BGCOLOR=#cdb198>....</TD><TD BGCOLOR=#cd9c80>....</TD><TD BGCOLOR=#dcaf8b>....</TD><TD BGCOLOR=#e2a78e>....</TD><TD BGCOLOR=#bd8673>....</TD><TD BGCOLOR=#b88874>....</TD><TD BGCOLOR=#be9180>....</TD><TD BGCOLOR=#9f5a45>....</TD><TD BGCOLOR=#a35e50>....</TD><TD BGCOLOR=#ae584b>....</TD><TD BGCOLOR=#c55641>....</TD><TD BGCOLOR=#bb4c3f>....</TD><TD BGCOLOR=#ba493d>....</TD><TD BGCOLOR=#b85847>....</TD><TD BGCOLOR=#bd7268>....</TD><TD BGCOLOR=#c8766e>....</TD><TD BGCOLOR=#ba453b>....</TD><TD BGCOLOR=#c44936>....</TD><TD BGCOLOR=#bd4b35>....</TD><TD BGCOLOR=#bc6860>....</TD><TD BGCOLOR=#c05f58>....</TD><TD BGCOLOR=#bb5045>....</TD><TD BGCOLOR=#b74f41>....</TD><TD BGCOLOR=#9e443e>....</TD><TD BGCOLOR=#805344>....</TD><TD BGCOLOR=#7f453b>....</TD><TD BGCOLOR=#9b6153>....</TD><TD BGCOLOR=#d19580>....</TD><TD BGCOLOR=#f0ae93>....</TD><TD BGCOLOR=#fcc9ac>....</TD><TD BGCOLOR=#fdc7a4>....</TD><TD BGCOLOR=#fbd3aa>....</TD><TD BGCOLOR=#fedbb7>....</TD><TD BGCOLOR=#fcd6ab>....</TD><TD BGCOLOR=#fbcea6>....</TD><TD BGCOLOR=#fdc6a9>....</TD><TD BGCOLOR=#f3b69b>....</TD><TD BGCOLOR=#f5bca0>....</TD><TD BGCOLOR=#e6ae90>....</TD><TD BGCOLOR=#dfa58d>....</TD><TD BGCOLOR=#d7a09d>....</TD><TD BGCOLOR=#d49b91>....</TD><TD BGCOLOR=#df9a94>....</TD><TD BGCOLOR=#d49c99>....</TD><TD BGCOLOR=#bf9086>....</TD><TD BGCOLOR=#a7725d>....</TD></TR>
<TR><TD BGCOLOR=#320e05 COLSPAN=2>....</TD><TD BGCOLOR=#2c1406>....</TD><TD BGCOLOR=#331208>....</TD><TD BGCOLOR=#301207>....</TD><TD BGCOLOR=#2c1104>....</TD><TD BGCOLOR=#360e06>....</TD><TD BGCOLOR=#351208>....</TD><TD BGCOLOR=#2f1304>....</TD><TD BGCOLOR=#2e0e00>....</TD><TD BGCOLOR=#241001>....</TD><TD BGCOLOR=#210f02>....</TD><TD BGCOLOR=#210e05>....</TD><TD BGCOLOR=#250e03>....</TD><TD BGCOLOR=#351908>....</TD><TD BGCOLOR=#2f1404>....</TD><TD BGCOLOR=#3c1002>....</TD><TD BGCOLOR=#543927>....</TD><TD BGCOLOR=#595c46>....</TD><TD BGCOLOR=#5d5f46>....</TD><TD BGCOLOR=#695b3d>....</TD><TD BGCOLOR=#6b745d>....</TD><TD BGCOLOR=#6d6447>....</TD><TD BGCOLOR=#676653>....</TD><TD BGCOLOR=#6c5c4d>....</TD><TD BGCOLOR=#69604d>....</TD><TD BGCOLOR=#63664f>....</TD><TD BGCOLOR=#5f654c>....</TD><TD BGCOLOR=#645d44>....</TD><TD BGCOLOR=#555231>....</TD><TD BGCOLOR=#554417>....</TD><TD BGCOLOR=#4f3606>....</TD><TD BGCOLOR=#553812>....</TD><TD BGCOLOR=#5f380d>....</TD><TD BGCOLOR=#593509>....</TD><TD BGCOLOR=#623513>....</TD><TD BGCOLOR=#563406>....</TD><TD BGCOLOR=#5b3704>....</TD><TD BGCOLOR=#715333>....</TD><TD BGCOLOR=#9c836e>....</TD><TD BGCOLOR=#b9a689>....</TD><TD BGCOLOR=#bcaba4>....</TD><TD BGCOLOR=#927f74>....</TD><TD BGCOLOR=#6d5d4a>....</TD><TD BGCOLOR=#59392f>....</TD><TD BGCOLOR=#5e3528>....</TD><TD BGCOLOR=#603f22>....</TD><TD BGCOLOR=#835f37>....</TD><TD BGCOLOR=#a27351>....</TD><TD BGCOLOR=#aa7457>....</TD><TD BGCOLOR=#a66f53>....</TD><TD BGCOLOR=#a26943>....</TD><TD BGCOLOR=#8e6341>....</TD><TD BGCOLOR=#a38068>....</TD><TD BGCOLOR=#aa8167>....</TD><TD BGCOLOR=#a0724d>....</TD><TD BGCOLOR=#a67d5c>....</TD><TD BGCOLOR=#bc7e57>....</TD><TD BGCOLOR=#d4835f>....</TD><TD BGCOLOR=#ea9f87>....</TD><TD BGCOLOR=#f8c7ad>....</TD><TD BGCOLOR=#f9bb97>....</TD><TD BGCOLOR=#fcaf96>....</TD><TD BGCOLOR=#f9ac88>....</TD><TD BGCOLOR=#f0a086>....</TD><TD BGCOLOR=#f4a482>....</TD><TD BGCOLOR=#efa67b>....</TD><TD BGCOLOR=#ebab7d>....</TD><TD BGCOLOR=#ebad7b>....</TD><TD BGCOLOR=#d79767>....</TD><TD BGCOLOR=#d0bea8>....</TD><TD BGCOLOR=#ac7c64>....</TD><TD BGCOLOR=#d4b28c>....</TD><TD BGCOLOR=#d6a082>....</TD><TD BGCOLOR=#daaa93>....</TD><TD BGCOLOR=#b48571>....</TD><TD BGCOLOR=#9a4e47>....</TD><TD BGCOLOR=#9d4c45>....</TD><TD BGCOLOR=#aa5147>....</TD><TD BGCOLOR=#aa5045>....</TD><TD BGCOLOR=#b04938>....</TD><TD BGCOLOR=#b74a38>....</TD><TD BGCOLOR=#b84a39>....</TD><TD BGCOLOR=#af533f>....</TD><TD BGCOLOR=#ab5c57>....</TD><TD BGCOLOR=#ae5a54>....</TD><TD BGCOLOR=#b03c33>....</TD><TD BGCOLOR=#ac3e2d>....</TD><TD BGCOLOR=#ab4434>....</TD><TD BGCOLOR=#ad4137>....</TD><TD BGCOLOR=#b24845>....</TD><TD BGCOLOR=#b14545>....</TD><TD BGCOLOR=#b4433e>....</TD><TD BGCOLOR=#a3463d>....</TD><TD BGCOLOR=#774435>....</TD><TD BGCOLOR=#7f3b35>....</TD><TD BGCOLOR=#b17568>....</TD><TD BGCOLOR=#d68f7f>....</TD><TD BGCOLOR=#f5af98>....</TD><TD BGCOLOR=#fbc3aa>....</TD><TD BGCOLOR=#f7b9a2>....</TD><TD BGCOLOR=#f0b79a>....</TD><TD BGCOLOR=#f9c4b1>....</TD><TD BGCOLOR=#f9c4a8>....</TD><TD BGCOLOR=#f9bda2>....</TD><TD BGCOLOR=#fec1af>....</TD><TD BGCOLOR=#eba896>....</TD><TD BGCOLOR=#dfa58e>....</TD><TD BGCOLOR=#d3a08e>....</TD><TD BGCOLOR=#d59d84>....</TD><TD BGCOLOR=#d8a59a>....</TD><TD BGCOLOR=#c89287>....</TD><TD BGCOLOR=#ba7a76>....</TD><TD BGCOLOR=#ab7271>....</TD><TD BGCOLOR=#a06e64>....</TD><TD BGCOLOR=#895641>....</TD></TR>
<TR><TD BGCOLOR=#2e1206 COLSPAN=2>....</TD><TD BGCOLOR=#2a1204>....</TD><TD BGCOLOR=#341409>....</TD><TD BGCOLOR=#2d1608>....</TD><TD BGCOLOR=#290e02>....</TD><TD BGCOLOR=#340c04>....</TD><TD BGCOLOR=#36130a>....</TD><TD BGCOLOR=#2c1203>....</TD><TD BGCOLOR=#301101>....</TD><TD BGCOLOR=#260d01>....</TD><TD BGCOLOR=#221003>....</TD><TD BGCOLOR=#241208>....</TD><TD BGCOLOR=#250f03>....</TD><TD BGCOLOR=#371b0a>....</TD><TD BGCOLOR=#341004>....</TD><TD BGCOLOR=#421406>....</TD><TD BGCOLOR=#513b29>....</TD><TD BGCOLOR=#585a44>....</TD><TD BGCOLOR=#625e47>....</TD><TD BGCOLOR=#68593c>....</TD><TD BGCOLOR=#6c765e>....</TD><TD BGCOLOR=#6d6447>....</TD><TD BGCOLOR=#676653>....</TD><TD BGCOLOR=#675d4b>....</TD><TD BGCOLOR=#68614d>....</TD><TD BGCOLOR=#65654f>....</TD><TD BGCOLOR=#5e6049>....</TD><TD BGCOLOR=#5f5a3e>....</TD><TD BGCOLOR=#564e29>....</TD><TD BGCOLOR=#513f14>....</TD><TD BGCOLOR=#4d350b>....</TD><TD BGCOLOR=#533710>....</TD><TD BGCOLOR=#5e380d>....</TD><TD BGCOLOR=#593509>....</TD><TD BGCOLOR=#5c3513>....</TD><TD BGCOLOR=#593409>....</TD><TD BGCOLOR=#583807>....</TD><TD BGCOLOR=#816a4b>....</TD><TD BGCOLOR=#a9907a>....</TD><TD BGCOLOR=#b9a686>....</TD><TD BGCOLOR=#b7a299>....</TD><TD BGCOLOR=#94786c>....</TD><TD BGCOLOR=#b1a994>....</TD><TD BGCOLOR=#9f9587>....</TD><TD BGCOLOR=#6d584c>....</TD><TD BGCOLOR=#553523>....</TD><TD BGCOLOR=#6b4422>....</TD><TD BGCOLOR=#906543>....</TD><TD BGCOLOR=#a2704f>....</TD><TD BGCOLOR=#a87050>....</TD><TD BGCOLOR=#a67049>....</TD><TD BGCOLOR=#a37454>....</TD><TD BGCOLOR=#8c674f>....</TD><TD BGCOLOR=#b48d75>....</TD><TD BGCOLOR=#a06d4e>....</TD><TD BGCOLOR=#8e603c>....</TD><TD BGCOLOR=#c1885c>....</TD><TD BGCOLOR=#eda37d>....</TD><TD BGCOLOR=#f5a992>....</TD><TD BGCOLOR=#f5c2a9>....</TD><TD BGCOLOR=#f6c099>....</TD><TD BGCOLOR=#f5a787>....</TD><TD BGCOLOR=#faa77e>....</TD><TD BGCOLOR=#fead93>....</TD><TD BGCOLOR=#f8a486>....</TD><TD BGCOLOR=#f2a77c>....</TD><TD BGCOLOR=#eea87f>....</TD><TD BGCOLOR=#e4a780>....</TD><TD BGCOLOR=#d39f7a>....</TD><TD BGCOLOR=#9b8263>....</TD><TD BGCOLOR=#a27160>....</TD><TD BGCOLOR=#d6b295>....</TD><TD BGCOLOR=#dca383>....</TD><TD BGCOLOR=#d0a88c>....</TD><TD BGCOLOR=#b88670>....</TD><TD BGCOLOR=#a94d48>....</TD><TD BGCOLOR=#a44242>....</TD><TD BGCOLOR=#9e3f41>....</TD><TD BGCOLOR=#993d3c>....</TD><TD BGCOLOR=#98332b>....</TD><TD BGCOLOR=#952f25>....</TD><TD BGCOLOR=#9a312a>....</TD><TD BGCOLOR=#9a3028>....</TD><TD BGCOLOR=#932826>....</TD><TD BGCOLOR=#993532>....</TD><TD BGCOLOR=#a32b2a>....</TD><TD BGCOLOR=#922921>....</TD><TD BGCOLOR=#983b36>....</TD><TD BGCOLOR=#95442d>....</TD><TD BGCOLOR=#9c473d>....</TD><TD BGCOLOR=#b86562>....</TD><TD BGCOLOR=#b56958>....</TD><TD BGCOLOR=#a13a37>....</TD><TD BGCOLOR=#6f291d>....</TD><TD BGCOLOR=#7e332c>....</TD><TD BGCOLOR=#a57466>....</TD><TD BGCOLOR=#d09686>....</TD><TD BGCOLOR=#eab0a1>....</TD><TD BGCOLOR=#efb1a3>....</TD><TD BGCOLOR=#e9b09c>....</TD><TD BGCOLOR=#e0a893>....</TD><TD BGCOLOR=#e1a393>....</TD><TD BGCOLOR=#f5b4a2>....</TD><TD BGCOLOR=#f0ae9c>....</TD><TD BGCOLOR=#f3b4a3>....</TD><TD BGCOLOR=#e3a994>....</TD><TD BGCOLOR=#d1997d>....</TD><TD BGCOLOR=#c79786>....</TD><TD BGCOLOR=#c18c75>....</TD><TD BGCOLOR=#c18c81>....</TD><TD BGCOLOR=#bb8173>....</TD><TD BGCOLOR=#b07971>....</TD><TD BGCOLOR=#a46e65>....</TD><TD BGCOLOR=#9b6554>....</TD><TD BGCOLOR=#8c5843>....</TD></TR>
<TR><TD BGCOLOR=#271204 COLSPAN=2>....</TD><TD BGCOLOR=#280f02>....</TD><TD BGCOLOR=#301106>....</TD><TD BGCOLOR=#261606>....</TD><TD BGCOLOR=#241203>....</TD><TD BGCOLOR=#301106>....</TD><TD BGCOLOR=#2e1508>....</TD><TD BGCOLOR=#281604>....</TD><TD BGCOLOR=#2c0e00>....</TD><TD BGCOLOR=#2a0d00>....</TD><TD BGCOLOR=#251306>....</TD><TD BGCOLOR=#231208>....</TD><TD BGCOLOR=#210d01>....</TD><TD BGCOLOR=#361c0a>....</TD><TD BGCOLOR=#380b02>....</TD><TD BGCOLOR=#46180a>....</TD><TD BGCOLOR=#503c29>....</TD><TD BGCOLOR=#585944>....</TD><TD BGCOLOR=#655c47>....</TD><TD BGCOLOR=#6a5a3d>....</TD><TD BGCOLOR=#6b745d>....</TD><TD BGCOLOR=#6d6448>....</TD><TD BGCOLOR=#666653>....</TD><TD BGCOLOR=#655f4c>....</TD><TD BGCOLOR=#645f4b>....</TD><TD BGCOLOR=#67644f>....</TD><TD BGCOLOR=#5c5843>....</TD><TD BGCOLOR=#605537>....</TD><TD BGCOLOR=#58451e>....</TD><TD BGCOLOR=#543611>....</TD><TD BGCOLOR=#513412>....</TD><TD BGCOLOR=#52360f>....</TD><TD BGCOLOR=#5f380d>....</TD><TD BGCOLOR=#5c370b>....</TD><TD BGCOLOR=#5c3a17>....</TD><TD BGCOLOR=#5b340d>....</TD><TD BGCOLOR=#624615>....</TD><TD BGCOLOR=#917f61>....</TD><TD BGCOLOR=#b39b84>....</TD><TD BGCOLOR=#b9a683>....</TD><TD BGCOLOR=#a88f84>....</TD><TD BGCOLOR=#a78479>....</TD><TD BGCOLOR=#ceb9a9>....</TD><TD BGCOLOR=#d2ccc0>....</TD><TD BGCOLOR=#ccc2ba>....</TD><TD BGCOLOR=#4b2d26>....</TD><TD BGCOLOR=#5c3117>....</TD><TD BGCOLOR=#7b5332>....</TD><TD BGCOLOR=#946441>....</TD><TD BGCOLOR=#a46b49>....</TD><TD BGCOLOR=#a47155>....</TD><TD BGCOLOR=#a2684f>....</TD><TD BGCOLOR=#9c644a>....</TD><TD BGCOLOR=#a87458>....</TD><TD BGCOLOR=#b47d62>....</TD><TD BGCOLOR=#9d6a4b>....</TD><TD BGCOLOR=#a66e50>....</TD><TD BGCOLOR=#d69476>....</TD><TD BGCOLOR=#eea38b>....</TD><TD BGCOLOR=#fbbea8>....</TD><TD BGCOLOR=#fcbc99>....</TD><TD BGCOLOR=#fcab8e>....</TD><TD BGCOLOR=#faaa84>....</TD><TD BGCOLOR=#eba28a>....</TD><TD BGCOLOR=#e4a78b>....</TD><TD BGCOLOR=#df9f79>....</TD><TD BGCOLOR=#df9a77>....</TD><TD BGCOLOR=#d89877>....</TD><TD BGCOLOR=#c99773>....</TD><TD BGCOLOR=#947042>....</TD><TD BGCOLOR=#c78d7b>....</TD><TD BGCOLOR=#d1a388>....</TD><TD BGCOLOR=#de9974>....</TD><TD BGCOLOR=#cca987>....</TD><TD BGCOLOR=#a97b61>....</TD><TD BGCOLOR=#a34941>....</TD><TD BGCOLOR=#a54643>....</TD><TD BGCOLOR=#943c3c>....</TD><TD BGCOLOR=#812526>....</TD><TD BGCOLOR=#9a2f2a>....</TD><TD BGCOLOR=#922a25>....</TD><TD BGCOLOR=#9d373a>....</TD><TD BGCOLOR=#a33837>....</TD><TD BGCOLOR=#af3f39>....</TD><TD BGCOLOR=#a23b32>....</TD><TD BGCOLOR=#b63a37>....</TD><TD BGCOLOR=#a2322d>....</TD><TD BGCOLOR=#a43d3f>....</TD><TD BGCOLOR=#a44d3c>....</TD><TD BGCOLOR=#b9605f>....</TD><TD BGCOLOR=#d77f81>....</TD><TD BGCOLOR=#b65743>....</TD><TD BGCOLOR=#a73437>....</TD><TD BGCOLOR=#883128>....</TD><TD BGCOLOR=#6d1d17>....</TD><TD BGCOLOR=#966f61>....</TD><TD BGCOLOR=#c59685>....</TD><TD BGCOLOR=#daa89f>....</TD><TD BGCOLOR=#e8a6a0>....</TD><TD BGCOLOR=#e1ad99>....</TD><TD BGCOLOR=#dca68e>....</TD><TD BGCOLOR=#de9985>....</TD><TD BGCOLOR=#de9684>....</TD><TD BGCOLOR=#d99681>....</TD><TD BGCOLOR=#cb9079>....</TD><TD BGCOLOR=#be8b74>....</TD><TD BGCOLOR=#c38c77>....</TD><TD BGCOLOR=#c08b82>....</TD><TD BGCOLOR=#c68978>....</TD><TD BGCOLOR=#ca8b81>....</TD><TD BGCOLOR=#d38c7e>....</TD><TD BGCOLOR=#d39789>....</TD><TD BGCOLOR=#d69481>....</TD><TD BGCOLOR=#c17b60>....</TD><TD BGCOLOR=#ae6c53>....</TD></TR>
<TR><TD BGCOLOR=#231507 COLSPAN=2>....</TD><TD BGCOLOR=#2c1004>....</TD><TD BGCOLOR=#2e1304>....</TD><TD BGCOLOR=#241802>....</TD><TD BGCOLOR=#271402>....</TD><TD BGCOLOR=#2b1002>....</TD><TD BGCOLOR=#2c1906>....</TD><TD BGCOLOR=#251704>....</TD><TD BGCOLOR=#2e1105>....</TD><TD BGCOLOR=#290a01>....</TD><TD BGCOLOR=#261309>....</TD><TD BGCOLOR=#1c1208>....</TD><TD BGCOLOR=#1f0a02>....</TD><TD BGCOLOR=#31170a>....</TD><TD BGCOLOR=#2b1104>....</TD><TD BGCOLOR=#3e1809>....</TD><TD BGCOLOR=#523d2b>....</TD><TD BGCOLOR=#5c5a43>....</TD><TD BGCOLOR=#605943>....</TD><TD BGCOLOR=#675d40>....</TD><TD BGCOLOR=#6e735d>....</TD><TD BGCOLOR=#6d634b>....</TD><TD BGCOLOR=#68674d>....</TD><TD BGCOLOR=#69604d>....</TD><TD BGCOLOR=#665d4a>....</TD><TD BGCOLOR=#6b6551>....</TD><TD BGCOLOR=#5b5842>....</TD><TD BGCOLOR=#5e4f34>....</TD><TD BGCOLOR=#583e1a>....</TD><TD BGCOLOR=#57320f>....</TD><TD BGCOLOR=#54320e>....</TD><TD BGCOLOR=#503809>....</TD><TD BGCOLOR=#5b3c0e>....</TD><TD BGCOLOR=#573408>....</TD><TD BGCOLOR=#5d3916>....</TD><TD BGCOLOR=#583110>....</TD><TD BGCOLOR=#6f532e>....</TD><TD BGCOLOR=#9c8770>....</TD><TD BGCOLOR=#b79d85>....</TD><TD BGCOLOR=#b0a485>....</TD><TD BGCOLOR=#998072>....</TD><TD BGCOLOR=#b49c93>....</TD><TD BGCOLOR=#dab7a6>....</TD><TD BGCOLOR=#ebcec8>....</TD><TD BGCOLOR=#dee9da>....</TD><TD BGCOLOR=#73483d>....</TD><TD BGCOLOR=#674a2f>....</TD><TD BGCOLOR=#693d21>....</TD><TD BGCOLOR=#845532>....</TD><TD BGCOLOR=#99724d>....</TD><TD BGCOLOR=#9e6d61>....</TD><TD BGCOLOR=#9a634e>....</TD><TD BGCOLOR=#8f5c3f>....</TD><TD BGCOLOR=#946b4b>....</TD><TD BGCOLOR=#a97d5b>....</TD><TD BGCOLOR=#a87953>....</TD><TD BGCOLOR=#a96e54>....</TD><TD BGCOLOR=#d2806a>....</TD><TD BGCOLOR=#eb9579>....</TD><TD BGCOLOR=#fbaa8d>....</TD><TD BGCOLOR=#fcb391>....</TD><TD BGCOLOR=#fdbda0>....</TD><TD BGCOLOR=#f7b692>....</TD><TD BGCOLOR=#f0ab87>....</TD><TD BGCOLOR=#d29278>....</TD><TD BGCOLOR=#c68d62>....</TD><TD BGCOLOR=#d2926c>....</TD><TD BGCOLOR=#dd9d7b>....</TD><TD BGCOLOR=#cc936c>....</TD><TD BGCOLOR=#ca8f61>....</TD><TD BGCOLOR=#e6a883>....</TD><TD BGCOLOR=#e09f7e>....</TD><TD BGCOLOR=#de9475>....</TD><TD BGCOLOR=#c6997a>....</TD><TD BGCOLOR=#a17a60>....</TD><TD BGCOLOR=#b97063>....</TD><TD BGCOLOR=#a1463a>....</TD><TD BGCOLOR=#9b473e>....</TD><TD BGCOLOR=#983038>....</TD><TD BGCOLOR=#ae3f38>....</TD><TD BGCOLOR=#ad3d2e>....</TD><TD BGCOLOR=#9f3838>....</TD><TD BGCOLOR=#a13c41>....</TD><TD BGCOLOR=#ad413d>....</TD><TD BGCOLOR=#b04435>....</TD><TD BGCOLOR=#b53b36>....</TD><TD BGCOLOR=#b53636>....</TD><TD BGCOLOR=#ad3a32>....</TD><TD BGCOLOR=#9c4230>....</TD><TD BGCOLOR=#a84b48>....</TD><TD BGCOLOR=#b64f50>....</TD><TD BGCOLOR=#b3493b>....</TD><TD BGCOLOR=#a23d34>....</TD><TD BGCOLOR=#a04034>....</TD><TD BGCOLOR=#782e23>....</TD><TD BGCOLOR=#865249>....</TD><TD BGCOLOR=#b48a72>....</TD><TD BGCOLOR=#d1a297>....</TD><TD BGCOLOR=#e7ad9f>....</TD><TD BGCOLOR=#e8a992>....</TD><TD BGCOLOR=#d69e8b>....</TD><TD BGCOLOR=#cf907f>....</TD><TD BGCOLOR=#c5816e>....</TD><TD BGCOLOR=#c38374>....</TD><TD BGCOLOR=#bd856e>....</TD><TD BGCOLOR=#c68c74>....</TD><TD BGCOLOR=#d59486>....</TD><TD BGCOLOR=#dd9c99>....</TD><TD BGCOLOR=#dda095>....</TD><TD BGCOLOR=#dfa18c>....</TD><TD BGCOLOR=#f2aa8c>....</TD><TD BGCOLOR=#f1ad95>....</TD><TD BGCOLOR=#f2a58b>....</TD><TD BGCOLOR=#e08f74>....</TD><TD BGCOLOR=#cb866d>....</TD></TR>
<TR><TD BGCOLOR=#241307 COLSPAN=2>....</TD><TD BGCOLOR=#2c0f04>....</TD><TD BGCOLOR=#2e1404>....</TD><TD BGCOLOR=#261601>....</TD><TD BGCOLOR=#291302>....</TD><TD BGCOLOR=#2a0e00>....</TD><TD BGCOLOR=#301304>....</TD><TD BGCOLOR=#2c1304>....</TD><TD BGCOLOR=#2c1107>....</TD><TD BGCOLOR=#2a0d04>....</TD><TD BGCOLOR=#29120b>....</TD><TD BGCOLOR=#201109>....</TD><TD BGCOLOR=#220a03>....</TD><TD BGCOLOR=#2e150a>....</TD><TD BGCOLOR=#281104>....</TD><TD BGCOLOR=#462619>....</TD><TD BGCOLOR=#4f3c29>....</TD><TD BGCOLOR=#5e5b40>....</TD><TD BGCOLOR=#5f5940>....</TD><TD BGCOLOR=#635b3e>....</TD><TD BGCOLOR=#6e725d>....</TD><TD BGCOLOR=#695e48>....</TD><TD BGCOLOR=#666549>....</TD><TD BGCOLOR=#675c4a>....</TD><TD BGCOLOR=#675f4c>....</TD><TD BGCOLOR=#67624e>....</TD><TD BGCOLOR=#5e5843>....</TD><TD BGCOLOR=#5d4d33>....</TD><TD BGCOLOR=#593b1a>....</TD><TD BGCOLOR=#593310>....</TD><TD BGCOLOR=#51300a>....</TD><TD BGCOLOR=#513406>....</TD><TD BGCOLOR=#5d3d10>....</TD><TD BGCOLOR=#58360a>....</TD><TD BGCOLOR=#5b3913>....</TD><TD BGCOLOR=#543010>....</TD><TD BGCOLOR=#7b6242>....</TD><TD BGCOLOR=#a18d75>....</TD><TD BGCOLOR=#b69982>....</TD><TD BGCOLOR=#af9b81>....</TD><TD BGCOLOR=#97816e>....</TD><TD BGCOLOR=#baaa9b>....</TD><TD BGCOLOR=#debdaa>....</TD><TD BGCOLOR=#ecc6be>....</TD><TD BGCOLOR=#dde0cf>....</TD><TD BGCOLOR=#9f7e73>....</TD><TD BGCOLOR=#714c36>....</TD><TD BGCOLOR=#74462d>....</TD><TD BGCOLOR=#754626>....</TD><TD BGCOLOR=#8f6847>....</TD><TD BGCOLOR=#a5806e>....</TD><TD BGCOLOR=#9c6d53>....</TD><TD BGCOLOR=#905f42>....</TD><TD BGCOLOR=#8c6447>....</TD><TD BGCOLOR=#966d4d>....</TD><TD BGCOLOR=#a37653>....</TD><TD BGCOLOR=#a87154>....</TD><TD BGCOLOR=#c8775e>....</TD><TD BGCOLOR=#e59375>....</TD><TD BGCOLOR=#fdb393>....</TD><TD BGCOLOR=#fbbe9a>....</TD><TD BGCOLOR=#fbb99b>....</TD><TD BGCOLOR=#fab693>....</TD><TD BGCOLOR=#eba57d>....</TD><TD BGCOLOR=#e8a787>....</TD><TD BGCOLOR=#e3a87e>....</TD><TD BGCOLOR=#ecab85>....</TD><TD BGCOLOR=#e4a27a>....</TD><TD BGCOLOR=#e0a573>....</TD><TD BGCOLOR=#eda478>....</TD><TD BGCOLOR=#e9a87c>....</TD><TD BGCOLOR=#f3b48b>....</TD><TD BGCOLOR=#f4b38c>....</TD><TD BGCOLOR=#eab98f>....</TD><TD BGCOLOR=#dcbb94>....</TD><TD BGCOLOR=#d29f7f>....</TD><TD BGCOLOR=#97452f>....</TD><TD BGCOLOR=#ad4d45>....</TD><TD BGCOLOR=#aa5052>....</TD><TD BGCOLOR=#ad483f>....</TD><TD BGCOLOR=#b23c31>....</TD><TD BGCOLOR=#af4443>....</TD><TD BGCOLOR=#c7686a>....</TD><TD BGCOLOR=#ac584d>....</TD><TD BGCOLOR=#a85a46>....</TD><TD BGCOLOR=#ab4e44>....</TD><TD BGCOLOR=#a53b38>....</TD><TD BGCOLOR=#a7483c>....</TD><TD BGCOLOR=#9b3f2d>....</TD><TD BGCOLOR=#ab4845>....</TD><TD BGCOLOR=#b14949>....</TD><TD BGCOLOR=#a83b31>....</TD><TD BGCOLOR=#af4a42>....</TD><TD BGCOLOR=#82261d>....</TD><TD BGCOLOR=#a66a5d>....</TD><TD BGCOLOR=#996c5f>....</TD><TD BGCOLOR=#9b735e>....</TD><TD BGCOLOR=#ba8579>....</TD><TD BGCOLOR=#d79886>....</TD><TD BGCOLOR=#e59980>....</TD><TD BGCOLOR=#dc9a87>....</TD><TD BGCOLOR=#dd9a86>....</TD><TD BGCOLOR=#e39e87>....</TD><TD BGCOLOR=#e5a38c>....</TD><TD BGCOLOR=#f0b696>....</TD><TD BGCOLOR=#f7b79a>....</TD><TD BGCOLOR=#f9b6a2>....</TD><TD BGCOLOR=#f2b3a0>....</TD><TD BGCOLOR=#ecb39c>....</TD><TD BGCOLOR=#f0b69b>....</TD><TD BGCOLOR=#f4b498>....</TD><TD BGCOLOR=#edb099>....</TD><TD BGCOLOR=#f3ab93>....</TD><TD BGCOLOR=#e69d84>....</TD><TD BGCOLOR=#be816b>....</TD></TR>
<TR><TD BGCOLOR=#260d03 COLSPAN=2>....</TD><TD BGCOLOR=#2b1004>....</TD><TD BGCOLOR=#2a0f01>....</TD><TD BGCOLOR=#2b1403>....</TD><TD BGCOLOR=#270f02>....</TD><TD BGCOLOR=#270e02>....</TD><TD BGCOLOR=#2d0e03>....</TD><TD BGCOLOR=#2f1005>....</TD><TD BGCOLOR=#281204>....</TD><TD BGCOLOR=#250e03>....</TD><TD BGCOLOR=#290e08>....</TD><TD BGCOLOR=#28100a>....</TD><TD BGCOLOR=#210601>....</TD><TD BGCOLOR=#2d160a>....</TD><TD BGCOLOR=#2d1206>....</TD><TD BGCOLOR=#462d25>....</TD><TD BGCOLOR=#4a3e2c>....</TD><TD BGCOLOR=#5d5838>....</TD><TD BGCOLOR=#5f5a3f>....</TD><TD BGCOLOR=#635c3f>....</TD><TD BGCOLOR=#6d715c>....</TD><TD BGCOLOR=#6b604a>....</TD><TD BGCOLOR=#67664a>....</TD><TD BGCOLOR=#6a5b4b>....</TD><TD BGCOLOR=#635e4a>....</TD><TD BGCOLOR=#63614c>....</TD><TD BGCOLOR=#5d5440>....</TD><TD BGCOLOR=#5e4b31>....</TD><TD BGCOLOR=#5b3617>....</TD><TD BGCOLOR=#54310d>....</TD><TD BGCOLOR=#4e310b>....</TD><TD BGCOLOR=#57310b>....</TD><TD BGCOLOR=#5b3710>....</TD><TD BGCOLOR=#56340c>....</TD><TD BGCOLOR=#5b3c15>....</TD><TD BGCOLOR=#563616>....</TD><TD BGCOLOR=#877155>....</TD><TD BGCOLOR=#a19178>....</TD><TD BGCOLOR=#ae977e>....</TD><TD BGCOLOR=#ac9079>....</TD><TD BGCOLOR=#a7927a>....</TD><TD BGCOLOR=#c6b19b>....</TD><TD BGCOLOR=#d6bda7>....</TD><TD BGCOLOR=#eec7b6>....</TD><TD BGCOLOR=#e5d1c2>....</TD><TD BGCOLOR=#bab2a9>....</TD><TD BGCOLOR=#683522>....</TD><TD BGCOLOR=#845f45>....</TD><TD BGCOLOR=#744f33>....</TD><TD BGCOLOR=#74452c>....</TD><TD BGCOLOR=#8f6b50>....</TD><TD BGCOLOR=#a77759>....</TD><TD BGCOLOR=#ab765a>....</TD><TD BGCOLOR=#8d6148>....</TD><TD BGCOLOR=#80543c>....</TD><TD BGCOLOR=#966a4f>....</TD><TD BGCOLOR=#ab7d5c>....</TD><TD BGCOLOR=#c07a5b>....</TD><TD BGCOLOR=#d98f70>....</TD><TD BGCOLOR=#f8ab8e>....</TD><TD BGCOLOR=#f9b394>....</TD><TD BGCOLOR=#f9ac91>....</TD><TD BGCOLOR=#f4a689>....</TD><TD BGCOLOR=#e49a7b>....</TD><TD BGCOLOR=#e0987a>....</TD><TD BGCOLOR=#e2a17b>....</TD><TD BGCOLOR=#eaa482>....</TD><TD BGCOLOR=#e8a17c>....</TD><TD BGCOLOR=#dfa170>....</TD><TD BGCOLOR=#ea9e7b>....</TD><TD BGCOLOR=#e6a37c>....</TD><TD BGCOLOR=#e5a67c>....</TD><TD BGCOLOR=#d7966b>....</TD><TD BGCOLOR=#d6a075>....</TD><TD BGCOLOR=#d8b48c>....</TD><TD BGCOLOR=#d2ac85>....</TD><TD BGCOLOR=#b26c4d>....</TD><TD BGCOLOR=#a84037>....</TD><TD BGCOLOR=#bb6763>....</TD><TD BGCOLOR=#ab4a43>....</TD><TD BGCOLOR=#b2433d>....</TD><TD BGCOLOR=#ae4543>....</TD><TD BGCOLOR=#a23e3d>....</TD><TD BGCOLOR=#b46a5d>....</TD><TD BGCOLOR=#b86459>....</TD><TD BGCOLOR=#b24641>....</TD><TD BGCOLOR=#ac3834>....</TD><TD BGCOLOR=#a63c38>....</TD><TD BGCOLOR=#a93a30>....</TD><TD BGCOLOR=#aa403f>....</TD><TD BGCOLOR=#b4484a>....</TD><TD BGCOLOR=#b34138>....</TD><TD BGCOLOR=#a64541>....</TD><TD BGCOLOR=#7e2f2a>....</TD><TD BGCOLOR=#9a6d5e>....</TD><TD BGCOLOR=#ad8773>....</TD><TD BGCOLOR=#a06f5c>....</TD><TD BGCOLOR=#b37165>....</TD><TD BGCOLOR=#d79182>....</TD><TD BGCOLOR=#f1a793>....</TD><TD BGCOLOR=#fabca6>....</TD><TD BGCOLOR=#fdc2ab>....</TD><TD BGCOLOR=#fcc4a7>....</TD><TD BGCOLOR=#fcc2a8>....</TD><TD BGCOLOR=#fcc1a5>....</TD><TD BGCOLOR=#fabda4>....</TD><TD BGCOLOR=#f4b99f>....</TD><TD BGCOLOR=#f4bd9d>....</TD><TD BGCOLOR=#f4be9f>....</TD><TD BGCOLOR=#e9b29b>....</TD><TD BGCOLOR=#e7b3a2>....</TD><TD BGCOLOR=#e4b2a0>....</TD><TD BGCOLOR=#e8ab96>....</TD><TD BGCOLOR=#d2937e>....</TD><TD BGCOLOR=#a16e5c>....</TD></TR>
<TR><TD BGCOLOR=#290b03 COLSPAN=2>....</TD><TD BGCOLOR=#2b1004>....</TD><TD BGCOLOR=#2b1002>....</TD><TD BGCOLOR=#2c1002>....</TD><TD BGCOLOR=#290d04>....</TD><TD BGCOLOR=#211004>....</TD><TD BGCOLOR=#231205>....</TD><TD BGCOLOR=#270f03>....</TD><TD BGCOLOR=#271304>....</TD><TD BGCOLOR=#210f02>....</TD><TD BGCOLOR=#290c07>....</TD><TD BGCOLOR=#2d0c0a>....</TD><TD BGCOLOR=#210401>....</TD><TD BGCOLOR=#2b1509>....</TD><TD BGCOLOR=#321309>....</TD><TD BGCOLOR=#48322e>....</TD><TD BGCOLOR=#473f2d>....</TD><TD BGCOLOR=#5f5935>....</TD><TD BGCOLOR=#615d3f>....</TD><TD BGCOLOR=#615a3d>....</TD><TD BGCOLOR=#6b6f5a>....</TD><TD BGCOLOR=#6a6049>....</TD><TD BGCOLOR=#68664a>....</TD><TD BGCOLOR=#6d5b4b>....</TD><TD BGCOLOR=#615f4a>....</TD><TD BGCOLOR=#5e5e48>....</TD><TD BGCOLOR=#5d513e>....</TD><TD BGCOLOR=#5b462d>....</TD><TD BGCOLOR=#592f12>....</TD><TD BGCOLOR=#54320d>....</TD><TD BGCOLOR=#4e340d>....</TD><TD BGCOLOR=#5a2f0d>....</TD><TD BGCOLOR=#5a3310>....</TD><TD BGCOLOR=#56330e>....</TD><TD BGCOLOR=#593c14>....</TD><TD BGCOLOR=#553716>....</TD><TD BGCOLOR=#8b765e>....</TD><TD BGCOLOR=#9d8f74>....</TD><TD BGCOLOR=#a19579>....</TD><TD BGCOLOR=#b0957e>....</TD><TD BGCOLOR=#b7a085>....</TD><TD BGCOLOR=#ceac93>....</TD><TD BGCOLOR=#cfb8a2>....</TD><TD BGCOLOR=#e9c0aa>....</TD><TD BGCOLOR=#edc6b9>....</TD><TD BGCOLOR=#cad4cd>....</TD><TD BGCOLOR=#673220>....</TD><TD BGCOLOR=#6d5436>....</TD><TD BGCOLOR=#866f52>....</TD><TD BGCOLOR=#905f4a>....</TD><TD BGCOLOR=#7b482c>....</TD><TD BGCOLOR=#985e41>....</TD><TD BGCOLOR=#ab7359>....</TD><TD BGCOLOR=#a0735c>....</TD><TD BGCOLOR=#825542>....</TD><TD BGCOLOR=#7a503b>....</TD><TD BGCOLOR=#a17956>....</TD><TD BGCOLOR=#bd825f>....</TD><TD BGCOLOR=#c68265>....</TD><TD BGCOLOR=#e7917a>....</TD><TD BGCOLOR=#f29581>....</TD><TD BGCOLOR=#eb9481>....</TD><TD BGCOLOR=#d48573>....</TD><TD BGCOLOR=#ce7f6d>....</TD><TD BGCOLOR=#d9806f>....</TD><TD BGCOLOR=#dc9573>....</TD><TD BGCOLOR=#dc9377>....</TD><TD BGCOLOR=#e29880>....</TD><TD BGCOLOR=#d59274>....</TD><TD BGCOLOR=#d28c74>....</TD><TD BGCOLOR=#e09e82>....</TD><TD BGCOLOR=#d5906f>....</TD><TD BGCOLOR=#d9906f>....</TD><TD BGCOLOR=#d2977a>....</TD><TD BGCOLOR=#d1a48b>....</TD><TD BGCOLOR=#cda088>....</TD><TD BGCOLOR=#b2735b>....</TD><TD BGCOLOR=#ab4a3d>....</TD><TD BGCOLOR=#a23a36>....</TD><TD BGCOLOR=#a23d3a>....</TD><TD BGCOLOR=#9e3f3b>....</TD><TD BGCOLOR=#ae4d48>....</TD><TD BGCOLOR=#a63836>....</TD><TD BGCOLOR=#a0453f>....</TD><TD BGCOLOR=#b24c47>....</TD><TD BGCOLOR=#b53d34>....</TD><TD BGCOLOR=#ab3729>....</TD><TD BGCOLOR=#9d3b30>....</TD><TD BGCOLOR=#ae3b32>....</TD><TD BGCOLOR=#a03635>....</TD><TD BGCOLOR=#b14c4b>....</TD><TD BGCOLOR=#a93a32>....</TD><TD BGCOLOR=#a04d49>....</TD><TD BGCOLOR=#72302e>....</TD><TD BGCOLOR=#8c6356>....</TD><TD BGCOLOR=#a27860>....</TD><TD BGCOLOR=#9a5b42>....</TD><TD BGCOLOR=#ca7f70>....</TD><TD BGCOLOR=#f0aca3>....</TD><TD BGCOLOR=#f3aca5>....</TD><TD BGCOLOR=#fdb8ac>....</TD><TD BGCOLOR=#f7b6a8>....</TD><TD BGCOLOR=#fbc0ab>....</TD><TD BGCOLOR=#fabfb5>....</TD><TD BGCOLOR=#ebaea9>....</TD><TD BGCOLOR=#e7b0a8>....</TD><TD BGCOLOR=#ddae94>....</TD><TD BGCOLOR=#ce9e80>....</TD><TD BGCOLOR=#d29c86>....</TD><TD BGCOLOR=#d6a193>....</TD><TD BGCOLOR=#c99f93>....</TD><TD BGCOLOR=#c49b8d>....</TD><TD BGCOLOR=#bd8876>....</TD><TD BGCOLOR=#a36c5a>....</TD><TD BGCOLOR=#7f5545>....</TD></TR>
<TR><TD BGCOLOR=#280d04 COLSPAN=2>....</TD><TD BGCOLOR=#2e1005>....</TD><TD BGCOLOR=#2c0d08>....</TD><TD BGCOLOR=#221411>....</TD><TD BGCOLOR=#250f05>....</TD><TD BGCOLOR=#210f03>....</TD><TD BGCOLOR=#2b1107>....</TD><TD BGCOLOR=#300b05>....</TD><TD BGCOLOR=#250d03>....</TD><TD BGCOLOR=#250f05>....</TD><TD BGCOLOR=#2b0f06>....</TD><TD BGCOLOR=#260f09>....</TD><TD BGCOLOR=#1f0604>....</TD><TD BGCOLOR=#291b11>....</TD><TD BGCOLOR=#320d08>....</TD><TD BGCOLOR=#584542>....</TD><TD BGCOLOR=#434331>....</TD><TD BGCOLOR=#625738>....</TD><TD BGCOLOR=#615b39>....</TD><TD BGCOLOR=#665944>....</TD><TD BGCOLOR=#6d6f5b>....</TD><TD BGCOLOR=#656243>....</TD><TD BGCOLOR=#6d6247>....</TD><TD BGCOLOR=#6a5b47>....</TD><TD BGCOLOR=#5f5e4b>....</TD><TD BGCOLOR=#5f5e4a>....</TD><TD BGCOLOR=#594e39>....</TD><TD BGCOLOR=#584531>....</TD><TD BGCOLOR=#573116>....</TD><TD BGCOLOR=#55310f>....</TD><TD BGCOLOR=#4e3310>....</TD><TD BGCOLOR=#4d3511>....</TD><TD BGCOLOR=#563916>....</TD><TD BGCOLOR=#553312>....</TD><TD BGCOLOR=#603913>....</TD><TD BGCOLOR=#5c391e>....</TD><TD BGCOLOR=#8d7669>....</TD><TD BGCOLOR=#a08973>....</TD><TD BGCOLOR=#aa9475>....</TD><TD BGCOLOR=#b19c7f>....</TD><TD BGCOLOR=#b8a68c>....</TD><TD BGCOLOR=#caaf99>....</TD><TD BGCOLOR=#dab9a8>....</TD><TD BGCOLOR=#e9bba6>....</TD><TD BGCOLOR=#f6c8b6>....</TD><TD BGCOLOR=#e0d5c7>....</TD><TD BGCOLOR=#703f3d>....</TD><TD BGCOLOR=#654024>....</TD><TD BGCOLOR=#8b6a43>....</TD><TD BGCOLOR=#966f50>....</TD><TD BGCOLOR=#966d4f>....</TD><TD BGCOLOR=#9a634e>....</TD><TD BGCOLOR=#946251>....</TD><TD BGCOLOR=#957058>....</TD><TD BGCOLOR=#815a39>....</TD><TD BGCOLOR=#8b5e42>....</TD><TD BGCOLOR=#95664d>....</TD><TD BGCOLOR=#b17e61>....</TD><TD BGCOLOR=#b87d61>....</TD><TD BGCOLOR=#c17d68>....</TD><TD BGCOLOR=#cc8774>....</TD><TD BGCOLOR=#c6856f>....</TD><TD BGCOLOR=#c6836e>....</TD><TD BGCOLOR=#d88f7a>....</TD><TD BGCOLOR=#e79883>....</TD><TD BGCOLOR=#e29f7a>....</TD><TD BGCOLOR=#de9c7a>....</TD><TD BGCOLOR=#da9877>....</TD><TD BGCOLOR=#d08f69>....</TD><TD BGCOLOR=#d49173>....</TD><TD BGCOLOR=#d89477>....</TD><TD BGCOLOR=#c7896b>....</TD><TD BGCOLOR=#c59070>....</TD><TD BGCOLOR=#c48c72>....</TD><TD BGCOLOR=#ca9e8c>....</TD><TD BGCOLOR=#c09684>....</TD><TD BGCOLOR=#a05553>....</TD><TD BGCOLOR=#973940>....</TD><TD BGCOLOR=#a63d31>....</TD><TD BGCOLOR=#9f3730>....</TD><TD BGCOLOR=#a13439>....</TD><TD BGCOLOR=#a34334>....</TD><TD BGCOLOR=#a45045>....</TD><TD BGCOLOR=#c7786d>....</TD><TD BGCOLOR=#bd6361>....</TD><TD BGCOLOR=#b03f35>....</TD><TD BGCOLOR=#9d3728>....</TD><TD BGCOLOR=#993c3a>....</TD><TD BGCOLOR=#ad3630>....</TD><TD BGCOLOR=#a53b33>....</TD><TD BGCOLOR=#b1625b>....</TD><TD BGCOLOR=#b25a5e>....</TD><TD BGCOLOR=#ad5e62>....</TD><TD BGCOLOR=#864243>....</TD><TD BGCOLOR=#824e4a>....</TD><TD BGCOLOR=#8b7360>....</TD><TD BGCOLOR=#8e5e45>....</TD><TD BGCOLOR=#bc806d>....</TD><TD BGCOLOR=#f3c2b1>....</TD><TD BGCOLOR=#edb1a7>....</TD><TD BGCOLOR=#f2b5b3>....</TD><TD BGCOLOR=#edb5b2>....</TD><TD BGCOLOR=#e5b1a3>....</TD><TD BGCOLOR=#e3ae98>....</TD><TD BGCOLOR=#dca99a>....</TD><TD BGCOLOR=#d2a29b>....</TD><TD BGCOLOR=#be8c78>....</TD><TD BGCOLOR=#c19079>....</TD><TD BGCOLOR=#c39588>....</TD><TD BGCOLOR=#c29791>....</TD><TD BGCOLOR=#b18a82>....</TD><TD BGCOLOR=#95746c>....</TD><TD BGCOLOR=#875e58>....</TD><TD BGCOLOR=#804c49>....</TD><TD BGCOLOR=#76554d>....</TD></TR>
<TR><TD BGCOLOR=#260d04 COLSPAN=2>....</TD><TD BGCOLOR=#2a0b02>....</TD><TD BGCOLOR=#2c0905>....</TD><TD BGCOLOR=#211109>....</TD><TD BGCOLOR=#200c02>....</TD><TD BGCOLOR=#210d02>....</TD><TD BGCOLOR=#2c150b>....</TD><TD BGCOLOR=#2c0c05>....</TD><TD BGCOLOR=#250d03>....</TD><TD BGCOLOR=#250e05>....</TD><TD BGCOLOR=#2b0f06>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#210704>....</TD><TD BGCOLOR=#322118>....</TD><TD BGCOLOR=#310c06>....</TD><TD BGCOLOR=#46302d>....</TD><TD BGCOLOR=#434336>....</TD><TD BGCOLOR=#605742>....</TD><TD BGCOLOR=#5e583e>....</TD><TD BGCOLOR=#665842>....</TD><TD BGCOLOR=#6e6f5a>....</TD><TD BGCOLOR=#666345>....</TD><TD BGCOLOR=#70644c>....</TD><TD BGCOLOR=#655e45>....</TD><TD BGCOLOR=#5b6049>....</TD><TD BGCOLOR=#5b5d46>....</TD><TD BGCOLOR=#564b33>....</TD><TD BGCOLOR=#554229>....</TD><TD BGCOLOR=#533213>....</TD><TD BGCOLOR=#53300e>....</TD><TD BGCOLOR=#513312>....</TD><TD BGCOLOR=#4c3611>....</TD><TD BGCOLOR=#563b18>....</TD><TD BGCOLOR=#543212>....</TD><TD BGCOLOR=#5c3912>....</TD><TD BGCOLOR=#604628>....</TD><TD BGCOLOR=#8b7569>....</TD><TD BGCOLOR=#a28672>....</TD><TD BGCOLOR=#b29175>....</TD><TD BGCOLOR=#bb9d83>....</TD><TD BGCOLOR=#c0a48d>....</TD><TD BGCOLOR=#cdaa97>....</TD><TD BGCOLOR=#d8b4a5>....</TD><TD BGCOLOR=#eabca7>....</TD><TD BGCOLOR=#f4c5b2>....</TD><TD BGCOLOR=#eadccd>....</TD><TD BGCOLOR=#774944>....</TD><TD BGCOLOR=#664129>....</TD><TD BGCOLOR=#856442>....</TD><TD BGCOLOR=#926d51>....</TD><TD BGCOLOR=#976e52>....</TD><TD BGCOLOR=#a6725c>....</TD><TD BGCOLOR=#9d6d57>....</TD><TD BGCOLOR=#8b654e>....</TD><TD BGCOLOR=#825f49>....</TD><TD BGCOLOR=#8d6950>....</TD><TD BGCOLOR=#9e755a>....</TD><TD BGCOLOR=#a3745a>....</TD><TD BGCOLOR=#b57b63>....</TD><TD BGCOLOR=#be7c61>....</TD><TD BGCOLOR=#be8063>....</TD><TD BGCOLOR=#d29673>....</TD><TD BGCOLOR=#dd9f7c>....</TD><TD BGCOLOR=#e5a786>....</TD><TD BGCOLOR=#d69879>....</TD><TD BGCOLOR=#c48862>....</TD><TD BGCOLOR=#c78a6a>....</TD><TD BGCOLOR=#cf9273>....</TD><TD BGCOLOR=#cb8f69>....</TD><TD BGCOLOR=#cd8967>....</TD><TD BGCOLOR=#d0886c>....</TD><TD BGCOLOR=#c98970>....</TD><TD BGCOLOR=#c59075>....</TD><TD BGCOLOR=#c38a6c>....</TD><TD BGCOLOR=#c49980>....</TD><TD BGCOLOR=#ac8774>....</TD><TD BGCOLOR=#c28580>....</TD><TD BGCOLOR=#b56c6b>....</TD><TD BGCOLOR=#a5332d>....</TD><TD BGCOLOR=#aa3938>....</TD><TD BGCOLOR=#9f333b>....</TD><TD BGCOLOR=#9d4235>....</TD><TD BGCOLOR=#9e4a44>....</TD><TD BGCOLOR=#b35c58>....</TD><TD BGCOLOR=#a55453>....</TD><TD BGCOLOR=#a7453d>....</TD><TD BGCOLOR=#a65044>....</TD><TD BGCOLOR=#a25452>....</TD><TD BGCOLOR=#a1504b>....</TD><TD BGCOLOR=#9e5552>....</TD><TD BGCOLOR=#a97570>....</TD><TD BGCOLOR=#a26866>....</TD><TD BGCOLOR=#9b6360>....</TD><TD BGCOLOR=#965c5a>....</TD><TD BGCOLOR=#773f3c>....</TD><TD BGCOLOR=#866759>....</TD><TD BGCOLOR=#7f5b40>....</TD><TD BGCOLOR=#9d6e59>....</TD><TD BGCOLOR=#d3aa97>....</TD><TD BGCOLOR=#d2a596>....</TD><TD BGCOLOR=#d3a69c>....</TD><TD BGCOLOR=#d2a8a1>....</TD><TD BGCOLOR=#c8a293>....</TD><TD BGCOLOR=#c59d87>....</TD><TD BGCOLOR=#bd9382>....</TD><TD BGCOLOR=#b0887d>....</TD><TD BGCOLOR=#ab7f6d>....</TD><TD BGCOLOR=#a98470>....</TD><TD BGCOLOR=#a7847a>....</TD><TD BGCOLOR=#9c7672>....</TD><TD BGCOLOR=#906961>....</TD><TD BGCOLOR=#836155>....</TD><TD BGCOLOR=#785248>....</TD><TD BGCOLOR=#98635e>....</TD><TD BGCOLOR=#986f66>....</TD></TR>
<TR><TD BGCOLOR=#230d00 COLSPAN=2>....</TD><TD BGCOLOR=#2a0903>....</TD><TD BGCOLOR=#320903>....</TD><TD BGCOLOR=#291303>....</TD><TD BGCOLOR=#241006>....</TD><TD BGCOLOR=#250f05>....</TD><TD BGCOLOR=#271509>....</TD><TD BGCOLOR=#251005>....</TD><TD BGCOLOR=#281006>....</TD><TD BGCOLOR=#230c03>....</TD><TD BGCOLOR=#280c04>....</TD><TD BGCOLOR=#1e0d04>....</TD><TD BGCOLOR=#220704>....</TD><TD BGCOLOR=#2a140c>....</TD><TD BGCOLOR=#300d06>....</TD><TD BGCOLOR=#391e16>....</TD><TD BGCOLOR=#494839>....</TD><TD BGCOLOR=#5b5745>....</TD><TD BGCOLOR=#5a573e>....</TD><TD BGCOLOR=#65593e>....</TD><TD BGCOLOR=#70725a>....</TD><TD BGCOLOR=#636044>....</TD><TD BGCOLOR=#6c604e>....</TD><TD BGCOLOR=#646043>....</TD><TD BGCOLOR=#5f6249>....</TD><TD BGCOLOR=#5f5a42>....</TD><TD BGCOLOR=#5d492f>....</TD><TD BGCOLOR=#584423>....</TD><TD BGCOLOR=#4f340f>....</TD><TD BGCOLOR=#53310f>....</TD><TD BGCOLOR=#533113>....</TD><TD BGCOLOR=#4e3814>....</TD><TD BGCOLOR=#573c19>....</TD><TD BGCOLOR=#502e0e>....</TD><TD BGCOLOR=#5d3b14>....</TD><TD BGCOLOR=#604a2a>....</TD><TD BGCOLOR=#8a786b>....</TD><TD BGCOLOR=#a18873>....</TD><TD BGCOLOR=#b69579>....</TD><TD BGCOLOR=#c2a188>....</TD><TD BGCOLOR=#c3a58f>....</TD><TD BGCOLOR=#d0aa99>....</TD><TD BGCOLOR=#d5b1a2>....</TD><TD BGCOLOR=#e8b9a4>....</TD><TD BGCOLOR=#f3c4b1>....</TD><TD BGCOLOR=#e4d7c7>....</TD><TD BGCOLOR=#6e4539>....</TD><TD BGCOLOR=#694733>....</TD><TD BGCOLOR=#6a4b33>....</TD><TD BGCOLOR=#97725a>....</TD><TD BGCOLOR=#9e7259>....</TD><TD BGCOLOR=#ae8065>....</TD><TD BGCOLOR=#a07355>....</TD><TD BGCOLOR=#966c50>....</TD><TD BGCOLOR=#846049>....</TD><TD BGCOLOR=#83654a>....</TD><TD BGCOLOR=#886045>....</TD><TD BGCOLOR=#b07d65>....</TD><TD BGCOLOR=#ca896e>....</TD><TD BGCOLOR=#da8b6c>....</TD><TD BGCOLOR=#e09c7e>....</TD><TD BGCOLOR=#dd9278>....</TD><TD BGCOLOR=#e39176>....</TD><TD BGCOLOR=#db896b>....</TD><TD BGCOLOR=#cf7e5d>....</TD><TD BGCOLOR=#cd8a62>....</TD><TD BGCOLOR=#ca8866>....</TD><TD BGCOLOR=#e4a483>....</TD><TD BGCOLOR=#d08f68>....</TD><TD BGCOLOR=#d88f6e>....</TD><TD BGCOLOR=#da9070>....</TD><TD BGCOLOR=#d89673>....</TD><TD BGCOLOR=#cb916c>....</TD><TD BGCOLOR=#ca8564>....</TD><TD BGCOLOR=#ae7c5b>....</TD><TD BGCOLOR=#a8806b>....</TD><TD BGCOLOR=#b16365>....</TD><TD BGCOLOR=#bb5155>....</TD><TD BGCOLOR=#b54644>....</TD><TD BGCOLOR=#b7615b>....</TD><TD BGCOLOR=#a9585a>....</TD><TD BGCOLOR=#c2786c>....</TD><TD BGCOLOR=#a15351>....</TD><TD BGCOLOR=#b85e62>....</TD><TD BGCOLOR=#b26c6b>....</TD><TD BGCOLOR=#c0736d>....</TD><TD BGCOLOR=#ba7971>....</TD><TD BGCOLOR=#a36b66>....</TD><TD BGCOLOR=#a56869>....</TD><TD BGCOLOR=#ad6a74>....</TD><TD BGCOLOR=#a2696d>....</TD><TD BGCOLOR=#a2675d>....</TD><TD BGCOLOR=#9d776e>....</TD><TD BGCOLOR=#92645e>....</TD><TD BGCOLOR=#87514e>....</TD><TD BGCOLOR=#7d5c4f>....</TD><TD BGCOLOR=#7f6248>....</TD><TD BGCOLOR=#845b48>....</TD><TD BGCOLOR=#b4907f>....</TD><TD BGCOLOR=#bd9887>....</TD><TD BGCOLOR=#c09f8c>....</TD><TD BGCOLOR=#b6978c>....</TD><TD BGCOLOR=#b09486>....</TD><TD BGCOLOR=#9e7e6d>....</TD><TD BGCOLOR=#967664>....</TD><TD BGCOLOR=#9b7e6d>....</TD><TD BGCOLOR=#997866>....</TD><TD BGCOLOR=#896f5c>....</TD><TD BGCOLOR=#8b7063>....</TD><TD BGCOLOR=#aa827a>....</TD><TD BGCOLOR=#b68577>....</TD><TD BGCOLOR=#b1796d>....</TD><TD BGCOLOR=#a86e63>....</TD><TD BGCOLOR=#c67974>....</TD><TD BGCOLOR=#c87b77>....</TD></TR>
<TR><TD BGCOLOR=#241002 COLSPAN=2>....</TD><TD BGCOLOR=#2b0b05>....</TD><TD BGCOLOR=#320901>....</TD><TD BGCOLOR=#2d1400>....</TD><TD BGCOLOR=#1f0c03>....</TD><TD BGCOLOR=#250e04>....</TD><TD BGCOLOR=#271408>....</TD><TD BGCOLOR=#231004>....</TD><TD BGCOLOR=#230c02>....</TD><TD BGCOLOR=#250f05>....</TD><TD BGCOLOR=#270c04>....</TD><TD BGCOLOR=#1e0e06>....</TD><TD BGCOLOR=#230905>....</TD><TD BGCOLOR=#290f09>....</TD><TD BGCOLOR=#2e0b05>....</TD><TD BGCOLOR=#391b0b>....</TD><TD BGCOLOR=#4c4733>....</TD><TD BGCOLOR=#585842>....</TD><TD BGCOLOR=#5a583a>....</TD><TD BGCOLOR=#665b3e>....</TD><TD BGCOLOR=#6d7056>....</TD><TD BGCOLOR=#646047>....</TD><TD BGCOLOR=#6b6050>....</TD><TD BGCOLOR=#675e42>....</TD><TD BGCOLOR=#636047>....</TD><TD BGCOLOR=#655741>....</TD><TD BGCOLOR=#63452c>....</TD><TD BGCOLOR=#59431e>....</TD><TD BGCOLOR=#4e360c>....</TD><TD BGCOLOR=#523110>....</TD><TD BGCOLOR=#533113>....</TD><TD BGCOLOR=#4e3710>....</TD><TD BGCOLOR=#533814>....</TD><TD BGCOLOR=#502e0e>....</TD><TD BGCOLOR=#5c3611>....</TD><TD BGCOLOR=#674e32>....</TD><TD BGCOLOR=#887a6b>....</TD><TD BGCOLOR=#9d8d75>....</TD><TD BGCOLOR=#b2977a>....</TD><TD BGCOLOR=#c0a38a>....</TD><TD BGCOLOR=#c1a68e>....</TD><TD BGCOLOR=#cba995>....</TD><TD BGCOLOR=#d4b2a3>....</TD><TD BGCOLOR=#e6b7a3>....</TD><TD BGCOLOR=#ebbca9>....</TD><TD BGCOLOR=#cdc0b0>....</TD><TD BGCOLOR=#6e4836>....</TD><TD BGCOLOR=#785948>....</TD><TD BGCOLOR=#634530>....</TD><TD BGCOLOR=#7e5a43>....</TD><TD BGCOLOR=#92684f>....</TD><TD BGCOLOR=#a57b5c>....</TD><TD BGCOLOR=#ad815f>....</TD><TD BGCOLOR=#ad805c>....</TD><TD BGCOLOR=#a57c5a>....</TD><TD BGCOLOR=#8d6a49>....</TD><TD BGCOLOR=#926349>....</TD><TD BGCOLOR=#b67b64>....</TD><TD BGCOLOR=#d58b6d>....</TD><TD BGCOLOR=#f69d7f>....</TD><TD BGCOLOR=#f8ab95>....</TD><TD BGCOLOR=#f7cbb7>....</TD><TD BGCOLOR=#e9c3a6>....</TD><TD BGCOLOR=#e9b991>....</TD><TD BGCOLOR=#e6ac7b>....</TD><TD BGCOLOR=#e4a476>....</TD><TD BGCOLOR=#eaa781>....</TD><TD BGCOLOR=#eaa37c>....</TD><TD BGCOLOR=#f2ab7f>....</TD><TD BGCOLOR=#fab191>....</TD><TD BGCOLOR=#feb893>....</TD><TD BGCOLOR=#f9bd8c>....</TD><TD BGCOLOR=#f3be88>....</TD><TD BGCOLOR=#faaa8b>....</TD><TD BGCOLOR=#e5a482>....</TD><TD BGCOLOR=#ba846f>....</TD><TD BGCOLOR=#ba696a>....</TD><TD BGCOLOR=#b45f5a>....</TD><TD BGCOLOR=#a96459>....</TD><TD BGCOLOR=#a9675f>....</TD><TD BGCOLOR=#af696a>....</TD><TD BGCOLOR=#a86f65>....</TD><TD BGCOLOR=#ac6c6b>....</TD><TD BGCOLOR=#b9696f>....</TD><TD BGCOLOR=#b47a77>....</TD><TD BGCOLOR=#c07f7a>....</TD><TD BGCOLOR=#b67e79>....</TD><TD BGCOLOR=#9e716b>....</TD><TD BGCOLOR=#ae8a85>....</TD><TD BGCOLOR=#ad8083>....</TD><TD BGCOLOR=#b08680>....</TD><TD BGCOLOR=#ab8065>....</TD><TD BGCOLOR=#a27f6f>....</TD><TD BGCOLOR=#a87d72>....</TD><TD BGCOLOR=#a87670>....</TD><TD BGCOLOR=#947466>....</TD><TD BGCOLOR=#8d6d54>....</TD><TD BGCOLOR=#8b6351>....</TD><TD BGCOLOR=#886455>....</TD><TD BGCOLOR=#946f5f>....</TD><TD BGCOLOR=#977864>....</TD><TD BGCOLOR=#987a6e>....</TD><TD BGCOLOR=#967a6d>....</TD><TD BGCOLOR=#967a6a>....</TD><TD BGCOLOR=#987c6b>....</TD><TD BGCOLOR=#97806a>....</TD><TD BGCOLOR=#a48876>....</TD><TD BGCOLOR=#af957f>....</TD><TD BGCOLOR=#c2a38e>....</TD><TD BGCOLOR=#c79684>....</TD><TD BGCOLOR=#c3866f>....</TD><TD BGCOLOR=#aa7b67>....</TD><TD BGCOLOR=#a8806c>....</TD><TD BGCOLOR=#b6786a>....</TD><TD BGCOLOR=#c88176>....</TD></TR>
</TABLE><TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD BGCOLOR=#200d00>....</TD><TD BGCOLOR=#200d00>....</TD><TD BGCOLOR=#200d00>....</TD><TD BGCOLOR=#241001>....</TD><TD BGCOLOR=#241304>....</TD><TD BGCOLOR=#201202>....</TD><TD BGCOLOR=#250d01>....</TD><TD BGCOLOR=#2e0c02>....</TD><TD BGCOLOR=#2d0b02>....</TD><TD BGCOLOR=#240e01>....</TD><TD BGCOLOR=#230d03>....</TD><TD BGCOLOR=#230c06>....</TD><TD BGCOLOR=#230b07>....</TD><TD BGCOLOR=#1d0603>....</TD><TD BGCOLOR=#280f08>....</TD><TD BGCOLOR=#310c07>....</TD><TD BGCOLOR=#3d0e06>....</TD><TD BGCOLOR=#544234>....</TD><TD BGCOLOR=#595539>....</TD><TD BGCOLOR=#61553a>....</TD><TD BGCOLOR=#645946>....</TD><TD BGCOLOR=#696d56>....</TD><TD BGCOLOR=#685d4b>....</TD><TD BGCOLOR=#64624d>....</TD><TD BGCOLOR=#635c46>....</TD><TD BGCOLOR=#5b614a>....</TD><TD BGCOLOR=#5b573f>....</TD><TD BGCOLOR=#5a4127>....</TD><TD BGCOLOR=#583e1c>....</TD><TD BGCOLOR=#52330a>....</TD><TD BGCOLOR=#4e3010>....</TD><TD BGCOLOR=#4e3509>....</TD><TD BGCOLOR=#543704>....</TD><TD BGCOLOR=#573711>....</TD><TD BGCOLOR=#502f0e>....</TD><TD BGCOLOR=#5b340e>....</TD><TD BGCOLOR=#695441>....</TD><TD BGCOLOR=#827d6c>....</TD><TD BGCOLOR=#a68d75>....</TD><TD BGCOLOR=#b1947f>....</TD><TD BGCOLOR=#ba9d8c>....</TD><TD BGCOLOR=#c0a288>....</TD><TD BGCOLOR=#cdab92>....</TD><TD BGCOLOR=#ceb1a2>....</TD><TD BGCOLOR=#dfac9c>....</TD><TD BGCOLOR=#e7b7a7>....</TD><TD BGCOLOR=#b8aa9c>....</TD><TD BGCOLOR=#795239>....</TD><TD BGCOLOR=#886c61>....</TD><TD BGCOLOR=#7d5a49>....</TD><TD BGCOLOR=#6e4e36>....</TD><TD BGCOLOR=#86694a>....</TD><TD BGCOLOR=#966845>....</TD><TD BGCOLOR=#a27055>....</TD><TD BGCOLOR=#9e7856>....</TD><TD BGCOLOR=#977652>....</TD><TD BGCOLOR=#9c7352>....</TD><TD BGCOLOR=#956345>....</TD><TD BGCOLOR=#a67054>....</TD><TD BGCOLOR=#c38469>....</TD><TD BGCOLOR=#eb9f86>....</TD><TD BGCOLOR=#f2a489>....</TD><TD BGCOLOR=#f4b99f>....</TD><TD BGCOLOR=#f8dbb9>....</TD><TD BGCOLOR=#f6c59e>....</TD><TD BGCOLOR=#efa473>....</TD><TD BGCOLOR=#e3c19c>....</TD><TD BGCOLOR=#e8c1a6>....</TD><TD BGCOLOR=#efb18e>....</TD><TD BGCOLOR=#ebad89>....</TD><TD BGCOLOR=#efb797>....</TD><TD BGCOLOR=#fab99f>....</TD><TD BGCOLOR=#e5c5a5>....</TD><TD BGCOLOR=#e2d0ac>....</TD><TD BGCOLOR=#f9b59a>....</TD><TD BGCOLOR=#f6a98d>....</TD><TD BGCOLOR=#de9877>....</TD><TD BGCOLOR=#a16353>....</TD><TD BGCOLOR=#9f6463>....</TD><TD BGCOLOR=#976560>....</TD><TD BGCOLOR=#9b6663>....</TD><TD BGCOLOR=#9a6966>....</TD><TD BGCOLOR=#a87d78>....</TD><TD BGCOLOR=#a47773>....</TD><TD BGCOLOR=#b88a87>....</TD><TD BGCOLOR=#9d6f6e>....</TD><TD BGCOLOR=#b57674>....</TD><TD BGCOLOR=#b77a71>....</TD><TD BGCOLOR=#ad7a71>....</TD><TD BGCOLOR=#b38680>....</TD><TD BGCOLOR=#b1846e>....</TD><TD BGCOLOR=#b68576>....</TD><TD BGCOLOR=#b38363>....</TD><TD BGCOLOR=#a67c56>....</TD><TD BGCOLOR=#b18468>....</TD><TD BGCOLOR=#b68576>....</TD><TD BGCOLOR=#af7e72>....</TD><TD BGCOLOR=#a68162>....</TD><TD BGCOLOR=#a0856a>....</TD><TD BGCOLOR=#927966>....</TD><TD BGCOLOR=#927569>....</TD><TD BGCOLOR=#8f7668>....</TD><TD BGCOLOR=#937867>....</TD><TD BGCOLOR=#a0826f>....</TD><TD BGCOLOR=#a68b75>....</TD><TD BGCOLOR=#b89780>....</TD><TD BGCOLOR=#c09f85>....</TD><TD BGCOLOR=#cba88b>....</TD><TD BGCOLOR=#d2a286>....</TD><TD BGCOLOR=#d09b7d>....</TD><TD BGCOLOR=#cb9476>....</TD><TD BGCOLOR=#bd8264>....</TD><TD BGCOLOR=#a06b5c>....</TD><TD BGCOLOR=#947561>....</TD><TD BGCOLOR=#b87d70>....</TD><TD BGCOLOR=#c98177>....</TD></TR>
<TR><TD BGCOLOR=#200d00 COLSPAN=4>....</TD><TD BGCOLOR=#251204>....</TD><TD BGCOLOR=#251505>....</TD><TD BGCOLOR=#201002>....</TD><TD BGCOLOR=#231102>....</TD><TD BGCOLOR=#241102>....</TD><TD BGCOLOR=#270e01>....</TD><TD BGCOLOR=#250b01>....</TD><TD BGCOLOR=#260b05>....</TD><TD BGCOLOR=#260c09>....</TD><TD BGCOLOR=#1c0602>....</TD><TD BGCOLOR=#270e07>....</TD><TD BGCOLOR=#320d08>....</TD><TD BGCOLOR=#3b0c04>....</TD><TD BGCOLOR=#564335>....</TD><TD BGCOLOR=#5b573b>....</TD><TD BGCOLOR=#615439>....</TD><TD BGCOLOR=#615744>....</TD><TD BGCOLOR=#6a6e57>....</TD><TD BGCOLOR=#675b4a>....</TD><TD BGCOLOR=#62614b>....</TD><TD BGCOLOR=#655e48>....</TD><TD BGCOLOR=#585f48>....</TD><TD BGCOLOR=#5a573f>....</TD><TD BGCOLOR=#5a4228>....</TD><TD BGCOLOR=#563c1a>....</TD><TD BGCOLOR=#52330a>....</TD><TD BGCOLOR=#4c2e0e>....</TD><TD BGCOLOR=#4e350b>....</TD><TD BGCOLOR=#523404>....</TD><TD BGCOLOR=#593913>....</TD><TD BGCOLOR=#50300a>....</TD><TD BGCOLOR=#59340b>....</TD><TD BGCOLOR=#6b5643>....</TD><TD BGCOLOR=#877d6e>....</TD><TD BGCOLOR=#a78f76>....</TD><TD BGCOLOR=#b19680>....</TD><TD BGCOLOR=#b79b8a>....</TD><TD BGCOLOR=#bfa287>....</TD><TD BGCOLOR=#c8a78d>....</TD><TD BGCOLOR=#cdb09e>....</TD><TD BGCOLOR=#dcaa96>....</TD><TD BGCOLOR=#e4b5a2>....</TD><TD BGCOLOR=#ab9d8d>....</TD><TD BGCOLOR=#916340>....</TD><TD BGCOLOR=#a07d68>....</TD><TD BGCOLOR=#a07d67>....</TD><TD BGCOLOR=#8a705a>....</TD><TD BGCOLOR=#805f42>....</TD><TD BGCOLOR=#986d4d>....</TD><TD BGCOLOR=#97745c>....</TD><TD BGCOLOR=#937b5c>....</TD><TD BGCOLOR=#896e4a>....</TD><TD BGCOLOR=#866644>....</TD><TD BGCOLOR=#946e4e>....</TD><TD BGCOLOR=#906447>....</TD><TD BGCOLOR=#ad7057>....</TD><TD BGCOLOR=#ca7c66>....</TD><TD BGCOLOR=#dc8971>....</TD><TD BGCOLOR=#d99172>....</TD><TD BGCOLOR=#daa17e>....</TD><TD BGCOLOR=#dda07e>....</TD><TD BGCOLOR=#d69067>....</TD><TD BGCOLOR=#c49676>....</TD><TD BGCOLOR=#cc9d86>....</TD><TD BGCOLOR=#ebbc9b>....</TD><TD BGCOLOR=#e6b192>....</TD><TD BGCOLOR=#f5d9c3>....</TD><TD BGCOLOR=#fbd3c4>....</TD><TD BGCOLOR=#f3d8c4>....</TD><TD BGCOLOR=#ead3bb>....</TD><TD BGCOLOR=#f1bfa3>....</TD><TD BGCOLOR=#f1b096>....</TD><TD BGCOLOR=#d49374>....</TD><TD BGCOLOR=#935d4e>....</TD><TD BGCOLOR=#8a5e58>....</TD><TD BGCOLOR=#8d635c>....</TD><TD BGCOLOR=#905d59>....</TD><TD BGCOLOR=#a0716b>....</TD><TD BGCOLOR=#b28e82>....</TD><TD BGCOLOR=#bf938a>....</TD><TD BGCOLOR=#d09d96>....</TD><TD BGCOLOR=#c09c96>....</TD><TD BGCOLOR=#ca9e96>....</TD><TD BGCOLOR=#c89e8f>....</TD><TD BGCOLOR=#ba9a8b>....</TD><TD BGCOLOR=#c89c8e>....</TD><TD BGCOLOR=#b88a6b>....</TD><TD BGCOLOR=#ae7966>....</TD><TD BGCOLOR=#ad7959>....</TD><TD BGCOLOR=#a57855>....</TD><TD BGCOLOR=#ac8064>....</TD><TD BGCOLOR=#ab7f6b>....</TD><TD BGCOLOR=#a67d6c>....</TD><TD BGCOLOR=#9b7e64>....</TD><TD BGCOLOR=#947962>....</TD><TD BGCOLOR=#927865>....</TD><TD BGCOLOR=#957a6c>....</TD><TD BGCOLOR=#998173>....</TD><TD BGCOLOR=#a28776>....</TD><TD BGCOLOR=#b89a87>....</TD><TD BGCOLOR=#bfa68d>....</TD><TD BGCOLOR=#c1a186>....</TD><TD BGCOLOR=#cba589>....</TD><TD BGCOLOR=#d8a88d>....</TD><TD BGCOLOR=#d6a185>....</TD><TD BGCOLOR=#cc977c>....</TD><TD BGCOLOR=#b9816a>....</TD><TD BGCOLOR=#a56954>....</TD><TD BGCOLOR=#a06851>....</TD><TD BGCOLOR=#956f54>....</TD><TD BGCOLOR=#a56657>....</TD><TD BGCOLOR=#bb766d>....</TD></TR>
<TR><TD BGCOLOR=#200d00 COLSPAN=3>....</TD><TD BGCOLOR=#1f0c00>....</TD><TD BGCOLOR=#251203>....</TD><TD BGCOLOR=#221001>....</TD><TD BGCOLOR=#1f0f00>....</TD><TD BGCOLOR=#201202>....</TD><TD BGCOLOR=#231403>....</TD><TD BGCOLOR=#241102>....</TD><TD BGCOLOR=#200d01>....</TD><TD BGCOLOR=#210d05>....</TD><TD BGCOLOR=#230c08>....</TD><TD BGCOLOR=#1d0602>....</TD><TD BGCOLOR=#270e07>....</TD><TD BGCOLOR=#310c06>....</TD><TD BGCOLOR=#3d0e06>....</TD><TD BGCOLOR=#554235>....</TD><TD BGCOLOR=#5a5639>....</TD><TD BGCOLOR=#63563c>....</TD><TD BGCOLOR=#5f5542>....</TD><TD BGCOLOR=#696d56>....</TD><TD BGCOLOR=#675b49>....</TD><TD BGCOLOR=#63624c>....</TD><TD BGCOLOR=#645d47>....</TD><TD BGCOLOR=#575d46>....</TD><TD BGCOLOR=#59553d>....</TD><TD BGCOLOR=#594127>....</TD><TD BGCOLOR=#563c19>....</TD><TD BGCOLOR=#54350b>....</TD><TD BGCOLOR=#4d2f0f>....</TD><TD BGCOLOR=#4e350d>....</TD><TD BGCOLOR=#523308>....</TD><TD BGCOLOR=#5a3a14>....</TD><TD BGCOLOR=#513108>....</TD><TD BGCOLOR=#583609>....</TD><TD BGCOLOR=#6e5745>....</TD><TD BGCOLOR=#8a7c6e>....</TD><TD BGCOLOR=#a18a70>....</TD><TD BGCOLOR=#ad937c>....</TD><TD BGCOLOR=#b69989>....</TD><TD BGCOLOR=#bda085>....</TD><TD BGCOLOR=#c9a88e>....</TD><TD BGCOLOR=#c7ab96>....</TD><TD BGCOLOR=#d8a68f>....</TD><TD BGCOLOR=#ddaf99>....</TD><TD BGCOLOR=#968976>....</TD><TD BGCOLOR=#9e7546>....</TD><TD BGCOLOR=#af8860>....</TD><TD BGCOLOR=#bd956a>....</TD><TD BGCOLOR=#baa17d>....</TD><TD BGCOLOR=#ab9173>....</TD><TD BGCOLOR=#8a684b>....</TD><TD BGCOLOR=#866d5c>....</TD><TD BGCOLOR=#8b7864>....</TD><TD BGCOLOR=#997863>....</TD><TD BGCOLOR=#896753>....</TD><TD BGCOLOR=#7c5a45>....</TD><TD BGCOLOR=#865f4c>....</TD><TD BGCOLOR=#926050>....</TD><TD BGCOLOR=#a46859>....</TD><TD BGCOLOR=#a76d5a>....</TD><TD BGCOLOR=#b48264>....</TD><TD BGCOLOR=#be8469>....</TD><TD BGCOLOR=#c28f73>....</TD><TD BGCOLOR=#c89270>....</TD><TD BGCOLOR=#c68c71>....</TD><TD BGCOLOR=#c08372>....</TD><TD BGCOLOR=#c4886e>....</TD><TD BGCOLOR=#d48d7c>....</TD><TD BGCOLOR=#c39789>....</TD><TD BGCOLOR=#d2998e>....</TD><TD BGCOLOR=#d8a795>....</TD><TD BGCOLOR=#d8a994>....</TD><TD BGCOLOR=#d9a691>....</TD><TD BGCOLOR=#d89884>....</TD><TD BGCOLOR=#bd8067>....</TD><TD BGCOLOR=#986456>....</TD><TD BGCOLOR=#a37466>....</TD><TD BGCOLOR=#a67a6b>....</TD><TD BGCOLOR=#b17f72>....</TD><TD BGCOLOR=#b58878>....</TD><TD BGCOLOR=#b99481>....</TD><TD BGCOLOR=#c69b8a>....</TD><TD BGCOLOR=#d1a192>....</TD><TD BGCOLOR=#cdae9d>....</TD><TD BGCOLOR=#bf9684>....</TD><TD BGCOLOR=#c09a81>....</TD><TD BGCOLOR=#b89c83>....</TD><TD BGCOLOR=#b6907b>....</TD><TD BGCOLOR=#b08766>....</TD><TD BGCOLOR=#a97a6a>....</TD><TD BGCOLOR=#a2735a>....</TD><TD BGCOLOR=#9c745e>....</TD><TD BGCOLOR=#987560>....</TD><TD BGCOLOR=#917562>....</TD><TD BGCOLOR=#8a7360>....</TD><TD BGCOLOR=#88755f>....</TD><TD BGCOLOR=#907663>....</TD><TD BGCOLOR=#987c6a>....</TD><TD BGCOLOR=#a18876>....</TD><TD BGCOLOR=#a89081>....</TD><TD BGCOLOR=#b89d8b>....</TD><TD BGCOLOR=#c0a28f>....</TD><TD BGCOLOR=#c4a58d>....</TD><TD BGCOLOR=#cda389>....</TD><TD BGCOLOR=#d0a387>....</TD><TD BGCOLOR=#d6a284>....</TD><TD BGCOLOR=#d39c80>....</TD><TD BGCOLOR=#b47e66>....</TD><TD BGCOLOR=#a56b5d>....</TD><TD BGCOLOR=#b67770>....</TD><TD BGCOLOR=#bb7d6e>....</TD><TD BGCOLOR=#b4846f>....</TD><TD BGCOLOR=#b87368>....</TD><TD BGCOLOR=#a7685d>....</TD></TR>
<TR><TD BGCOLOR=#210d01 COLSPAN=2>....</TD><TD BGCOLOR=#200d01>....</TD><TD BGCOLOR=#210e01>....</TD><TD BGCOLOR=#230f03>....</TD><TD BGCOLOR=#210f03>....</TD><TD BGCOLOR=#200d02>....</TD><TD BGCOLOR=#220d02>....</TD><TD BGCOLOR=#220e02>....</TD><TD BGCOLOR=#201203>....</TD><TD BGCOLOR=#1a1003>....</TD><TD BGCOLOR=#1b0e04>....</TD><TD BGCOLOR=#220b06>....</TD><TD BGCOLOR=#200803>....</TD><TD BGCOLOR=#280f07>....</TD><TD BGCOLOR=#2e0b03>....</TD><TD BGCOLOR=#370904>....</TD><TD BGCOLOR=#524435>....</TD><TD BGCOLOR=#5c593d>....</TD><TD BGCOLOR=#60593e>....</TD><TD BGCOLOR=#5e5643>....</TD><TD BGCOLOR=#6a6e58>....</TD><TD BGCOLOR=#675c47>....</TD><TD BGCOLOR=#65644b>....</TD><TD BGCOLOR=#645c46>....</TD><TD BGCOLOR=#575c45>....</TD><TD BGCOLOR=#5f5b43>....</TD><TD BGCOLOR=#584126>....</TD><TD BGCOLOR=#563a18>....</TD><TD BGCOLOR=#53320c>....</TD><TD BGCOLOR=#4e2d0c>....</TD><TD BGCOLOR=#52340e>....</TD><TD BGCOLOR=#53330b>....</TD><TD BGCOLOR=#583813>....</TD><TD BGCOLOR=#55350b>....</TD><TD BGCOLOR=#58370b>....</TD><TD BGCOLOR=#6f5947>....</TD><TD BGCOLOR=#89796c>....</TD><TD BGCOLOR=#a18b71>....</TD><TD BGCOLOR=#aa8f7a>....</TD><TD BGCOLOR=#b59887>....</TD><TD BGCOLOR=#bb9f86>....</TD><TD BGCOLOR=#c2a189>....</TD><TD BGCOLOR=#c4a490>....</TD><TD BGCOLOR=#d9a791>....</TD><TD BGCOLOR=#d6aa91>....</TD><TD BGCOLOR=#b8a992>....</TD><TD BGCOLOR=#865f4c>....</TD><TD BGCOLOR=#a97f69>....</TD><TD BGCOLOR=#b5846a>....</TD><TD BGCOLOR=#c29683>....</TD><TD BGCOLOR=#cb9984>....</TD><TD BGCOLOR=#be806d>....</TD><TD BGCOLOR=#b17c71>....</TD><TD BGCOLOR=#b2857a>....</TD><TD BGCOLOR=#997164>....</TD><TD BGCOLOR=#957063>....</TD><TD BGCOLOR=#906e5f>....</TD><TD BGCOLOR=#836254>....</TD><TD BGCOLOR=#7b534a>....</TD><TD BGCOLOR=#80564d>....</TD><TD BGCOLOR=#816055>....</TD><TD BGCOLOR=#8a715c>....</TD><TD BGCOLOR=#a27968>....</TD><TD BGCOLOR=#9b7761>....</TD><TD BGCOLOR=#a47e5d>....</TD><TD BGCOLOR=#a98666>....</TD><TD BGCOLOR=#b28d74>....</TD><TD BGCOLOR=#b69071>....</TD><TD BGCOLOR=#c58e79>....</TD><TD BGCOLOR=#bf9a80>....</TD><TD BGCOLOR=#c39b7f>....</TD><TD BGCOLOR=#c19f7e>....</TD><TD BGCOLOR=#bf9b7c>....</TD><TD BGCOLOR=#bf927f>....</TD><TD BGCOLOR=#b37f6c>....</TD><TD BGCOLOR=#9a7056>....</TD><TD BGCOLOR=#a07662>....</TD><TD BGCOLOR=#a66d58>....</TD><TD BGCOLOR=#a57960>....</TD><TD BGCOLOR=#b1836a>....</TD><TD BGCOLOR=#b1836b>....</TD><TD BGCOLOR=#b0876f>....</TD><TD BGCOLOR=#b7907b>....</TD><TD BGCOLOR=#b5907d>....</TD><TD BGCOLOR=#b59581>....</TD><TD BGCOLOR=#b68972>....</TD><TD BGCOLOR=#b78d6f>....</TD><TD BGCOLOR=#ab876c>....</TD><TD BGCOLOR=#a3816c>....</TD><TD BGCOLOR=#9b7c5f>....</TD><TD BGCOLOR=#9a7569>....</TD><TD BGCOLOR=#9b7464>....</TD><TD BGCOLOR=#906f63>....</TD><TD BGCOLOR=#8b7362>....</TD><TD BGCOLOR=#857160>....</TD><TD BGCOLOR=#897567>....</TD><TD BGCOLOR=#917f6f>....</TD><TD BGCOLOR=#9f8573>....</TD><TD BGCOLOR=#a08571>....</TD><TD BGCOLOR=#a68f7d>....</TD><TD BGCOLOR=#ad9789>....</TD><TD BGCOLOR=#bba090>....</TD><TD BGCOLOR=#bea290>....</TD><TD BGCOLOR=#c3a18a>....</TD><TD BGCOLOR=#ce9e84>....</TD><TD BGCOLOR=#c69a7d>....</TD><TD BGCOLOR=#c69778>....</TD><TD BGCOLOR=#b1795f>....</TD><TD BGCOLOR=#a16652>....</TD><TD BGCOLOR=#b3756a>....</TD><TD BGCOLOR=#b57574>....</TD><TD BGCOLOR=#c17e7d>....</TD><TD BGCOLOR=#b87a74>....</TD><TD BGCOLOR=#b8706a>....</TD><TD BGCOLOR=#b4796d>....</TD></TR>
<TR><TD BGCOLOR=#210d06 COLSPAN=2>....</TD><TD BGCOLOR=#200c06>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#230f08>....</TD><TD BGCOLOR=#210d08>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#220e07>....</TD><TD BGCOLOR=#230c07>....</TD><TD BGCOLOR=#220e07>....</TD><TD BGCOLOR=#170f05>....</TD><TD BGCOLOR=#1e0d05>....</TD><TD BGCOLOR=#280b08>....</TD><TD BGCOLOR=#210801>....</TD><TD BGCOLOR=#260f04>....</TD><TD BGCOLOR=#2c0c02>....</TD><TD BGCOLOR=#350b08>....</TD><TD BGCOLOR=#4d4c36>....</TD><TD BGCOLOR=#585439>....</TD><TD BGCOLOR=#585840>....</TD><TD BGCOLOR=#5e5944>....</TD><TD BGCOLOR=#6b6e59>....</TD><TD BGCOLOR=#655c3f>....</TD><TD BGCOLOR=#656547>....</TD><TD BGCOLOR=#635b45>....</TD><TD BGCOLOR=#585944>....</TD><TD BGCOLOR=#5e5a42>....</TD><TD BGCOLOR=#574226>....</TD><TD BGCOLOR=#573819>....</TD><TD BGCOLOR=#543111>....</TD><TD BGCOLOR=#502b07>....</TD><TD BGCOLOR=#56310c>....</TD><TD BGCOLOR=#52320c>....</TD><TD BGCOLOR=#563610>....</TD><TD BGCOLOR=#53330d>....</TD><TD BGCOLOR=#58330e>....</TD><TD BGCOLOR=#715c48>....</TD><TD BGCOLOR=#877c6f>....</TD><TD BGCOLOR=#a28a71>....</TD><TD BGCOLOR=#b08f7d>....</TD><TD BGCOLOR=#b39684>....</TD><TD BGCOLOR=#b89e87>....</TD><TD BGCOLOR=#c1a18a>....</TD><TD BGCOLOR=#c89f92>....</TD><TD BGCOLOR=#d3a390>....</TD><TD BGCOLOR=#d4ac92>....</TD><TD BGCOLOR=#ccb69b>....</TD><TD BGCOLOR=#907167>....</TD><TD BGCOLOR=#8b6a55>....</TD><TD BGCOLOR=#aa7a66>....</TD><TD BGCOLOR=#c68b7d>....</TD><TD BGCOLOR=#d59b85>....</TD><TD BGCOLOR=#efb19a>....</TD><TD BGCOLOR=#dcb492>....</TD><TD BGCOLOR=#cba081>....</TD><TD BGCOLOR=#a8846e>....</TD><TD BGCOLOR=#ac8875>....</TD><TD BGCOLOR=#b08e76>....</TD><TD BGCOLOR=#b89579>....</TD><TD BGCOLOR=#bb9378>....</TD><TD BGCOLOR=#b3886e>....</TD><TD BGCOLOR=#a17d6a>....</TD><TD BGCOLOR=#917561>....</TD><TD BGCOLOR=#7f6352>....</TD><TD BGCOLOR=#775a49>....</TD><TD BGCOLOR=#7f6249>....</TD><TD BGCOLOR=#8d6d59>....</TD><TD BGCOLOR=#927560>....</TD><TD BGCOLOR=#9d7d64>....</TD><TD BGCOLOR=#a97f65>....</TD><TD BGCOLOR=#a88466>....</TD><TD BGCOLOR=#b18f74>....</TD><TD BGCOLOR=#a88970>....</TD><TD BGCOLOR=#9b7d66>....</TD><TD BGCOLOR=#8d6957>....</TD><TD BGCOLOR=#88604f>....</TD><TD BGCOLOR=#8c6a57>....</TD><TD BGCOLOR=#926e59>....</TD><TD BGCOLOR=#956851>....</TD><TD BGCOLOR=#927659>....</TD><TD BGCOLOR=#96765b>....</TD><TD BGCOLOR=#9c765b>....</TD><TD BGCOLOR=#9a775c>....</TD><TD BGCOLOR=#9b7963>....</TD><TD BGCOLOR=#9b7a69>....</TD><TD BGCOLOR=#9b7b6b>....</TD><TD BGCOLOR=#99725f>....</TD><TD BGCOLOR=#94735c>....</TD><TD BGCOLOR=#8c6756>....</TD><TD BGCOLOR=#8c6957>....</TD><TD BGCOLOR=#8d725f>....</TD><TD BGCOLOR=#957969>....</TD><TD BGCOLOR=#967168>....</TD><TD BGCOLOR=#8e7467>....</TD><TD BGCOLOR=#917d66>....</TD><TD BGCOLOR=#937965>....</TD><TD BGCOLOR=#9b766e>....</TD><TD BGCOLOR=#9b7c73>....</TD><TD BGCOLOR=#9a8870>....</TD><TD BGCOLOR=#a19077>....</TD><TD BGCOLOR=#ad9989>....</TD><TD BGCOLOR=#af9a8e>....</TD><TD BGCOLOR=#b89b8f>....</TD><TD BGCOLOR=#b79b8b>....</TD><TD BGCOLOR=#bc9f87>....</TD><TD BGCOLOR=#c0987c>....</TD><TD BGCOLOR=#b49174>....</TD><TD BGCOLOR=#ab8065>....</TD><TD BGCOLOR=#9b5e4c>....</TD><TD BGCOLOR=#b97361>....</TD><TD BGCOLOR=#bf7568>....</TD><TD BGCOLOR=#bd7972>....</TD><TD BGCOLOR=#bf7975>....</TD><TD BGCOLOR=#ba736f>....</TD><TD BGCOLOR=#9e5c56>....</TD><TD BGCOLOR=#ad786e>....</TD></TR>
<TR><TD BGCOLOR=#210d06 COLSPAN=2>....</TD><TD BGCOLOR=#200c05 COLSPAN=2>....</TD><TD BGCOLOR=#241009>....</TD><TD BGCOLOR=#1f0b05>....</TD><TD BGCOLOR=#200c06>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#210b05>....</TD><TD BGCOLOR=#230e07>....</TD><TD BGCOLOR=#1e0e06>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#230c07>....</TD><TD BGCOLOR=#1d0901>....</TD><TD BGCOLOR=#270e04>....</TD><TD BGCOLOR=#290b01>....</TD><TD BGCOLOR=#2e0902>....</TD><TD BGCOLOR=#4c4d34>....</TD><TD BGCOLOR=#5b5337>....</TD><TD BGCOLOR=#60563d>....</TD><TD BGCOLOR=#615b41>....</TD><TD BGCOLOR=#686d55>....</TD><TD BGCOLOR=#645a3f>....</TD><TD BGCOLOR=#65644b>....</TD><TD BGCOLOR=#655d47>....</TD><TD BGCOLOR=#595a45>....</TD><TD BGCOLOR=#5d5841>....</TD><TD BGCOLOR=#564326>....</TD><TD BGCOLOR=#533a19>....</TD><TD BGCOLOR=#503411>....</TD><TD BGCOLOR=#4c2d07>....</TD><TD BGCOLOR=#52320b>....</TD><TD BGCOLOR=#52320c>....</TD><TD BGCOLOR=#55350f>....</TD><TD BGCOLOR=#51310b>....</TD><TD BGCOLOR=#532f07>....</TD><TD BGCOLOR=#735f46>....</TD><TD BGCOLOR=#8b8073>....</TD><TD BGCOLOR=#a28a76>....</TD><TD BGCOLOR=#ab8d7a>....</TD><TD BGCOLOR=#b1937e>....</TD><TD BGCOLOR=#b99b83>....</TD><TD BGCOLOR=#c0a187>....</TD><TD BGCOLOR=#c59f8f>....</TD><TD BGCOLOR=#cda28e>....</TD><TD BGCOLOR=#d0a990>....</TD><TD BGCOLOR=#caad95>....</TD><TD BGCOLOR=#c6b8ab>....</TD><TD BGCOLOR=#715e4c>....</TD><TD BGCOLOR=#a27c64>....</TD><TD BGCOLOR=#c18971>....</TD><TD BGCOLOR=#d69280>....</TD><TD BGCOLOR=#f6b39e>....</TD><TD BGCOLOR=#e7c19e>....</TD><TD BGCOLOR=#dbb192>....</TD><TD BGCOLOR=#a87a68>....</TD><TD BGCOLOR=#9b665f>....</TD><TD BGCOLOR=#af766e>....</TD><TD BGCOLOR=#b07669>....</TD><TD BGCOLOR=#b8836a>....</TD><TD BGCOLOR=#bd8f6f>....</TD><TD BGCOLOR=#bd9677>....</TD><TD BGCOLOR=#b39572>....</TD><TD BGCOLOR=#ad9276>....</TD><TD BGCOLOR=#a48b78>....</TD><TD BGCOLOR=#9d8673>....</TD><TD BGCOLOR=#927a6b>....</TD><TD BGCOLOR=#847262>....</TD><TD BGCOLOR=#827160>....</TD><TD BGCOLOR=#866e5f>....</TD><TD BGCOLOR=#876858>....</TD><TD BGCOLOR=#856759>....</TD><TD BGCOLOR=#8a6f63>....</TD><TD BGCOLOR=#81685d>....</TD><TD BGCOLOR=#71584d>....</TD><TD BGCOLOR=#745e52>....</TD><TD BGCOLOR=#746154>....</TD><TD BGCOLOR=#7b6557>....</TD><TD BGCOLOR=#836756>....</TD><TD BGCOLOR=#826d5a>....</TD><TD BGCOLOR=#886e5c>....</TD><TD BGCOLOR=#8f705f>....</TD><TD BGCOLOR=#977663>....</TD><TD BGCOLOR=#906b56>....</TD><TD BGCOLOR=#996f58>....</TD><TD BGCOLOR=#99725e>....</TD><TD BGCOLOR=#966b57>....</TD><TD BGCOLOR=#95755a>....</TD><TD BGCOLOR=#906f5b>....</TD><TD BGCOLOR=#906a59>....</TD><TD BGCOLOR=#9c7d6b>....</TD><TD BGCOLOR=#987d6d>....</TD><TD BGCOLOR=#9a7c70>....</TD><TD BGCOLOR=#907e70>....</TD><TD BGCOLOR=#907f70>....</TD><TD BGCOLOR=#917f71>....</TD><TD BGCOLOR=#917c71>....</TD><TD BGCOLOR=#947a74>....</TD><TD BGCOLOR=#928375>....</TD><TD BGCOLOR=#978b79>....</TD><TD BGCOLOR=#9d8d7c>....</TD><TD BGCOLOR=#ac9587>....</TD><TD BGCOLOR=#b19283>....</TD><TD BGCOLOR=#b39683>....</TD><TD BGCOLOR=#b2947c>....</TD><TD BGCOLOR=#b89279>....</TD><TD BGCOLOR=#b19177>....</TD><TD BGCOLOR=#956d55>....</TD><TD BGCOLOR=#ab7062>....</TD><TD BGCOLOR=#b87464>....</TD><TD BGCOLOR=#c57d6a>....</TD><TD BGCOLOR=#be7a6b>....</TD><TD BGCOLOR=#ad7369>....</TD><TD BGCOLOR=#aa7168>....</TD><TD BGCOLOR=#9d6c60>....</TD><TD BGCOLOR=#937160>....</TD></TR>
<TR><TD BGCOLOR=#210d06 COLSPAN=2>....</TD><TD BGCOLOR=#1f0b05>....</TD><TD BGCOLOR=#1f0b04>....</TD><TD BGCOLOR=#220e07>....</TD><TD BGCOLOR=#1f0b04>....</TD><TD BGCOLOR=#220e07>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#230d07>....</TD><TD BGCOLOR=#240c06>....</TD><TD BGCOLOR=#230b06>....</TD><TD BGCOLOR=#250c07>....</TD><TD BGCOLOR=#250d07>....</TD><TD BGCOLOR=#200601>....</TD><TD BGCOLOR=#260c03>....</TD><TD BGCOLOR=#201001>....</TD><TD BGCOLOR=#300c03>....</TD><TD BGCOLOR=#504930>....</TD><TD BGCOLOR=#5c5234>....</TD><TD BGCOLOR=#60583c>....</TD><TD BGCOLOR=#5f5a3b>....</TD><TD BGCOLOR=#676b52>....</TD><TD BGCOLOR=#665c43>....</TD><TD BGCOLOR=#64624e>....</TD><TD BGCOLOR=#635a45>....</TD><TD BGCOLOR=#5b5d48>....</TD><TD BGCOLOR=#59553d>....</TD><TD BGCOLOR=#554225>....</TD><TD BGCOLOR=#4f3c19>....</TD><TD BGCOLOR=#4d3713>....</TD><TD BGCOLOR=#493109>....</TD><TD BGCOLOR=#4e320b>....</TD><TD BGCOLOR=#50300a>....</TD><TD BGCOLOR=#55350f>....</TD><TD BGCOLOR=#4d2d07>....</TD><TD BGCOLOR=#543005>....</TD><TD BGCOLOR=#715e41>....</TD><TD BGCOLOR=#8b8074>....</TD><TD BGCOLOR=#a38a7b>....</TD><TD BGCOLOR=#a88d78>....</TD><TD BGCOLOR=#b1917a>....</TD><TD BGCOLOR=#bb9a7f>....</TD><TD BGCOLOR=#bca183>....</TD><TD BGCOLOR=#c19d8c>....</TD><TD BGCOLOR=#c7a18b>....</TD><TD BGCOLOR=#caa68b>....</TD><TD BGCOLOR=#cfab95>....</TD><TD BGCOLOR=#c6b6a2>....</TD><TD BGCOLOR=#a49080>....</TD><TD BGCOLOR=#81604b>....</TD><TD BGCOLOR=#a5755b>....</TD><TD BGCOLOR=#d08d7a>....</TD><TD BGCOLOR=#f0aa96>....</TD><TD BGCOLOR=#f8cdad>....</TD><TD BGCOLOR=#c89072>....</TD><TD BGCOLOR=#bc7865>....</TD><TD BGCOLOR=#c57f79>....</TD><TD BGCOLOR=#d7918e>....</TD><TD BGCOLOR=#cf847e>....</TD><TD BGCOLOR=#b77365>....</TD><TD BGCOLOR=#a97460>....</TD><TD BGCOLOR=#ae7d70>....</TD><TD BGCOLOR=#b88c71>....</TD><TD BGCOLOR=#aa8568>....</TD><TD BGCOLOR=#a58672>....</TD><TD BGCOLOR=#9f8771>....</TD><TD BGCOLOR=#96806d>....</TD><TD BGCOLOR=#8e806f>....</TD><TD BGCOLOR=#827a6b>....</TD><TD BGCOLOR=#817369>....</TD><TD BGCOLOR=#82695d>....</TD><TD BGCOLOR=#7b6459>....</TD><TD BGCOLOR=#78635c>....</TD><TD BGCOLOR=#79655e>....</TD><TD BGCOLOR=#776159>....</TD><TD BGCOLOR=#706358>....</TD><TD BGCOLOR=#6f6458>....</TD><TD BGCOLOR=#736356>....</TD><TD BGCOLOR=#786354>....</TD><TD BGCOLOR=#82695b>....</TD><TD BGCOLOR=#836659>....</TD><TD BGCOLOR=#896558>....</TD><TD BGCOLOR=#926858>....</TD><TD BGCOLOR=#946a57>....</TD><TD BGCOLOR=#976e55>....</TD><TD BGCOLOR=#9a6956>....</TD><TD BGCOLOR=#a56b59>....</TD><TD BGCOLOR=#9a7156>....</TD><TD BGCOLOR=#9b745f>....</TD><TD BGCOLOR=#9b6f60>....</TD><TD BGCOLOR=#997866>....</TD><TD BGCOLOR=#947b6a>....</TD><TD BGCOLOR=#91786b>....</TD><TD BGCOLOR=#867b6e>....</TD><TD BGCOLOR=#82746f>....</TD><TD BGCOLOR=#786f68>....</TD><TD BGCOLOR=#767566>....</TD><TD BGCOLOR=#7f766e>....</TD><TD BGCOLOR=#837c76>....</TD><TD BGCOLOR=#8c8075>....</TD><TD BGCOLOR=#998576>....</TD><TD BGCOLOR=#a08675>....</TD><TD BGCOLOR=#a68472>....</TD><TD BGCOLOR=#a88772>....</TD><TD BGCOLOR=#a78971>....</TD><TD BGCOLOR=#ae8c75>....</TD><TD BGCOLOR=#b1937c>....</TD><TD BGCOLOR=#8b6651>....</TD><TD BGCOLOR=#9a6758>....</TD><TD BGCOLOR=#a87262>....</TD><TD BGCOLOR=#a57562>....</TD><TD BGCOLOR=#906b5e>....</TD><TD BGCOLOR=#7f6159>....</TD><TD BGCOLOR=#7b5752>....</TD><TD BGCOLOR=#77534e>....</TD><TD BGCOLOR=#785a54>....</TD></TR>
<TR><TD BGCOLOR=#220e07 COLSPAN=2>....</TD><TD BGCOLOR=#200c05 COLSPAN=3>....</TD><TD BGCOLOR=#1e0e06>....</TD><TD BGCOLOR=#220e07>....</TD><TD BGCOLOR=#230e07>....</TD><TD BGCOLOR=#210d07>....</TD><TD BGCOLOR=#240d07>....</TD><TD BGCOLOR=#250c07>....</TD><TD BGCOLOR=#240c06>....</TD><TD BGCOLOR=#240d07>....</TD><TD BGCOLOR=#200602>....</TD><TD BGCOLOR=#270d07>....</TD><TD BGCOLOR=#221002>....</TD><TD BGCOLOR=#320a02>....</TD><TD BGCOLOR=#524932>....</TD><TD BGCOLOR=#5b5336>....</TD><TD BGCOLOR=#5f583b>....</TD><TD BGCOLOR=#625a3f>....</TD><TD BGCOLOR=#686e50>....</TD><TD BGCOLOR=#685c43>....</TD><TD BGCOLOR=#666652>....</TD><TD BGCOLOR=#5e5841>....</TD><TD BGCOLOR=#555a43>....</TD><TD BGCOLOR=#56553c>....</TD><TD BGCOLOR=#524225>....</TD><TD BGCOLOR=#4d3c1a>....</TD><TD BGCOLOR=#4a3613>....</TD><TD BGCOLOR=#49320e>....</TD><TD BGCOLOR=#4c310c>....</TD><TD BGCOLOR=#4e310c>....</TD><TD BGCOLOR=#513310>....</TD><TD BGCOLOR=#4f2d0d>....</TD><TD BGCOLOR=#542a08>....</TD><TD BGCOLOR=#775c42>....</TD><TD BGCOLOR=#8b8172>....</TD><TD BGCOLOR=#9f8c79>....</TD><TD BGCOLOR=#a78b77>....</TD><TD BGCOLOR=#b2917c>....</TD><TD BGCOLOR=#b7947c>....</TD><TD BGCOLOR=#b89a7f>....</TD><TD BGCOLOR=#c19e86>....</TD><TD BGCOLOR=#c6a389>....</TD><TD BGCOLOR=#c9a48c>....</TD><TD BGCOLOR=#d1a794>....</TD><TD BGCOLOR=#d0ac98>....</TD><TD BGCOLOR=#bdb4a1>....</TD><TD BGCOLOR=#765042>....</TD><TD BGCOLOR=#956c53>....</TD><TD BGCOLOR=#b77c6e>....</TD><TD BGCOLOR=#e69e8f>....</TD><TD BGCOLOR=#e9b298>....</TD><TD BGCOLOR=#d19578>....</TD><TD BGCOLOR=#d8927e>....</TD><TD BGCOLOR=#e0978f>....</TD><TD BGCOLOR=#d9908b>....</TD><TD BGCOLOR=#db897c>....</TD><TD BGCOLOR=#d4876f>....</TD><TD BGCOLOR=#c1896f>....</TD><TD BGCOLOR=#a87565>....</TD><TD BGCOLOR=#a2735b>....</TD><TD BGCOLOR=#9c7761>....</TD><TD BGCOLOR=#9b7b63>....</TD><TD BGCOLOR=#977b64>....</TD><TD BGCOLOR=#917965>....</TD><TD BGCOLOR=#867665>....</TD><TD BGCOLOR=#7c7061>....</TD><TD BGCOLOR=#7a695c>....</TD><TD BGCOLOR=#74695a>....</TD><TD BGCOLOR=#756459>....</TD><TD BGCOLOR=#76635b>....</TD><TD BGCOLOR=#77645d>....</TD><TD BGCOLOR=#77645c>....</TD><TD BGCOLOR=#756d61>....</TD><TD BGCOLOR=#7d7164>....</TD><TD BGCOLOR=#887367>....</TD><TD BGCOLOR=#886f63>....</TD><TD BGCOLOR=#916e5d>....</TD><TD BGCOLOR=#946f5d>....</TD><TD BGCOLOR=#946959>....</TD><TD BGCOLOR=#906651>....</TD><TD BGCOLOR=#8c6450>....</TD><TD BGCOLOR=#946556>....</TD><TD BGCOLOR=#905b50>....</TD><TD BGCOLOR=#a06354>....</TD><TD BGCOLOR=#9a644e>....</TD><TD BGCOLOR=#966a54>....</TD><TD BGCOLOR=#986d59>....</TD><TD BGCOLOR=#937661>....</TD><TD BGCOLOR=#937366>....</TD><TD BGCOLOR=#866f64>....</TD><TD BGCOLOR=#716e60>....</TD><TD BGCOLOR=#706865>....</TD><TD BGCOLOR=#756e6a>....</TD><TD BGCOLOR=#787667>....</TD><TD BGCOLOR=#7e796b>....</TD><TD BGCOLOR=#807b72>....</TD><TD BGCOLOR=#8c7f74>....</TD><TD BGCOLOR=#8e7a69>....</TD><TD BGCOLOR=#8f7a6b>....</TD><TD BGCOLOR=#937869>....</TD><TD BGCOLOR=#9b7a63>....</TD><TD BGCOLOR=#9e7c64>....</TD><TD BGCOLOR=#a07c68>....</TD><TD BGCOLOR=#a3846c>....</TD><TD BGCOLOR=#937760>....</TD><TD BGCOLOR=#83644e>....</TD><TD BGCOLOR=#91715a>....</TD><TD BGCOLOR=#8f7160>....</TD><TD BGCOLOR=#947d72>....</TD><TD BGCOLOR=#968b7e>....</TD><TD BGCOLOR=#96867a>....</TD><TD BGCOLOR=#8a7369>....</TD><TD BGCOLOR=#826a61>....</TD></TR>
<TR><TD BGCOLOR=#200c05 COLSPAN=3>....</TD><TD BGCOLOR=#1e0a04>....</TD><TD BGCOLOR=#1e0c05>....</TD><TD BGCOLOR=#1a0f06>....</TD><TD BGCOLOR=#1f0c05>....</TD><TD BGCOLOR=#210c06>....</TD><TD BGCOLOR=#1e0c04>....</TD><TD BGCOLOR=#200c05>....</TD><TD BGCOLOR=#200c06>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#220f06>....</TD><TD BGCOLOR=#1d0703>....</TD><TD BGCOLOR=#250a09>....</TD><TD BGCOLOR=#290c03>....</TD><TD BGCOLOR=#350902>....</TD><TD BGCOLOR=#504934>....</TD><TD BGCOLOR=#5b543b>....</TD><TD BGCOLOR=#61563c>....</TD><TD BGCOLOR=#625542>....</TD><TD BGCOLOR=#676e4f>....</TD><TD BGCOLOR=#6a5c43>....</TD><TD BGCOLOR=#676952>....</TD><TD BGCOLOR=#635d49>....</TD><TD BGCOLOR=#595c47>....</TD><TD BGCOLOR=#59573b>....</TD><TD BGCOLOR=#4f3e1c>....</TD><TD BGCOLOR=#533714>....</TD><TD BGCOLOR=#4f300e>....</TD><TD BGCOLOR=#4f2c0b>....</TD><TD BGCOLOR=#502d0a>....</TD><TD BGCOLOR=#4b2f08>....</TD><TD BGCOLOR=#4e330f>....</TD><TD BGCOLOR=#532f12>....</TD><TD BGCOLOR=#5a2c14>....</TD><TD BGCOLOR=#775746>....</TD><TD BGCOLOR=#877e70>....</TD><TD BGCOLOR=#998b77>....</TD><TD BGCOLOR=#a68877>....</TD><TD BGCOLOR=#b08e7d>....</TD><TD BGCOLOR=#b3917e>....</TD><TD BGCOLOR=#b7967f>....</TD><TD BGCOLOR=#bc997c>....</TD><TD BGCOLOR=#c09c80>....</TD><TD BGCOLOR=#c39e87>....</TD><TD BGCOLOR=#c7a18c>....</TD><TD BGCOLOR=#d1a990>....</TD><TD BGCOLOR=#c0b09d>....</TD><TD BGCOLOR=#9c8978>....</TD><TD BGCOLOR=#794c3b>....</TD><TD BGCOLOR=#a9786b>....</TD><TD BGCOLOR=#d18d80>....</TD><TD BGCOLOR=#eaa692>....</TD><TD BGCOLOR=#e7ac91>....</TD><TD BGCOLOR=#dfa18d>....</TD><TD BGCOLOR=#dd9a90>....</TD><TD BGCOLOR=#e09a90>....</TD><TD BGCOLOR=#e19286>....</TD><TD BGCOLOR=#dd9283>....</TD><TD BGCOLOR=#d19a85>....</TD><TD BGCOLOR=#c0927a>....</TD><TD BGCOLOR=#a2785c>....</TD><TD BGCOLOR=#977b68>....</TD><TD BGCOLOR=#967b5e>....</TD><TD BGCOLOR=#927561>....</TD><TD BGCOLOR=#85715f>....</TD><TD BGCOLOR=#7e6e60>....</TD><TD BGCOLOR=#7f6d60>....</TD><TD BGCOLOR=#7b6353>....</TD><TD BGCOLOR=#6f6b5e>....</TD><TD BGCOLOR=#73665d>....</TD><TD BGCOLOR=#745e58>....</TD><TD BGCOLOR=#705d56>....</TD><TD BGCOLOR=#6f6157>....</TD><TD BGCOLOR=#6e6b5a>....</TD><TD BGCOLOR=#796d5b>....</TD><TD BGCOLOR=#82695c>....</TD><TD BGCOLOR=#8a6e67>....</TD><TD BGCOLOR=#926c5b>....</TD><TD BGCOLOR=#946c56>....</TD><TD BGCOLOR=#986f5c>....</TD><TD BGCOLOR=#9a745b>....</TD><TD BGCOLOR=#986a58>....</TD><TD BGCOLOR=#926053>....</TD><TD BGCOLOR=#8d6357>....</TD><TD BGCOLOR=#986656>....</TD><TD BGCOLOR=#96624d>....</TD><TD BGCOLOR=#926d55>....</TD><TD BGCOLOR=#916f5a>....</TD><TD BGCOLOR=#897662>....</TD><TD BGCOLOR=#8a6961>....</TD><TD BGCOLOR=#76615b>....</TD><TD BGCOLOR=#6a685b>....</TD><TD BGCOLOR=#716b65>....</TD><TD BGCOLOR=#776d67>....</TD><TD BGCOLOR=#7d7063>....</TD><TD BGCOLOR=#82705e>....</TD><TD BGCOLOR=#817365>....</TD><TD BGCOLOR=#847565>....</TD><TD BGCOLOR=#877361>....</TD><TD BGCOLOR=#877567>....</TD><TD BGCOLOR=#887566>....</TD><TD BGCOLOR=#92755e>....</TD><TD BGCOLOR=#99755e>....</TD><TD BGCOLOR=#9a755f>....</TD><TD BGCOLOR=#9b7a5f>....</TD><TD BGCOLOR=#937e64>....</TD><TD BGCOLOR=#98826a>....</TD><TD BGCOLOR=#a0856d>....</TD><TD BGCOLOR=#aa8b75>....</TD><TD BGCOLOR=#b2907a>....</TD><TD BGCOLOR=#b0a08a>....</TD><TD BGCOLOR=#b6a793>....</TD><TD BGCOLOR=#b4a18d>....</TD><TD BGCOLOR=#b9a391>....</TD></TR>
<TR><TD BGCOLOR=#1c0802 COLSPAN=2>....</TD><TD BGCOLOR=#200c06>....</TD><TD BGCOLOR=#1c0802>....</TD><TD BGCOLOR=#1d0b03>....</TD><TD BGCOLOR=#1a0e06>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#200b05>....</TD><TD BGCOLOR=#200d06>....</TD><TD BGCOLOR=#1e0a03>....</TD><TD BGCOLOR=#1f0b05>....</TD><TD BGCOLOR=#200c05>....</TD><TD BGCOLOR=#240d06>....</TD><TD BGCOLOR=#200503>....</TD><TD BGCOLOR=#230a08>....</TD><TD BGCOLOR=#240c02>....</TD><TD BGCOLOR=#330902>....</TD><TD BGCOLOR=#4f4833>....</TD><TD BGCOLOR=#5c553c>....</TD><TD BGCOLOR=#60553b>....</TD><TD BGCOLOR=#605343>....</TD><TD BGCOLOR=#646b50>....</TD><TD BGCOLOR=#695b46>....</TD><TD BGCOLOR=#666854>....</TD><TD BGCOLOR=#64594e>....</TD><TD BGCOLOR=#5d5446>....</TD><TD BGCOLOR=#574c31>....</TD><TD BGCOLOR=#4c3811>....</TD><TD BGCOLOR=#57330e>....</TD><TD BGCOLOR=#552e0a>....</TD><TD BGCOLOR=#542906>....</TD><TD BGCOLOR=#522805>....</TD><TD BGCOLOR=#4d2c06>....</TD><TD BGCOLOR=#4d330e>....</TD><TD BGCOLOR=#5c3d1d>....</TD><TD BGCOLOR=#5b341e>....</TD><TD BGCOLOR=#6e5646>....</TD><TD BGCOLOR=#807b6a>....</TD><TD BGCOLOR=#958476>....</TD><TD BGCOLOR=#a48879>....</TD><TD BGCOLOR=#ab8d7b>....</TD><TD BGCOLOR=#af927d>....</TD><TD BGCOLOR=#b3967e>....</TD><TD BGCOLOR=#b4957b>....</TD><TD BGCOLOR=#b7977c>....</TD><TD BGCOLOR=#bc9c80>....</TD><TD BGCOLOR=#bc9e81>....</TD><TD BGCOLOR=#c0a57f>....</TD><TD BGCOLOR=#cca391>....</TD><TD BGCOLOR=#aeb09a>....</TD><TD BGCOLOR=#744942>....</TD><TD BGCOLOR=#976a57>....</TD><TD BGCOLOR=#b98572>....</TD><TD BGCOLOR=#d59482>....</TD><TD BGCOLOR=#d7947f>....</TD><TD BGCOLOR=#ce967f>....</TD><TD BGCOLOR=#cf9687>....</TD><TD BGCOLOR=#cd9485>....</TD><TD BGCOLOR=#cc9384>....</TD><TD BGCOLOR=#cd968b>....</TD><TD BGCOLOR=#c99987>....</TD><TD BGCOLOR=#be9775>....</TD><TD BGCOLOR=#9d7754>....</TD><TD BGCOLOR=#a58976>....</TD><TD BGCOLOR=#9f8467>....</TD><TD BGCOLOR=#977a65>....</TD><TD BGCOLOR=#837763>....</TD><TD BGCOLOR=#7f6f61>....</TD><TD BGCOLOR=#836b5f>....</TD><TD BGCOLOR=#806556>....</TD><TD BGCOLOR=#75665d>....</TD><TD BGCOLOR=#6c5c54>....</TD><TD BGCOLOR=#6e5b54>....</TD><TD BGCOLOR=#6a554d>....</TD><TD BGCOLOR=#625546>....</TD><TD BGCOLOR=#65634e>....</TD><TD BGCOLOR=#726751>....</TD><TD BGCOLOR=#7d6553>....</TD><TD BGCOLOR=#81685e>....</TD><TD BGCOLOR=#86685a>....</TD><TD BGCOLOR=#8b6750>....</TD><TD BGCOLOR=#906a56>....</TD><TD BGCOLOR=#8c6753>....</TD><TD BGCOLOR=#9c6a59>....</TD><TD BGCOLOR=#926753>....</TD><TD BGCOLOR=#936c5a>....</TD><TD BGCOLOR=#966b56>....</TD><TD BGCOLOR=#926c54>....</TD><TD BGCOLOR=#876c56>....</TD><TD BGCOLOR=#8b6f62>....</TD><TD BGCOLOR=#7c6f60>....</TD><TD BGCOLOR=#7e645c>....</TD><TD BGCOLOR=#796c62>....</TD><TD BGCOLOR=#675c55>....</TD><TD BGCOLOR=#6d635b>....</TD><TD BGCOLOR=#6f655d>....</TD><TD BGCOLOR=#75675e>....</TD><TD BGCOLOR=#84695a>....</TD><TD BGCOLOR=#816b60>....</TD><TD BGCOLOR=#856d60>....</TD><TD BGCOLOR=#886d5e>....</TD><TD BGCOLOR=#8b7666>....</TD><TD BGCOLOR=#8a7864>....</TD><TD BGCOLOR=#937a66>....</TD><TD BGCOLOR=#997a67>....</TD><TD BGCOLOR=#96755e>....</TD><TD BGCOLOR=#98765c>....</TD><TD BGCOLOR=#967c64>....</TD><TD BGCOLOR=#9b7c6a>....</TD><TD BGCOLOR=#a68270>....</TD><TD BGCOLOR=#ad8b73>....</TD><TD BGCOLOR=#b29175>....</TD><TD BGCOLOR=#b49a86>....</TD><TD BGCOLOR=#b39988>....</TD><TD BGCOLOR=#bb9d8d>....</TD><TD BGCOLOR=#bd9c8d>....</TD></TR>
<TR><TD BGCOLOR=#1c0801 COLSPAN=2>....</TD><TD BGCOLOR=#200c05>....</TD><TD BGCOLOR=#1c0801>....</TD><TD BGCOLOR=#1c0a03>....</TD><TD BGCOLOR=#1a0f07>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#220d06>....</TD><TD BGCOLOR=#1f0d05>....</TD><TD BGCOLOR=#1f0b04 COLSPAN=2>....</TD><TD BGCOLOR=#200c05>....</TD><TD BGCOLOR=#250b06>....</TD><TD BGCOLOR=#220403>....</TD><TD BGCOLOR=#230908>....</TD><TD BGCOLOR=#200d01>....</TD><TD BGCOLOR=#340b04>....</TD><TD BGCOLOR=#4e4833>....</TD><TD BGCOLOR=#5a5239>....</TD><TD BGCOLOR=#60553b>....</TD><TD BGCOLOR=#645649>....</TD><TD BGCOLOR=#697058>....</TD><TD BGCOLOR=#685a49>....</TD><TD BGCOLOR=#5f6150>....</TD><TD BGCOLOR=#615543>....</TD><TD BGCOLOR=#5c4a3c>....</TD><TD BGCOLOR=#56422d>....</TD><TD BGCOLOR=#463112>....</TD><TD BGCOLOR=#4d3311>....</TD><TD BGCOLOR=#4b2e0d>....</TD><TD BGCOLOR=#4d2c0c>....</TD><TD BGCOLOR=#522c0e>....</TD><TD BGCOLOR=#4f280d>....</TD><TD BGCOLOR=#55381d>....</TD><TD BGCOLOR=#5c3f27>....</TD><TD BGCOLOR=#5d3d28>....</TD><TD BGCOLOR=#67573e>....</TD><TD BGCOLOR=#79785d>....</TD><TD BGCOLOR=#907f6d>....</TD><TD BGCOLOR=#a18577>....</TD><TD BGCOLOR=#a88d7a>....</TD><TD BGCOLOR=#ac907b>....</TD><TD BGCOLOR=#b39880>....</TD><TD BGCOLOR=#b49680>....</TD><TD BGCOLOR=#b99b83>....</TD><TD BGCOLOR=#b89b7d>....</TD><TD BGCOLOR=#b89a79>....</TD><TD BGCOLOR=#bb9b7c>....</TD><TD BGCOLOR=#b59e83>....</TD><TD BGCOLOR=#b69e8e>....</TD><TD BGCOLOR=#958173>....</TD><TD BGCOLOR=#7b4934>....</TD><TD BGCOLOR=#b1876f>....</TD><TD BGCOLOR=#ca9481>....</TD><TD BGCOLOR=#c18372>....</TD><TD BGCOLOR=#ab806c>....</TD><TD BGCOLOR=#9d756a>....</TD><TD BGCOLOR=#926e60>....</TD><TD BGCOLOR=#856655>....</TD><TD BGCOLOR=#95726b>....</TD><TD BGCOLOR=#9b706d>....</TD><TD BGCOLOR=#97725c>....</TD><TD BGCOLOR=#977252>....</TD><TD BGCOLOR=#a28774>....</TD><TD BGCOLOR=#a08568>....</TD><TD BGCOLOR=#9a7d69>....</TD><TD BGCOLOR=#7e7a62>....</TD><TD BGCOLOR=#7e6e60>....</TD><TD BGCOLOR=#806259>....</TD><TD BGCOLOR=#7c5e50>....</TD><TD BGCOLOR=#725852>....</TD><TD BGCOLOR=#6a5850>....</TD><TD BGCOLOR=#68574f>....</TD><TD BGCOLOR=#654e48>....</TD><TD BGCOLOR=#5a4b42>....</TD><TD BGCOLOR=#5c5949>....</TD><TD BGCOLOR=#6e6252>....</TD><TD BGCOLOR=#7f6656>....</TD><TD BGCOLOR=#816a60>....</TD><TD BGCOLOR=#856f63>....</TD><TD BGCOLOR=#87684f>....</TD><TD BGCOLOR=#8a6250>....</TD><TD BGCOLOR=#89725c>....</TD><TD BGCOLOR=#8d7158>....</TD><TD BGCOLOR=#965f4b>....</TD><TD BGCOLOR=#a06755>....</TD><TD BGCOLOR=#9a6a54>....</TD><TD BGCOLOR=#937057>....</TD><TD BGCOLOR=#8b6f5e>....</TD><TD BGCOLOR=#8a6d61>....</TD><TD BGCOLOR=#807260>....</TD><TD BGCOLOR=#866c5d>....</TD><TD BGCOLOR=#6c5d4b>....</TD><TD BGCOLOR=#665350>....</TD><TD BGCOLOR=#66574d>....</TD><TD BGCOLOR=#655a50>....</TD><TD BGCOLOR=#6c6059>....</TD><TD BGCOLOR=#785f50>....</TD><TD BGCOLOR=#7f6c60>....</TD><TD BGCOLOR=#856f62>....</TD><TD BGCOLOR=#896d5e>....</TD><TD BGCOLOR=#917765>....</TD><TD BGCOLOR=#8e7d64>....</TD><TD BGCOLOR=#927d6b>....</TD><TD BGCOLOR=#957c6c>....</TD><TD BGCOLOR=#997c64>....</TD><TD BGCOLOR=#9f7d62>....</TD><TD BGCOLOR=#9c7d67>....</TD><TD BGCOLOR=#9e7d6d>....</TD><TD BGCOLOR=#a98778>....</TD><TD BGCOLOR=#a98c7d>....</TD><TD BGCOLOR=#ab9181>....</TD><TD BGCOLOR=#b29888>....</TD><TD BGCOLOR=#b59a89>....</TD><TD BGCOLOR=#b99a8b>....</TD><TD BGCOLOR=#bb9a8b>....</TD></TR>
<TR><TD BGCOLOR=#190b02 COLSPAN=2>....</TD><TD BGCOLOR=#200a04>....</TD><TD BGCOLOR=#210702>....</TD><TD BGCOLOR=#1f0802>....</TD><TD BGCOLOR=#1c0b04>....</TD><TD BGCOLOR=#210d06>....</TD><TD BGCOLOR=#220e07>....</TD><TD BGCOLOR=#1f0c05>....</TD><TD BGCOLOR=#1f0b04>....</TD><TD BGCOLOR=#1e0a04>....</TD><TD BGCOLOR=#1e0a03>....</TD><TD BGCOLOR=#220804>....</TD><TD BGCOLOR=#210804>....</TD><TD BGCOLOR=#1d0d05>....</TD><TD BGCOLOR=#1b0e01>....</TD><TD BGCOLOR=#330b04>....</TD><TD BGCOLOR=#524632>....</TD><TD BGCOLOR=#5a5239>....</TD><TD BGCOLOR=#62543b>....</TD><TD BGCOLOR=#655943>....</TD><TD BGCOLOR=#6a715b>....</TD><TD BGCOLOR=#655c42>....</TD><TD BGCOLOR=#65614d>....</TD><TD BGCOLOR=#5f5239>....</TD><TD BGCOLOR=#584629>....</TD><TD BGCOLOR=#50371c>....</TD><TD BGCOLOR=#4a300b>....</TD><TD BGCOLOR=#4c330d>....</TD><TD BGCOLOR=#4b2d0b>....</TD><TD BGCOLOR=#472c0c>....</TD><TD BGCOLOR=#492d0b>....</TD><TD BGCOLOR=#4c2c0f>....</TD><TD BGCOLOR=#554434>....</TD><TD BGCOLOR=#5a4333>....</TD><TD BGCOLOR=#60412c>....</TD><TD BGCOLOR=#65553d>....</TD><TD BGCOLOR=#76725a>....</TD><TD BGCOLOR=#8b7a6c>....</TD><TD BGCOLOR=#947e6e>....</TD><TD BGCOLOR=#9f8979>....</TD><TD BGCOLOR=#a78c7e>....</TD><TD BGCOLOR=#b09281>....</TD><TD BGCOLOR=#b4927d>....</TD><TD BGCOLOR=#b89781>....</TD><TD BGCOLOR=#b99c82>....</TD><TD BGCOLOR=#b49b7e>....</TD><TD BGCOLOR=#ba9c83>....</TD><TD BGCOLOR=#af9b82>....</TD><TD BGCOLOR=#bb9b8a>....</TD><TD BGCOLOR=#b19e8b>....</TD><TD BGCOLOR=#83634e>....</TD><TD BGCOLOR=#896650>....</TD><TD BGCOLOR=#8e6a5a>....</TD><TD BGCOLOR=#906e62>....</TD><TD BGCOLOR=#8f725d>....</TD><TD BGCOLOR=#92755b>....</TD><TD BGCOLOR=#98836c>....</TD><TD BGCOLOR=#907f67>....</TD><TD BGCOLOR=#927a62>....</TD><TD BGCOLOR=#9b7c6a>....</TD><TD BGCOLOR=#a48570>....</TD><TD BGCOLOR=#a4896f>....</TD><TD BGCOLOR=#9c8771>....</TD><TD BGCOLOR=#978269>....</TD><TD BGCOLOR=#907b64>....</TD><TD BGCOLOR=#867661>....</TD><TD BGCOLOR=#836d62>....</TD><TD BGCOLOR=#7f625d>....</TD><TD BGCOLOR=#73574d>....</TD><TD BGCOLOR=#654c4d>....</TD><TD BGCOLOR=#63544f>....</TD><TD BGCOLOR=#63544b>....</TD><TD BGCOLOR=#615149>....</TD><TD BGCOLOR=#584f4b>....</TD><TD BGCOLOR=#5c3e35>....</TD><TD BGCOLOR=#6b5746>....</TD><TD BGCOLOR=#776452>....</TD><TD BGCOLOR=#816e5d>....</TD><TD BGCOLOR=#8d6f5f>....</TD><TD BGCOLOR=#936754>....</TD><TD BGCOLOR=#936354>....</TD><TD BGCOLOR=#8e6b5b>....</TD><TD BGCOLOR=#916957>....</TD><TD BGCOLOR=#9c6051>....</TD><TD BGCOLOR=#9b6555>....</TD><TD BGCOLOR=#986d59>....</TD><TD BGCOLOR=#987260>....</TD><TD BGCOLOR=#906c65>....</TD><TD BGCOLOR=#897362>....</TD><TD BGCOLOR=#857762>....</TD><TD BGCOLOR=#7f6959>....</TD><TD BGCOLOR=#675243>....</TD><TD BGCOLOR=#6e524b>....</TD><TD BGCOLOR=#674f47>....</TD><TD BGCOLOR=#645244>....</TD><TD BGCOLOR=#6b5d4b>....</TD><TD BGCOLOR=#756050>....</TD><TD BGCOLOR=#756858>....</TD><TD BGCOLOR=#796b5a>....</TD><TD BGCOLOR=#887464>....</TD><TD BGCOLOR=#8f7968>....</TD><TD BGCOLOR=#8f7d67>....</TD><TD BGCOLOR=#8e7b66>....</TD><TD BGCOLOR=#927d6b>....</TD><TD BGCOLOR=#987b6a>....</TD><TD BGCOLOR=#9b7965>....</TD><TD BGCOLOR=#9b7f6a>....</TD><TD BGCOLOR=#99806c>....</TD><TD BGCOLOR=#a08578>....</TD><TD BGCOLOR=#a68880>....</TD><TD BGCOLOR=#ab8c81>....</TD><TD BGCOLOR=#ab998a>....</TD><TD BGCOLOR=#b29a8c>....</TD><TD BGCOLOR=#b79a8b>....</TD><TD BGCOLOR=#b59787>....</TD></TR>
<TR><TD BGCOLOR=#1d0f06 COLSPAN=2>....</TD><TD BGCOLOR=#1f0803>....</TD><TD BGCOLOR=#210602>....</TD><TD BGCOLOR=#1e0902>....</TD><TD BGCOLOR=#1d0903>....</TD><TD BGCOLOR=#230f08>....</TD><TD BGCOLOR=#220e07>....</TD><TD BGCOLOR=#200c06>....</TD><TD BGCOLOR=#1f0b04>....</TD><TD BGCOLOR=#1e0a04>....</TD><TD BGCOLOR=#1d0902>....</TD><TD BGCOLOR=#200804>....</TD><TD BGCOLOR=#1e0803>....</TD><TD BGCOLOR=#1d0f05>....</TD><TD BGCOLOR=#1b0c01>....</TD><TD BGCOLOR=#330b04>....</TD><TD BGCOLOR=#514431>....</TD><TD BGCOLOR=#595239>....</TD><TD BGCOLOR=#5f5238>....</TD><TD BGCOLOR=#63593e>....</TD><TD BGCOLOR=#656c58>....</TD><TD BGCOLOR=#625c3c>....</TD><TD BGCOLOR=#645f49>....</TD><TD BGCOLOR=#584f37>....</TD><TD BGCOLOR=#4e401f>....</TD><TD BGCOLOR=#493416>....</TD><TD BGCOLOR=#493008>....</TD><TD BGCOLOR=#4e300a>....</TD><TD BGCOLOR=#4e2e0b>....</TD><TD BGCOLOR=#442908>....</TD><TD BGCOLOR=#452a07>....</TD><TD BGCOLOR=#4e3316>....</TD><TD BGCOLOR=#5a4d41>....</TD><TD BGCOLOR=#5b4638>....</TD><TD BGCOLOR=#654733>....</TD><TD BGCOLOR=#665340>....</TD><TD BGCOLOR=#746e5a>....</TD><TD BGCOLOR=#837466>....</TD><TD BGCOLOR=#8e7b69>....</TD><TD BGCOLOR=#937f71>....</TD><TD BGCOLOR=#9e867b>....</TD><TD BGCOLOR=#a88e7e>....</TD><TD BGCOLOR=#ad8d77>....</TD><TD BGCOLOR=#b5967e>....</TD><TD BGCOLOR=#b1967d>....</TD><TD BGCOLOR=#b29980>....</TD><TD BGCOLOR=#b39980>....</TD><TD BGCOLOR=#b69b86>....</TD><TD BGCOLOR=#b69b87>....</TD><TD BGCOLOR=#b29786>....</TD><TD BGCOLOR=#b79a86>....</TD><TD BGCOLOR=#af8a76>....</TD><TD BGCOLOR=#ac907f>....</TD><TD BGCOLOR=#a09181>....</TD><TD BGCOLOR=#a58f76>....</TD><TD BGCOLOR=#a99070>....</TD><TD BGCOLOR=#a48b71>....</TD><TD BGCOLOR=#9e856d>....</TD><TD BGCOLOR=#9c8062>....</TD><TD BGCOLOR=#a08167>....</TD><TD BGCOLOR=#a17e69>....</TD><TD BGCOLOR=#9d856f>....</TD><TD BGCOLOR=#96846e>....</TD><TD BGCOLOR=#928069>....</TD><TD BGCOLOR=#8c7a63>....</TD><TD BGCOLOR=#826d59>....</TD><TD BGCOLOR=#7e665c>....</TD><TD BGCOLOR=#7a615d>....</TD><TD BGCOLOR=#6d554c>....</TD><TD BGCOLOR=#64504c>....</TD><TD BGCOLOR=#61534b>....</TD><TD BGCOLOR=#615348>....</TD><TD BGCOLOR=#66584d>....</TD><TD BGCOLOR=#5e5850>....</TD><TD BGCOLOR=#633e36>....</TD><TD BGCOLOR=#614938>....</TD><TD BGCOLOR=#715f4d>....</TD><TD BGCOLOR=#806857>....</TD><TD BGCOLOR=#8b6c5a>....</TD><TD BGCOLOR=#906856>....</TD><TD BGCOLOR=#926557>....</TD><TD BGCOLOR=#936358>....</TD><TD BGCOLOR=#956456>....</TD><TD BGCOLOR=#926150>....</TD><TD BGCOLOR=#986956>....</TD><TD BGCOLOR=#9f735b>....</TD><TD BGCOLOR=#956c59>....</TD><TD BGCOLOR=#916961>....</TD><TD BGCOLOR=#80705d>....</TD><TD BGCOLOR=#7b6f5c>....</TD><TD BGCOLOR=#665648>....</TD><TD BGCOLOR=#604b40>....</TD><TD BGCOLOR=#644b38>....</TD><TD BGCOLOR=#634a3f>....</TD><TD BGCOLOR=#645044>....</TD><TD BGCOLOR=#675443>....</TD><TD BGCOLOR=#6f584a>....</TD><TD BGCOLOR=#6d5f4e>....</TD><TD BGCOLOR=#756756>....</TD><TD BGCOLOR=#7e6d5b>....</TD><TD BGCOLOR=#887662>....</TD><TD BGCOLOR=#8b7a62>....</TD><TD BGCOLOR=#8c7b60>....</TD><TD BGCOLOR=#907c67>....</TD><TD BGCOLOR=#967b6d>....</TD><TD BGCOLOR=#957866>....</TD><TD BGCOLOR=#9d846f>....</TD><TD BGCOLOR=#9c8774>....</TD><TD BGCOLOR=#9d8679>....</TD><TD BGCOLOR=#a2877e>....</TD><TD BGCOLOR=#a88b7e>....</TD><TD BGCOLOR=#a39485>....</TD><TD BGCOLOR=#ac9589>....</TD><TD BGCOLOR=#b39587>....</TD><TD BGCOLOR=#af9381>....</TD></TR>
<TR><TD BGCOLOR=#210d07 COLSPAN=2>....</TD><TD BGCOLOR=#210704>....</TD><TD BGCOLOR=#210903>....</TD><TD BGCOLOR=#1c0b03>....</TD><TD BGCOLOR=#1e0a03>....</TD><TD BGCOLOR=#210d07>....</TD><TD BGCOLOR=#1f0b04>....</TD><TD BGCOLOR=#1e0a04>....</TD><TD BGCOLOR=#1f0b04>....</TD><TD BGCOLOR=#1f0b05>....</TD><TD BGCOLOR=#1d0902>....</TD><TD BGCOLOR=#210905>....</TD><TD BGCOLOR=#1d0803>....</TD><TD BGCOLOR=#200f06>....</TD><TD BGCOLOR=#220b02>....</TD><TD BGCOLOR=#330a03>....</TD><TD BGCOLOR=#504732>....</TD><TD BGCOLOR=#575339>....</TD><TD BGCOLOR=#5e553a>....</TD><TD BGCOLOR=#62583d>....</TD><TD BGCOLOR=#656c57>....</TD><TD BGCOLOR=#615b3b>....</TD><TD BGCOLOR=#625d47>....</TD><TD BGCOLOR=#564c33>....</TD><TD BGCOLOR=#483918>....</TD><TD BGCOLOR=#493314>....</TD><TD BGCOLOR=#4c3109>....</TD><TD BGCOLOR=#51320c>....</TD><TD BGCOLOR=#482d08>....</TD><TD BGCOLOR=#412906>....</TD><TD BGCOLOR=#44280b>....</TD><TD BGCOLOR=#563926>....</TD><TD BGCOLOR=#5e4d41>....</TD><TD BGCOLOR=#5b4737>....</TD><TD BGCOLOR=#644b3a>....</TD><TD BGCOLOR=#685646>....</TD><TD BGCOLOR=#726553>....</TD><TD BGCOLOR=#837663>....</TD><TD BGCOLOR=#8d7a67>....</TD><TD BGCOLOR=#8f7b6d>....</TD><TD BGCOLOR=#948074>....</TD><TD BGCOLOR=#9c8a78>....</TD><TD BGCOLOR=#a48e75>....</TD><TD BGCOLOR=#aa9178>....</TD><TD BGCOLOR=#ae947b>....</TD><TD BGCOLOR=#b0957d>....</TD><TD BGCOLOR=#b2987f>....</TD><TD BGCOLOR=#b19781>....</TD><TD BGCOLOR=#b29784>....</TD><TD BGCOLOR=#b59987>....</TD><TD BGCOLOR=#b99581>....</TD><TD BGCOLOR=#bd937e>....</TD><TD BGCOLOR=#af937f>....</TD><TD BGCOLOR=#ab9a86>....</TD><TD BGCOLOR=#a99278>....</TD><TD BGCOLOR=#a68d70>....</TD><TD BGCOLOR=#a5866e>....</TD><TD BGCOLOR=#a3826b>....</TD><TD BGCOLOR=#997b61>....</TD><TD BGCOLOR=#a27f6a>....</TD><TD BGCOLOR=#9f7968>....</TD><TD BGCOLOR=#947a68>....</TD><TD BGCOLOR=#897663>....</TD><TD BGCOLOR=#8a7864>....</TD><TD BGCOLOR=#877461>....</TD><TD BGCOLOR=#7f6d59>....</TD><TD BGCOLOR=#786459>....</TD><TD BGCOLOR=#705b55>....</TD><TD BGCOLOR=#665247>....</TD><TD BGCOLOR=#675545>....</TD><TD BGCOLOR=#665948>....</TD><TD BGCOLOR=#6d6050>....</TD><TD BGCOLOR=#726255>....</TD><TD BGCOLOR=#686656>....</TD><TD BGCOLOR=#684f47>....</TD><TD BGCOLOR=#52372c>....</TD><TD BGCOLOR=#665646>....</TD><TD BGCOLOR=#775e51>....</TD><TD BGCOLOR=#836a5a>....</TD><TD BGCOLOR=#866c58>....</TD><TD BGCOLOR=#8e6959>....</TD><TD BGCOLOR=#8e5f53>....</TD><TD BGCOLOR=#8a5c4d>....</TD><TD BGCOLOR=#855947>....</TD><TD BGCOLOR=#996854>....</TD><TD BGCOLOR=#986a51>....</TD><TD BGCOLOR=#936c54>....</TD><TD BGCOLOR=#8c6b5e>....</TD><TD BGCOLOR=#796e5d>....</TD><TD BGCOLOR=#6c6252>....</TD><TD BGCOLOR=#625549>....</TD><TD BGCOLOR=#6a5a50>....</TD><TD BGCOLOR=#6d5d45>....</TD><TD BGCOLOR=#665344>....</TD><TD BGCOLOR=#675349>....</TD><TD BGCOLOR=#675043>....</TD><TD BGCOLOR=#6a4f43>....</TD><TD BGCOLOR=#6c5a4a>....</TD><TD BGCOLOR=#726151>....</TD><TD BGCOLOR=#796555>....</TD><TD BGCOLOR=#7e6b58>....</TD><TD BGCOLOR=#8b7962>....</TD><TD BGCOLOR=#8d7c61>....</TD><TD BGCOLOR=#8e7965>....</TD><TD BGCOLOR=#957f6f>....</TD><TD BGCOLOR=#98836f>....</TD><TD BGCOLOR=#9c8770>....</TD><TD BGCOLOR=#958072>....</TD><TD BGCOLOR=#998579>....</TD><TD BGCOLOR=#9b897b>....</TD><TD BGCOLOR=#98867b>....</TD><TD BGCOLOR=#978b7d>....</TD><TD BGCOLOR=#a08a7d>....</TD><TD BGCOLOR=#aa8c7d>....</TD><TD BGCOLOR=#a78b7a>....</TD></TR>
<TR><TD BGCOLOR=#200804 COLSPAN=2>....</TD><TD BGCOLOR=#230805>....</TD><TD BGCOLOR=#1e0a03>....</TD><TD BGCOLOR=#1a0d04>....</TD><TD BGCOLOR=#1e0a03>....</TD><TD BGCOLOR=#200b04>....</TD><TD BGCOLOR=#1f0a04>....</TD><TD BGCOLOR=#1e0903>....</TD><TD BGCOLOR=#200b04>....</TD><TD BGCOLOR=#1f0b04>....</TD><TD BGCOLOR=#1e0a03>....</TD><TD BGCOLOR=#1e0904>....</TD><TD BGCOLOR=#1c0803>....</TD><TD BGCOLOR=#220d06>....</TD><TD BGCOLOR=#260701>....</TD><TD BGCOLOR=#310702>....</TD><TD BGCOLOR=#4f4833>....</TD><TD BGCOLOR=#555539>....</TD><TD BGCOLOR=#5d563a>....</TD><TD BGCOLOR=#61573d>....</TD><TD BGCOLOR=#666d58>....</TD><TD BGCOLOR=#625c3c>....</TD><TD BGCOLOR=#5e5842>....</TD><TD BGCOLOR=#574526>....</TD><TD BGCOLOR=#4c360e>....</TD><TD BGCOLOR=#51320e>....</TD><TD BGCOLOR=#512f02>....</TD><TD BGCOLOR=#502f09>....</TD><TD BGCOLOR=#49320b>....</TD><TD BGCOLOR=#432b09>....</TD><TD BGCOLOR=#45270e>....</TD><TD BGCOLOR=#5c4034>....</TD><TD BGCOLOR=#5f4a3e>....</TD><TD BGCOLOR=#5d4938>....</TD><TD BGCOLOR=#634e3f>....</TD><TD BGCOLOR=#69554a>....</TD><TD BGCOLOR=#746452>....</TD><TD BGCOLOR=#7b6f57>....</TD><TD BGCOLOR=#897761>....</TD><TD BGCOLOR=#8e7a6c>....</TD><TD BGCOLOR=#928275>....</TD><TD BGCOLOR=#928873>....</TD><TD BGCOLOR=#9a8c70>....</TD><TD BGCOLOR=#9f8d71>....</TD><TD BGCOLOR=#a78e75>....</TD><TD BGCOLOR=#ad9179>....</TD><TD BGCOLOR=#b0957d>....</TD><TD BGCOLOR=#b19680>....</TD><TD BGCOLOR=#b39884>....</TD><TD BGCOLOR=#b19683>....</TD><TD BGCOLOR=#b4967d>....</TD><TD BGCOLOR=#b88e76>....</TD><TD BGCOLOR=#b89580>....</TD><TD BGCOLOR=#b59785>....</TD><TD BGCOLOR=#af8e78>....</TD><TD BGCOLOR=#a48b73>....</TD><TD BGCOLOR=#a78c74>....</TD><TD BGCOLOR=#a88c74>....</TD><TD BGCOLOR=#a18870>....</TD><TD BGCOLOR=#9d806c>....</TD><TD BGCOLOR=#9b7a6a>....</TD><TD BGCOLOR=#967e6f>....</TD><TD BGCOLOR=#8d7a6b>....</TD><TD BGCOLOR=#887565>....</TD><TD BGCOLOR=#806d5e>....</TD><TD BGCOLOR=#7a6a56>....</TD><TD BGCOLOR=#716154>....</TD><TD BGCOLOR=#65544c>....</TD><TD BGCOLOR=#675649>....</TD><TD BGCOLOR=#6d5c42>....</TD><TD BGCOLOR=#6e634a>....</TD><TD BGCOLOR=#716452>....</TD><TD BGCOLOR=#776656>....</TD><TD BGCOLOR=#6a6a53>....</TD><TD BGCOLOR=#66574e>....</TD><TD BGCOLOR=#50332e>....</TD><TD BGCOLOR=#5c5241>....</TD><TD BGCOLOR=#69594b>....</TD><TD BGCOLOR=#766253>....</TD><TD BGCOLOR=#7d6655>....</TD><TD BGCOLOR=#856757>....</TD><TD BGCOLOR=#8c6658>....</TD><TD BGCOLOR=#885e4e>....</TD><TD BGCOLOR=#885948>....</TD><TD BGCOLOR=#8e5e4d>....</TD><TD BGCOLOR=#926954>....</TD><TD BGCOLOR=#8a6d59>....</TD><TD BGCOLOR=#7c685d>....</TD><TD BGCOLOR=#70695a>....</TD><TD BGCOLOR=#5c5546>....</TD><TD BGCOLOR=#54483f>....</TD><TD BGCOLOR=#5e4f49>....</TD><TD BGCOLOR=#635947>....</TD><TD BGCOLOR=#6e5f53>....</TD><TD BGCOLOR=#695647>....</TD><TD BGCOLOR=#654e3b>....</TD><TD BGCOLOR=#694b40>....</TD><TD BGCOLOR=#6a5547>....</TD><TD BGCOLOR=#715d4e>....</TD><TD BGCOLOR=#755f52>....</TD><TD BGCOLOR=#7b675d>....</TD><TD BGCOLOR=#816e60>....</TD><TD BGCOLOR=#877463>....</TD><TD BGCOLOR=#907a6b>....</TD><TD BGCOLOR=#927f6e>....</TD><TD BGCOLOR=#93856f>....</TD><TD BGCOLOR=#927f68>....</TD><TD BGCOLOR=#988279>....</TD><TD BGCOLOR=#97877b>....</TD><TD BGCOLOR=#8f8473>....</TD><TD BGCOLOR=#898177>....</TD><TD BGCOLOR=#8d8276>....</TD><TD BGCOLOR=#998275>....</TD><TD BGCOLOR=#a08274>....</TD><TD BGCOLOR=#a28675>....</TD></TR>
</TABLE><TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD BGCOLOR=#1e0805>....</TD><TD BGCOLOR=#1e0805>....</TD><TD BGCOLOR=#200704>....</TD><TD BGCOLOR=#240905>....</TD><TD BGCOLOR=#220702>....</TD><TD BGCOLOR=#240b00>....</TD><TD BGCOLOR=#250903>....</TD><TD BGCOLOR=#250706>....</TD><TD BGCOLOR=#230605>....</TD><TD BGCOLOR=#240602>....</TD><TD BGCOLOR=#260503>....</TD><TD BGCOLOR=#190c03>....</TD><TD BGCOLOR=#130b00>....</TD><TD BGCOLOR=#1b0603>....</TD><TD BGCOLOR=#1f090a>....</TD><TD BGCOLOR=#220c01>....</TD><TD BGCOLOR=#300a02>....</TD><TD BGCOLOR=#554634>....</TD><TD BGCOLOR=#59533a>....</TD><TD BGCOLOR=#63543b>....</TD><TD BGCOLOR=#5d5a45>....</TD><TD BGCOLOR=#666b51>....</TD><TD BGCOLOR=#5c5d40>....</TD><TD BGCOLOR=#5c5643>....</TD><TD BGCOLOR=#50411f>....</TD><TD BGCOLOR=#4b340f>....</TD><TD BGCOLOR=#54310d>....</TD><TD BGCOLOR=#552c07>....</TD><TD BGCOLOR=#4d320a>....</TD><TD BGCOLOR=#443109>....</TD><TD BGCOLOR=#402907>....</TD><TD BGCOLOR=#4e311a>....</TD><TD BGCOLOR=#584032>....</TD><TD BGCOLOR=#624d3b>....</TD><TD BGCOLOR=#5c4c35>....</TD><TD BGCOLOR=#624f3c>....</TD><TD BGCOLOR=#6d5246>....</TD><TD BGCOLOR=#786052>....</TD><TD BGCOLOR=#7d6b5a>....</TD><TD BGCOLOR=#88745d>....</TD><TD BGCOLOR=#8b7a63>....</TD><TD BGCOLOR=#8f806d>....</TD><TD BGCOLOR=#917e6f>....</TD><TD BGCOLOR=#988472>....</TD><TD BGCOLOR=#9b8b70>....</TD><TD BGCOLOR=#9f8872>....</TD><TD BGCOLOR=#ae8f76>....</TD><TD BGCOLOR=#a98f76>....</TD><TD BGCOLOR=#ac9279>....</TD><TD BGCOLOR=#ae937c>....</TD><TD BGCOLOR=#ac917a>....</TD><TD BGCOLOR=#b1937b>....</TD><TD BGCOLOR=#b1937a>....</TD><TD BGCOLOR=#b39980>....</TD><TD BGCOLOR=#b69a83>....</TD><TD BGCOLOR=#b0927e>....</TD><TD BGCOLOR=#9e8b73>....</TD><TD BGCOLOR=#a68c76>....</TD><TD BGCOLOR=#a88a74>....</TD><TD BGCOLOR=#9f846e>....</TD><TD BGCOLOR=#9b806b>....</TD><TD BGCOLOR=#9a7e69>....</TD><TD BGCOLOR=#8e7d69>....</TD><TD BGCOLOR=#8c796a>....</TD><TD BGCOLOR=#846e63>....</TD><TD BGCOLOR=#74645a>....</TD><TD BGCOLOR=#73624d>....</TD><TD BGCOLOR=#685847>....</TD><TD BGCOLOR=#625142>....</TD><TD BGCOLOR=#6a5541>....</TD><TD BGCOLOR=#6d5b40>....</TD><TD BGCOLOR=#72634b>....</TD><TD BGCOLOR=#6b5e4d>....</TD><TD BGCOLOR=#67594c>....</TD><TD BGCOLOR=#514236>....</TD><TD BGCOLOR=#463432>....</TD><TD BGCOLOR=#4d3836>....</TD><TD BGCOLOR=#54433a>....</TD><TD BGCOLOR=#634e46>....</TD><TD BGCOLOR=#6e5b4e>....</TD><TD BGCOLOR=#72594b>....</TD><TD BGCOLOR=#7f5f50>....</TD><TD BGCOLOR=#8b665b>....</TD><TD BGCOLOR=#875b53>....</TD><TD BGCOLOR=#875547>....</TD><TD BGCOLOR=#915a4f>....</TD><TD BGCOLOR=#8d6158>....</TD><TD BGCOLOR=#83695b>....</TD><TD BGCOLOR=#7a6357>....</TD><TD BGCOLOR=#67605b>....</TD><TD BGCOLOR=#3e322e>....</TD><TD BGCOLOR=#251310>....</TD><TD BGCOLOR=#3d2b2b>....</TD><TD BGCOLOR=#564c47>....</TD><TD BGCOLOR=#605250>....</TD><TD BGCOLOR=#604f47>....</TD><TD BGCOLOR=#5c4a3a>....</TD><TD BGCOLOR=#664e42>....</TD><TD BGCOLOR=#705448>....</TD><TD BGCOLOR=#735a49>....</TD><TD BGCOLOR=#745f50>....</TD><TD BGCOLOR=#7c685e>....</TD><TD BGCOLOR=#7d6d5b>....</TD><TD BGCOLOR=#88796b>....</TD><TD BGCOLOR=#887368>....</TD><TD BGCOLOR=#93786a>....</TD><TD BGCOLOR=#937a6b>....</TD><TD BGCOLOR=#957a6c>....</TD><TD BGCOLOR=#998677>....</TD><TD BGCOLOR=#948777>....</TD><TD BGCOLOR=#948877>....</TD><TD BGCOLOR=#918676>....</TD><TD BGCOLOR=#8e7f76>....</TD><TD BGCOLOR=#967d76>....</TD><TD BGCOLOR=#9a7c70>....</TD><TD BGCOLOR=#9a806f>....</TD></TR>
<TR><TD BGCOLOR=#1d0905 COLSPAN=2>....</TD><TD BGCOLOR=#200704>....</TD><TD BGCOLOR=#240805>....</TD><TD BGCOLOR=#240603>....</TD><TD BGCOLOR=#260a02>....</TD><TD BGCOLOR=#250a03>....</TD><TD BGCOLOR=#230805>....</TD><TD BGCOLOR=#210704>....</TD><TD BGCOLOR=#220602>....</TD><TD BGCOLOR=#220803>....</TD><TD BGCOLOR=#180d03>....</TD><TD BGCOLOR=#160b00>....</TD><TD BGCOLOR=#1b0602>....</TD><TD BGCOLOR=#1b0606>....</TD><TD BGCOLOR=#1e0b00>....</TD><TD BGCOLOR=#2f0a02>....</TD><TD BGCOLOR=#564634>....</TD><TD BGCOLOR=#5a533a>....</TD><TD BGCOLOR=#64533b>....</TD><TD BGCOLOR=#5f5945>....</TD><TD BGCOLOR=#676b51>....</TD><TD BGCOLOR=#5a5c43>....</TD><TD BGCOLOR=#5b503e>....</TD><TD BGCOLOR=#4f401d>....</TD><TD BGCOLOR=#48330f>....</TD><TD BGCOLOR=#52320e>....</TD><TD BGCOLOR=#512e09>....</TD><TD BGCOLOR=#4b320c>....</TD><TD BGCOLOR=#45300b>....</TD><TD BGCOLOR=#3d2505>....</TD><TD BGCOLOR=#543821>....</TD><TD BGCOLOR=#5b4336>....</TD><TD BGCOLOR=#635140>....</TD><TD BGCOLOR=#61513b>....</TD><TD BGCOLOR=#644e3c>....</TD><TD BGCOLOR=#6c5245>....</TD><TD BGCOLOR=#766253>....</TD><TD BGCOLOR=#7b6859>....</TD><TD BGCOLOR=#846e5c>....</TD><TD BGCOLOR=#877662>....</TD><TD BGCOLOR=#8e7e6c>....</TD><TD BGCOLOR=#937c6f>....</TD><TD BGCOLOR=#988173>....</TD><TD BGCOLOR=#998870>....</TD><TD BGCOLOR=#9c8975>....</TD><TD BGCOLOR=#a58b72>....</TD><TD BGCOLOR=#a38b73>....</TD><TD BGCOLOR=#a28972>....</TD><TD BGCOLOR=#a99079>....</TD><TD BGCOLOR=#ac927b>....</TD><TD BGCOLOR=#ac907a>....</TD><TD BGCOLOR=#a98f78>....</TD><TD BGCOLOR=#a9947c>....</TD><TD BGCOLOR=#ab937c>....</TD><TD BGCOLOR=#a88d7a>....</TD><TD BGCOLOR=#a19079>....</TD><TD BGCOLOR=#a18974>....</TD><TD BGCOLOR=#9c806e>....</TD><TD BGCOLOR=#957e6b>....</TD><TD BGCOLOR=#947c6a>....</TD><TD BGCOLOR=#927b68>....</TD><TD BGCOLOR=#8b7a67>....</TD><TD BGCOLOR=#867566>....</TD><TD BGCOLOR=#766357>....</TD><TD BGCOLOR=#705f56>....</TD><TD BGCOLOR=#6b5849>....</TD><TD BGCOLOR=#605446>....</TD><TD BGCOLOR=#5c5245>....</TD><TD BGCOLOR=#615341>....</TD><TD BGCOLOR=#645345>....</TD><TD BGCOLOR=#655343>....</TD><TD BGCOLOR=#56412e>....</TD><TD BGCOLOR=#442e1b>....</TD><TD BGCOLOR=#342014>....</TD><TD BGCOLOR=#2b1916>....</TD><TD BGCOLOR=#4a3c3a>....</TD><TD BGCOLOR=#4f403a>....</TD><TD BGCOLOR=#604a43>....</TD><TD BGCOLOR=#685649>....</TD><TD BGCOLOR=#765c4f>....</TD><TD BGCOLOR=#826154>....</TD><TD BGCOLOR=#846055>....</TD><TD BGCOLOR=#895f55>....</TD><TD BGCOLOR=#88584a>....</TD><TD BGCOLOR=#8d5e50>....</TD><TD BGCOLOR=#8c6659>....</TD><TD BGCOLOR=#816659>....</TD><TD BGCOLOR=#786157>....</TD><TD BGCOLOR=#5b534f>....</TD><TD BGCOLOR=#281a11>....</TD><TD BGCOLOR=#220e04>....</TD><TD BGCOLOR=#241009>....</TD><TD BGCOLOR=#34291e>....</TD><TD BGCOLOR=#4f413b>....</TD><TD BGCOLOR=#58473f>....</TD><TD BGCOLOR=#5f4e3f>....</TD><TD BGCOLOR=#655348>....</TD><TD BGCOLOR=#6c5348>....</TD><TD BGCOLOR=#6e5949>....</TD><TD BGCOLOR=#716151>....</TD><TD BGCOLOR=#776558>....</TD><TD BGCOLOR=#7e6f5f>....</TD><TD BGCOLOR=#817566>....</TD><TD BGCOLOR=#877569>....</TD><TD BGCOLOR=#8c7467>....</TD><TD BGCOLOR=#937a6d>....</TD><TD BGCOLOR=#91796c>....</TD><TD BGCOLOR=#958474>....</TD><TD BGCOLOR=#918473>....</TD><TD BGCOLOR=#938675>....</TD><TD BGCOLOR=#938574>....</TD><TD BGCOLOR=#978177>....</TD><TD BGCOLOR=#9a7f77>....</TD><TD BGCOLOR=#90776b>....</TD><TD BGCOLOR=#8f7f6f>....</TD></TR>
<TR><TD BGCOLOR=#1a0500 COLSPAN=2>....</TD><TD BGCOLOR=#1f0602>....</TD><TD BGCOLOR=#200401>....</TD><TD BGCOLOR=#220302>....</TD><TD BGCOLOR=#200300>....</TD><TD BGCOLOR=#200702>....</TD><TD BGCOLOR=#1f0c02>....</TD><TD BGCOLOR=#1d0a01>....</TD><TD BGCOLOR=#1f0903>....</TD><TD BGCOLOR=#170c04>....</TD><TD BGCOLOR=#190e04>....</TD><TD BGCOLOR=#180601>....</TD><TD BGCOLOR=#1b0602>....</TD><TD BGCOLOR=#1f0a05>....</TD><TD BGCOLOR=#200c01>....</TD><TD BGCOLOR=#2e0902>....</TD><TD BGCOLOR=#564634>....</TD><TD BGCOLOR=#575037>....</TD><TD BGCOLOR=#604f37>....</TD><TD BGCOLOR=#645842>....</TD><TD BGCOLOR=#656751>....</TD><TD BGCOLOR=#595a45>....</TD><TD BGCOLOR=#5d4c39>....</TD><TD BGCOLOR=#493816>....</TD><TD BGCOLOR=#432f0a>....</TD><TD BGCOLOR=#4d340d>....</TD><TD BGCOLOR=#482d06>....</TD><TD BGCOLOR=#49310e>....</TD><TD BGCOLOR=#462b0b>....</TD><TD BGCOLOR=#3c2206>....</TD><TD BGCOLOR=#533824>....</TD><TD BGCOLOR=#5f453c>....</TD><TD BGCOLOR=#625545>....</TD><TD BGCOLOR=#625240>....</TD><TD BGCOLOR=#6b5243>....</TD><TD BGCOLOR=#6c5748>....</TD><TD BGCOLOR=#6e6351>....</TD><TD BGCOLOR=#766656>....</TD><TD BGCOLOR=#7e665a>....</TD><TD BGCOLOR=#816e61>....</TD><TD BGCOLOR=#887868>....</TD><TD BGCOLOR=#8e7869>....</TD><TD BGCOLOR=#93796e>....</TD><TD BGCOLOR=#8d7d67>....</TD><TD BGCOLOR=#8e806f>....</TD><TD BGCOLOR=#95846c>....</TD><TD BGCOLOR=#9b856f>....</TD><TD BGCOLOR=#9f8a74>....</TD><TD BGCOLOR=#a08a74>....</TD><TD BGCOLOR=#a38c76>....</TD><TD BGCOLOR=#a68c77>....</TD><TD BGCOLOR=#ab957f>....</TD><TD BGCOLOR=#a39179>....</TD><TD BGCOLOR=#a8937e>....</TD><TD BGCOLOR=#a08877>....</TD><TD BGCOLOR=#9b8e79>....</TD><TD BGCOLOR=#947e6c>....</TD><TD BGCOLOR=#977f71>....</TD><TD BGCOLOR=#907e71>....</TD><TD BGCOLOR=#887669>....</TD><TD BGCOLOR=#867568>....</TD><TD BGCOLOR=#816f60>....</TD><TD BGCOLOR=#7c6c5c>....</TD><TD BGCOLOR=#706255>....</TD><TD BGCOLOR=#6b5850>....</TD><TD BGCOLOR=#605141>....</TD><TD BGCOLOR=#5d5346>....</TD><TD BGCOLOR=#584e42>....</TD><TD BGCOLOR=#5d4b3b>....</TD><TD BGCOLOR=#584237>....</TD><TD BGCOLOR=#49301f>....</TD><TD BGCOLOR=#4c3117>....</TD><TD BGCOLOR=#462b0e>....</TD><TD BGCOLOR=#432f1f>....</TD><TD BGCOLOR=#1a0b08>....</TD><TD BGCOLOR=#3d3735>....</TD><TD BGCOLOR=#5a514c>....</TD><TD BGCOLOR=#57413a>....</TD><TD BGCOLOR=#6b584c>....</TD><TD BGCOLOR=#785d51>....</TD><TD BGCOLOR=#826257>....</TD><TD BGCOLOR=#806054>....</TD><TD BGCOLOR=#866151>....</TD><TD BGCOLOR=#85594a>....</TD><TD BGCOLOR=#83614c>....</TD><TD BGCOLOR=#886c58>....</TD><TD BGCOLOR=#7c6257>....</TD><TD BGCOLOR=#6c5953>....</TD><TD BGCOLOR=#574c4b>....</TD><TD BGCOLOR=#3b2c19>....</TD><TD BGCOLOR=#3e280c>....</TD><TD BGCOLOR=#45301c>....</TD><TD BGCOLOR=#41341d>....</TD><TD BGCOLOR=#3c2c1e>....</TD><TD BGCOLOR=#4c382d>....</TD><TD BGCOLOR=#5b4739>....</TD><TD BGCOLOR=#5c5047>....</TD><TD BGCOLOR=#655349>....</TD><TD BGCOLOR=#685a4b>....</TD><TD BGCOLOR=#6f6453>....</TD><TD BGCOLOR=#706253>....</TD><TD BGCOLOR=#776b5f>....</TD><TD BGCOLOR=#78705f>....</TD><TD BGCOLOR=#817566>....</TD><TD BGCOLOR=#867569>....</TD><TD BGCOLOR=#8a786d>....</TD><TD BGCOLOR=#8d7c70>....</TD><TD BGCOLOR=#8e8070>....</TD><TD BGCOLOR=#8c7f6e>....</TD><TD BGCOLOR=#928574>....</TD><TD BGCOLOR=#918473>....</TD><TD BGCOLOR=#968475>....</TD><TD BGCOLOR=#937b6f>....</TD><TD BGCOLOR=#8b766b>....</TD><TD BGCOLOR=#8b8073>....</TD></TR>
<TR><TD BGCOLOR=#1a0501 COLSPAN=2>....</TD><TD BGCOLOR=#200603>....</TD><TD BGCOLOR=#1f0401>....</TD><TD BGCOLOR=#220302>....</TD><TD BGCOLOR=#210102>....</TD><TD BGCOLOR=#1f0802>....</TD><TD BGCOLOR=#1b0e00>....</TD><TD BGCOLOR=#190c00>....</TD><TD BGCOLOR=#1b0b03>....</TD><TD BGCOLOR=#110f04>....</TD><TD BGCOLOR=#190e04>....</TD><TD BGCOLOR=#1b0401>....</TD><TD BGCOLOR=#1c0702>....</TD><TD BGCOLOR=#1f0b02>....</TD><TD BGCOLOR=#200c03>....</TD><TD BGCOLOR=#2e0902>....</TD><TD BGCOLOR=#564634>....</TD><TD BGCOLOR=#575038>....</TD><TD BGCOLOR=#604f37>....</TD><TD BGCOLOR=#675741>....</TD><TD BGCOLOR=#636651>....</TD><TD BGCOLOR=#575845>....</TD><TD BGCOLOR=#5e4935>....</TD><TD BGCOLOR=#4b3615>....</TD><TD BGCOLOR=#422e0a>....</TD><TD BGCOLOR=#4a360d>....</TD><TD BGCOLOR=#443007>....</TD><TD BGCOLOR=#493412>....</TD><TD BGCOLOR=#45260a>....</TD><TD BGCOLOR=#40240b>....</TD><TD BGCOLOR=#523826>....</TD><TD BGCOLOR=#644942>....</TD><TD BGCOLOR=#605546>....</TD><TD BGCOLOR=#675647>....</TD><TD BGCOLOR=#6b4f42>....</TD><TD BGCOLOR=#6c5b4b>....</TD><TD BGCOLOR=#6a6651>....</TD><TD BGCOLOR=#766756>....</TD><TD BGCOLOR=#7e655d>....</TD><TD BGCOLOR=#806c64>....</TD><TD BGCOLOR=#817162>....</TD><TD BGCOLOR=#8a7565>....</TD><TD BGCOLOR=#8e746c>....</TD><TD BGCOLOR=#8a7a68>....</TD><TD BGCOLOR=#897e6e>....</TD><TD BGCOLOR=#90846d>....</TD><TD BGCOLOR=#96836f>....</TD><TD BGCOLOR=#94816d>....</TD><TD BGCOLOR=#9b8875>....</TD><TD BGCOLOR=#9b8874>....</TD><TD BGCOLOR=#9b8572>....</TD><TD BGCOLOR=#9d8a77>....</TD><TD BGCOLOR=#998874>....</TD><TD BGCOLOR=#9d8a78>....</TD><TD BGCOLOR=#9b8778>....</TD><TD BGCOLOR=#8b816e>....</TD><TD BGCOLOR=#8c796a>....</TD><TD BGCOLOR=#8b756a>....</TD><TD BGCOLOR=#85796e>....</TD><TD BGCOLOR=#7f7167>....</TD><TD BGCOLOR=#7b6d62>....</TD><TD BGCOLOR=#796658>....</TD><TD BGCOLOR=#6f6050>....</TD><TD BGCOLOR=#645a4b>....</TD><TD BGCOLOR=#68554c>....</TD><TD BGCOLOR=#60573f>....</TD><TD BGCOLOR=#574f3b>....</TD><TD BGCOLOR=#564234>....</TD><TD BGCOLOR=#502c1b>....</TD><TD BGCOLOR=#47250e>....</TD><TD BGCOLOR=#4a2c10>....</TD><TD BGCOLOR=#4b310d>....</TD><TD BGCOLOR=#422b06>....</TD><TD BGCOLOR=#422c18>....</TD><TD BGCOLOR=#130605>....</TD><TD BGCOLOR=#3e3c3b>....</TD><TD BGCOLOR=#5d5755>....</TD><TD BGCOLOR=#5f4942>....</TD><TD BGCOLOR=#634f43>....</TD><TD BGCOLOR=#73594d>....</TD><TD BGCOLOR=#785a51>....</TD><TD BGCOLOR=#7a5c4f>....</TD><TD BGCOLOR=#7d5a47>....</TD><TD BGCOLOR=#805749>....</TD><TD BGCOLOR=#7e674e>....</TD><TD BGCOLOR=#77614a>....</TD><TD BGCOLOR=#6e554a>....</TD><TD BGCOLOR=#655451>....</TD><TD BGCOLOR=#5b514f>....</TD><TD BGCOLOR=#4d3b22>....</TD><TD BGCOLOR=#4a320b>....</TD><TD BGCOLOR=#473116>....</TD><TD BGCOLOR=#463517>....</TD><TD BGCOLOR=#46331e>....</TD><TD BGCOLOR=#422c1d>....</TD><TD BGCOLOR=#4b3527>....</TD><TD BGCOLOR=#4e463e>....</TD><TD BGCOLOR=#574a40>....</TD><TD BGCOLOR=#64594b>....</TD><TD BGCOLOR=#68614f>....</TD><TD BGCOLOR=#6c6151>....</TD><TD BGCOLOR=#6e645a>....</TD><TD BGCOLOR=#736e5e>....</TD><TD BGCOLOR=#787161>....</TD><TD BGCOLOR=#7e7168>....</TD><TD BGCOLOR=#82756c>....</TD><TD BGCOLOR=#877a71>....</TD><TD BGCOLOR=#847768>....</TD><TD BGCOLOR=#847766>....</TD><TD BGCOLOR=#877a69>....</TD><TD BGCOLOR=#897b6a>....</TD><TD BGCOLOR=#8b836e>....</TD><TD BGCOLOR=#8d7d6d>....</TD><TD BGCOLOR=#927d74>....</TD><TD BGCOLOR=#8d7b75>....</TD></TR>
<TR><TD BGCOLOR=#190500 COLSPAN=2>....</TD><TD BGCOLOR=#270303>....</TD><TD BGCOLOR=#190501>....</TD><TD BGCOLOR=#210502>....</TD><TD BGCOLOR=#1d0301>....</TD><TD BGCOLOR=#1c0902>....</TD><TD BGCOLOR=#1e0b00>....</TD><TD BGCOLOR=#101100>....</TD><TD BGCOLOR=#140c03>....</TD><TD BGCOLOR=#160d05>....</TD><TD BGCOLOR=#1b0d06>....</TD><TD BGCOLOR=#1d0502>....</TD><TD BGCOLOR=#1f0602>....</TD><TD BGCOLOR=#1f0a03>....</TD><TD BGCOLOR=#250b03>....</TD><TD BGCOLOR=#300802>....</TD><TD BGCOLOR=#514838>....</TD><TD BGCOLOR=#57503f>....</TD><TD BGCOLOR=#5e5038>....</TD><TD BGCOLOR=#635643>....</TD><TD BGCOLOR=#656550>....</TD><TD BGCOLOR=#5b5340>....</TD><TD BGCOLOR=#554835>....</TD><TD BGCOLOR=#4f3112>....</TD><TD BGCOLOR=#442b0d>....</TD><TD BGCOLOR=#482f0a>....</TD><TD BGCOLOR=#482c0f>....</TD><TD BGCOLOR=#483313>....</TD><TD BGCOLOR=#4a2407>....</TD><TD BGCOLOR=#45210b>....</TD><TD BGCOLOR=#573c2b>....</TD><TD BGCOLOR=#5e4639>....</TD><TD BGCOLOR=#685647>....</TD><TD BGCOLOR=#6a5446>....</TD><TD BGCOLOR=#674f3f>....</TD><TD BGCOLOR=#6a5b4a>....</TD><TD BGCOLOR=#6a6352>....</TD><TD BGCOLOR=#726855>....</TD><TD BGCOLOR=#7a6656>....</TD><TD BGCOLOR=#7e6a5c>....</TD><TD BGCOLOR=#786958>....</TD><TD BGCOLOR=#7a705e>....</TD><TD BGCOLOR=#826f67>....</TD><TD BGCOLOR=#877365>....</TD><TD BGCOLOR=#8e7a70>....</TD><TD BGCOLOR=#907d6b>....</TD><TD BGCOLOR=#997f6e>....</TD><TD BGCOLOR=#987d6c>....</TD><TD BGCOLOR=#9a7f6e>....</TD><TD BGCOLOR=#a18776>....</TD><TD BGCOLOR=#96836e>....</TD><TD BGCOLOR=#978674>....</TD><TD BGCOLOR=#938575>....</TD><TD BGCOLOR=#928475>....</TD><TD BGCOLOR=#8b7d6b>....</TD><TD BGCOLOR=#847a67>....</TD><TD BGCOLOR=#8a7867>....</TD><TD BGCOLOR=#887567>....</TD><TD BGCOLOR=#817766>....</TD><TD BGCOLOR=#7f6f5a>....</TD><TD BGCOLOR=#7d6951>....</TD><TD BGCOLOR=#766054>....</TD><TD BGCOLOR=#695950>....</TD><TD BGCOLOR=#675d4c>....</TD><TD BGCOLOR=#6a5746>....</TD><TD BGCOLOR=#5b4e35>....</TD><TD BGCOLOR=#494334>....</TD><TD BGCOLOR=#4a3c30>....</TD><TD BGCOLOR=#482913>....</TD><TD BGCOLOR=#412c0a>....</TD><TD BGCOLOR=#452e0d>....</TD><TD BGCOLOR=#442e0c>....</TD><TD BGCOLOR=#412b08>....</TD><TD BGCOLOR=#3f2710>....</TD><TD BGCOLOR=#120307>....</TD><TD BGCOLOR=#3a2c27>....</TD><TD BGCOLOR=#5d5952>....</TD><TD BGCOLOR=#654b45>....</TD><TD BGCOLOR=#654e42>....</TD><TD BGCOLOR=#675148>....</TD><TD BGCOLOR=#6b574e>....</TD><TD BGCOLOR=#725448>....</TD><TD BGCOLOR=#7c544b>....</TD><TD BGCOLOR=#7b584e>....</TD><TD BGCOLOR=#725a4b>....</TD><TD BGCOLOR=#6c5247>....</TD><TD BGCOLOR=#69514b>....</TD><TD BGCOLOR=#645753>....</TD><TD BGCOLOR=#58584b>....</TD><TD BGCOLOR=#492d19>....</TD><TD BGCOLOR=#512b13>....</TD><TD BGCOLOR=#463620>....</TD><TD BGCOLOR=#4f2613>....</TD><TD BGCOLOR=#4d2d0f>....</TD><TD BGCOLOR=#453b17>....</TD><TD BGCOLOR=#432917>....</TD><TD BGCOLOR=#473f3d>....</TD><TD BGCOLOR=#504134>....</TD><TD BGCOLOR=#635242>....</TD><TD BGCOLOR=#665b4e>....</TD><TD BGCOLOR=#685f54>....</TD><TD BGCOLOR=#736757>....</TD><TD BGCOLOR=#756c60>....</TD><TD BGCOLOR=#736a61>....</TD><TD BGCOLOR=#7b6d65>....</TD><TD BGCOLOR=#7d6d66>....</TD><TD BGCOLOR=#7f726a>....</TD><TD BGCOLOR=#7e7263>....</TD><TD BGCOLOR=#817462>....</TD><TD BGCOLOR=#877665>....</TD><TD BGCOLOR=#8b7768>....</TD><TD BGCOLOR=#898375>....</TD><TD BGCOLOR=#8b7f75>....</TD><TD BGCOLOR=#8c7871>....</TD><TD BGCOLOR=#8c7972>....</TD></TR>
<TR><TD BGCOLOR=#190802 COLSPAN=2>....</TD><TD BGCOLOR=#240101>....</TD><TD BGCOLOR=#190801>....</TD><TD BGCOLOR=#1c0501>....</TD><TD BGCOLOR=#160902>....</TD><TD BGCOLOR=#1a0902>....</TD><TD BGCOLOR=#240800>....</TD><TD BGCOLOR=#170f01>....</TD><TD BGCOLOR=#1c0c05>....</TD><TD BGCOLOR=#1b0501>....</TD><TD BGCOLOR=#1f0703>....</TD><TD BGCOLOR=#200705>....</TD><TD BGCOLOR=#1e0703>....</TD><TD BGCOLOR=#1f0e06>....</TD><TD BGCOLOR=#230c04>....</TD><TD BGCOLOR=#2f0a03>....</TD><TD BGCOLOR=#4d4737>....</TD><TD BGCOLOR=#565140>....</TD><TD BGCOLOR=#5c5138>....</TD><TD BGCOLOR=#5f5742>....</TD><TD BGCOLOR=#676953>....</TD><TD BGCOLOR=#5c513f>....</TD><TD BGCOLOR=#5b4a38>....</TD><TD BGCOLOR=#4d2f10>....</TD><TD BGCOLOR=#462c0f>....</TD><TD BGCOLOR=#4a310c>....</TD><TD BGCOLOR=#44270a>....</TD><TD BGCOLOR=#432d0d>....</TD><TD BGCOLOR=#482607>....</TD><TD BGCOLOR=#47250d>....</TD><TD BGCOLOR=#5a402f>....</TD><TD BGCOLOR=#5e4f3f>....</TD><TD BGCOLOR=#625947>....</TD><TD BGCOLOR=#625544>....</TD><TD BGCOLOR=#665341>....</TD><TD BGCOLOR=#695a49>....</TD><TD BGCOLOR=#6b6454>....</TD><TD BGCOLOR=#756b57>....</TD><TD BGCOLOR=#7d6c5a>....</TD><TD BGCOLOR=#7d6c5c>....</TD><TD BGCOLOR=#786858>....</TD><TD BGCOLOR=#796b5a>....</TD><TD BGCOLOR=#806e66>....</TD><TD BGCOLOR=#827061>....</TD><TD BGCOLOR=#867369>....</TD><TD BGCOLOR=#8d7b69>....</TD><TD BGCOLOR=#94796a>....</TD><TD BGCOLOR=#9a7e6f>....</TD><TD BGCOLOR=#967a6b>....</TD><TD BGCOLOR=#947a6a>....</TD><TD BGCOLOR=#907c6b>....</TD><TD BGCOLOR=#938172>....</TD><TD BGCOLOR=#8a7c70>....</TD><TD BGCOLOR=#85786b>....</TD><TD BGCOLOR=#827564>....</TD><TD BGCOLOR=#817363>....</TD><TD BGCOLOR=#826f61>....</TD><TD BGCOLOR=#806f60>....</TD><TD BGCOLOR=#7c705e>....</TD><TD BGCOLOR=#766955>....</TD><TD BGCOLOR=#71624e>....</TD><TD BGCOLOR=#726253>....</TD><TD BGCOLOR=#67594d>....</TD><TD BGCOLOR=#695d4d>....</TD><TD BGCOLOR=#615242>....</TD><TD BGCOLOR=#4f4534>....</TD><TD BGCOLOR=#524e3c>....</TD><TD BGCOLOR=#4f4329>....</TD><TD BGCOLOR=#4b2b06>....</TD><TD BGCOLOR=#462a08>....</TD><TD BGCOLOR=#432b08>....</TD><TD BGCOLOR=#462e0b>....</TD><TD BGCOLOR=#422403>....</TD><TD BGCOLOR=#381d0a>....</TD><TD BGCOLOR=#110206>....</TD><TD BGCOLOR=#301c1a>....</TD><TD BGCOLOR=#574f4e>....</TD><TD BGCOLOR=#62524c>....</TD><TD BGCOLOR=#635246>....</TD><TD BGCOLOR=#6c5953>....</TD><TD BGCOLOR=#6b5850>....</TD><TD BGCOLOR=#6f5146>....</TD><TD BGCOLOR=#815951>....</TD><TD BGCOLOR=#77564c>....</TD><TD BGCOLOR=#695549>....</TD><TD BGCOLOR=#68534a>....</TD><TD BGCOLOR=#6a544d>....</TD><TD BGCOLOR=#6a5b53>....</TD><TD BGCOLOR=#5f574a>....</TD><TD BGCOLOR=#4e331b>....</TD><TD BGCOLOR=#522f0e>....</TD><TD BGCOLOR=#4a3316>....</TD><TD BGCOLOR=#532d14>....</TD><TD BGCOLOR=#4d2d0f>....</TD><TD BGCOLOR=#463b16>....</TD><TD BGCOLOR=#462811>....</TD><TD BGCOLOR=#3e3226>....</TD><TD BGCOLOR=#4b392b>....</TD><TD BGCOLOR=#5f4c40>....</TD><TD BGCOLOR=#65594f>....</TD><TD BGCOLOR=#6a5f54>....</TD><TD BGCOLOR=#6a5a4b>....</TD><TD BGCOLOR=#6b5f54>....</TD><TD BGCOLOR=#71655e>....</TD><TD BGCOLOR=#74665e>....</TD><TD BGCOLOR=#7b7067>....</TD><TD BGCOLOR=#7a6c64>....</TD><TD BGCOLOR=#786c5f>....</TD><TD BGCOLOR=#7a6f5e>....</TD><TD BGCOLOR=#7b6d5d>....</TD><TD BGCOLOR=#867566>....</TD><TD BGCOLOR=#827d70>....</TD><TD BGCOLOR=#8b7f76>....</TD><TD BGCOLOR=#907c75>....</TD><TD BGCOLOR=#8a7770>....</TD></TR>
<TR><TD BGCOLOR=#180b04 COLSPAN=2>....</TD><TD BGCOLOR=#240503>....</TD><TD BGCOLOR=#170902>....</TD><TD BGCOLOR=#190500>....</TD><TD BGCOLOR=#140b03>....</TD><TD BGCOLOR=#1a0b03>....</TD><TD BGCOLOR=#250600>....</TD><TD BGCOLOR=#1a0e01>....</TD><TD BGCOLOR=#1c0b04>....</TD><TD BGCOLOR=#200200>....</TD><TD BGCOLOR=#1e0401>....</TD><TD BGCOLOR=#1b0502>....</TD><TD BGCOLOR=#1e0b05>....</TD><TD BGCOLOR=#1b0d04>....</TD><TD BGCOLOR=#1f0b02>....</TD><TD BGCOLOR=#2a0902>....</TD><TD BGCOLOR=#4b4837>....</TD><TD BGCOLOR=#50503d>....</TD><TD BGCOLOR=#5a5138>....</TD><TD BGCOLOR=#5b5942>....</TD><TD BGCOLOR=#656952>....</TD><TD BGCOLOR=#5f5241>....</TD><TD BGCOLOR=#5c4636>....</TD><TD BGCOLOR=#4f3011>....</TD><TD BGCOLOR=#452c0e>....</TD><TD BGCOLOR=#4c330e>....</TD><TD BGCOLOR=#48290d>....</TD><TD BGCOLOR=#472f0f>....</TD><TD BGCOLOR=#432606>....</TD><TD BGCOLOR=#4b2a11>....</TD><TD BGCOLOR=#5e4231>....</TD><TD BGCOLOR=#615543>....</TD><TD BGCOLOR=#5b5441>....</TD><TD BGCOLOR=#605643>....</TD><TD BGCOLOR=#655341>....</TD><TD BGCOLOR=#695a49>....</TD><TD BGCOLOR=#6c6555>....</TD><TD BGCOLOR=#776d59>....</TD><TD BGCOLOR=#7c705d>....</TD><TD BGCOLOR=#7e705f>....</TD><TD BGCOLOR=#806f5f>....</TD><TD BGCOLOR=#7e6b5c>....</TD><TD BGCOLOR=#7e6e65>....</TD><TD BGCOLOR=#7f7161>....</TD><TD BGCOLOR=#87796d>....</TD><TD BGCOLOR=#877966>....</TD><TD BGCOLOR=#91766a>....</TD><TD BGCOLOR=#977b70>....</TD><TD BGCOLOR=#93776c>....</TD><TD BGCOLOR=#91766a>....</TD><TD BGCOLOR=#877366>....</TD><TD BGCOLOR=#8c796e>....</TD><TD BGCOLOR=#85766d>....</TD><TD BGCOLOR=#796e64>....</TD><TD BGCOLOR=#7c7064>....</TD><TD BGCOLOR=#7c685f>....</TD><TD BGCOLOR=#7a665d>....</TD><TD BGCOLOR=#786759>....</TD><TD BGCOLOR=#746755>....</TD><TD BGCOLOR=#685e4d>....</TD><TD BGCOLOR=#6a6253>....</TD><TD BGCOLOR=#696250>....</TD><TD BGCOLOR=#675c4b>....</TD><TD BGCOLOR=#635548>....</TD><TD BGCOLOR=#574e42>....</TD><TD BGCOLOR=#686359>....</TD><TD BGCOLOR=#595845>....</TD><TD BGCOLOR=#524326>....</TD><TD BGCOLOR=#532c0a>....</TD><TD BGCOLOR=#4c2603>....</TD><TD BGCOLOR=#442a03>....</TD><TD BGCOLOR=#472b05>....</TD><TD BGCOLOR=#4a2404>....</TD><TD BGCOLOR=#321e0e>....</TD><TD BGCOLOR=#090504>....</TD><TD BGCOLOR=#21100f>....</TD><TD BGCOLOR=#54484e>....</TD><TD BGCOLOR=#615450>....</TD><TD BGCOLOR=#6a5850>....</TD><TD BGCOLOR=#755b5b>....</TD><TD BGCOLOR=#69514c>....</TD><TD BGCOLOR=#75574b>....</TD><TD BGCOLOR=#835b53>....</TD><TD BGCOLOR=#7c5a50>....</TD><TD BGCOLOR=#6a5c52>....</TD><TD BGCOLOR=#65574f>....</TD><TD BGCOLOR=#6c584f>....</TD><TD BGCOLOR=#6b5b4f>....</TD><TD BGCOLOR=#5f534d>....</TD><TD BGCOLOR=#514129>....</TD><TD BGCOLOR=#4d3812>....</TD><TD BGCOLOR=#4f3715>....</TD><TD BGCOLOR=#4b2c09>....</TD><TD BGCOLOR=#4b2e0f>....</TD><TD BGCOLOR=#463813>....</TD><TD BGCOLOR=#4c2908>....</TD><TD BGCOLOR=#3c2a0f>....</TD><TD BGCOLOR=#452e21>....</TD><TD BGCOLOR=#58453e>....</TD><TD BGCOLOR=#61554d>....</TD><TD BGCOLOR=#685a51>....</TD><TD BGCOLOR=#6b584a>....</TD><TD BGCOLOR=#6b5b51>....</TD><TD BGCOLOR=#695953>....</TD><TD BGCOLOR=#6e6058>....</TD><TD BGCOLOR=#6f695f>....</TD><TD BGCOLOR=#73635c>....</TD><TD BGCOLOR=#75695e>....</TD><TD BGCOLOR=#736b5e>....</TD><TD BGCOLOR=#73675b>....</TD><TD BGCOLOR=#7b6d62>....</TD><TD BGCOLOR=#807c6f>....</TD><TD BGCOLOR=#84786e>....</TD><TD BGCOLOR=#8c7871>....</TD><TD BGCOLOR=#8c7972>....</TD></TR>
<TR><TD BGCOLOR=#170c04 COLSPAN=2>....</TD><TD BGCOLOR=#210603>....</TD><TD BGCOLOR=#180902>....</TD><TD BGCOLOR=#1a0602>....</TD><TD BGCOLOR=#190b04>....</TD><TD BGCOLOR=#1c0903>....</TD><TD BGCOLOR=#220600>....</TD><TD BGCOLOR=#170f02>....</TD><TD BGCOLOR=#190c04>....</TD><TD BGCOLOR=#1e0401>....</TD><TD BGCOLOR=#1e0803>....</TD><TD BGCOLOR=#1a0502>....</TD><TD BGCOLOR=#1f0b05>....</TD><TD BGCOLOR=#1b0d03>....</TD><TD BGCOLOR=#1d0b02>....</TD><TD BGCOLOR=#290a02>....</TD><TD BGCOLOR=#4a4635>....</TD><TD BGCOLOR=#51513c>....</TD><TD BGCOLOR=#58563b>....</TD><TD BGCOLOR=#5a5a43>....</TD><TD BGCOLOR=#5f664f>....</TD><TD BGCOLOR=#5d4e3b>....</TD><TD BGCOLOR=#573f2e>....</TD><TD BGCOLOR=#4e3011>....</TD><TD BGCOLOR=#452c0e>....</TD><TD BGCOLOR=#4a310e>....</TD><TD BGCOLOR=#47290b>....</TD><TD BGCOLOR=#442b0d>....</TD><TD BGCOLOR=#3e2405>....</TD><TD BGCOLOR=#4a2b14>....</TD><TD BGCOLOR=#624536>....</TD><TD BGCOLOR=#5e5041>....</TD><TD BGCOLOR=#5f5543>....</TD><TD BGCOLOR=#625341>....</TD><TD BGCOLOR=#63513e>....</TD><TD BGCOLOR=#695b4b>....</TD><TD BGCOLOR=#6d6355>....</TD><TD BGCOLOR=#796b5b>....</TD><TD BGCOLOR=#7a6f5b>....</TD><TD BGCOLOR=#7d7260>....</TD><TD BGCOLOR=#857464>....</TD><TD BGCOLOR=#816d5e>....</TD><TD BGCOLOR=#7e6e64>....</TD><TD BGCOLOR=#7a6d5d>....</TD><TD BGCOLOR=#827467>....</TD><TD BGCOLOR=#867966>....</TD><TD BGCOLOR=#8c7368>....</TD><TD BGCOLOR=#91776d>....</TD><TD BGCOLOR=#91766d>....</TD><TD BGCOLOR=#947a70>....</TD><TD BGCOLOR=#88746a>....</TD><TD BGCOLOR=#89786f>....</TD><TD BGCOLOR=#7c6f67>....</TD><TD BGCOLOR=#736961>....</TD><TD BGCOLOR=#766a60>....</TD><TD BGCOLOR=#745f59>....</TD><TD BGCOLOR=#78645e>....</TD><TD BGCOLOR=#716153>....</TD><TD BGCOLOR=#6b5e4c>....</TD><TD BGCOLOR=#675f50>....</TD><TD BGCOLOR=#666355>....</TD><TD BGCOLOR=#666351>....</TD><TD BGCOLOR=#665c4b>....</TD><TD BGCOLOR=#594b3f>....</TD><TD BGCOLOR=#655f56>....</TD><TD BGCOLOR=#67675f>....</TD><TD BGCOLOR=#5b5a48>....</TD><TD BGCOLOR=#54442e>....</TD><TD BGCOLOR=#512912>....</TD><TD BGCOLOR=#4c2402>....</TD><TD BGCOLOR=#442903>....</TD><TD BGCOLOR=#472a04>....</TD><TD BGCOLOR=#4c2505>....</TD><TD BGCOLOR=#25190c>....</TD><TD BGCOLOR=#050a06>....</TD><TD BGCOLOR=#120b08>....</TD><TD BGCOLOR=#51484e>....</TD><TD BGCOLOR=#645554>....</TD><TD BGCOLOR=#755d59>....</TD><TD BGCOLOR=#775659>....</TD><TD BGCOLOR=#765855>....</TD><TD BGCOLOR=#806055>....</TD><TD BGCOLOR=#835d54>....</TD><TD BGCOLOR=#7d5e53>....</TD><TD BGCOLOR=#72645c>....</TD><TD BGCOLOR=#6a5d55>....</TD><TD BGCOLOR=#726156>....</TD><TD BGCOLOR=#6f6053>....</TD><TD BGCOLOR=#625654>....</TD><TD BGCOLOR=#56523e>....</TD><TD BGCOLOR=#4f4823>....</TD><TD BGCOLOR=#4d3816>....</TD><TD BGCOLOR=#4e320a>....</TD><TD BGCOLOR=#4b2e0d>....</TD><TD BGCOLOR=#493612>....</TD><TD BGCOLOR=#4d2b07>....</TD><TD BGCOLOR=#442d0d>....</TD><TD BGCOLOR=#412315>....</TD><TD BGCOLOR=#4c3833>....</TD><TD BGCOLOR=#5c524c>....</TD><TD BGCOLOR=#64564e>....</TD><TD BGCOLOR=#6b594e>....</TD><TD BGCOLOR=#6b5b52>....</TD><TD BGCOLOR=#624f49>....</TD><TD BGCOLOR=#665850>....</TD><TD BGCOLOR=#645f54>....</TD><TD BGCOLOR=#706059>....</TD><TD BGCOLOR=#70645b>....</TD><TD BGCOLOR=#756e62>....</TD><TD BGCOLOR=#73695f>....</TD><TD BGCOLOR=#786c63>....</TD><TD BGCOLOR=#7c7669>....</TD><TD BGCOLOR=#7f7268>....</TD><TD BGCOLOR=#86726b>....</TD><TD BGCOLOR=#89766f>....</TD></TR>
<TR><TD BGCOLOR=#160d04 COLSPAN=2>....</TD><TD BGCOLOR=#1c0701>....</TD><TD BGCOLOR=#1f0603>....</TD><TD BGCOLOR=#1a0601>....</TD><TD BGCOLOR=#170600>....</TD><TD BGCOLOR=#220402>....</TD><TD BGCOLOR=#1d0400>....</TD><TD BGCOLOR=#1a0b03>....</TD><TD BGCOLOR=#1b0a04>....</TD><TD BGCOLOR=#170a02>....</TD><TD BGCOLOR=#1d0b05>....</TD><TD BGCOLOR=#200201>....</TD><TD BGCOLOR=#250a04>....</TD><TD BGCOLOR=#1e0d01>....</TD><TD BGCOLOR=#1e0c06>....</TD><TD BGCOLOR=#260805>....</TD><TD BGCOLOR=#4f4131>....</TD><TD BGCOLOR=#555037>....</TD><TD BGCOLOR=#52543c>....</TD><TD BGCOLOR=#5d5544>....</TD><TD BGCOLOR=#59644f>....</TD><TD BGCOLOR=#56452a>....</TD><TD BGCOLOR=#4c3d20>....</TD><TD BGCOLOR=#4c300d>....</TD><TD BGCOLOR=#422b0d>....</TD><TD BGCOLOR=#472f10>....</TD><TD BGCOLOR=#472a08>....</TD><TD BGCOLOR=#402609>....</TD><TD BGCOLOR=#3d2407>....</TD><TD BGCOLOR=#492e1b>....</TD><TD BGCOLOR=#574338>....</TD><TD BGCOLOR=#585144>....</TD><TD BGCOLOR=#5d5140>....</TD><TD BGCOLOR=#5c4b34>....</TD><TD BGCOLOR=#60543c>....</TD><TD BGCOLOR=#615749>....</TD><TD BGCOLOR=#705d59>....</TD><TD BGCOLOR=#806662>....</TD><TD BGCOLOR=#7f6d5c>....</TD><TD BGCOLOR=#7e7161>....</TD><TD BGCOLOR=#847769>....</TD><TD BGCOLOR=#7e715e>....</TD><TD BGCOLOR=#806e5d>....</TD><TD BGCOLOR=#847162>....</TD><TD BGCOLOR=#877465>....</TD><TD BGCOLOR=#897667>....</TD><TD BGCOLOR=#8c7a6a>....</TD><TD BGCOLOR=#897868>....</TD><TD BGCOLOR=#8f806f>....</TD><TD BGCOLOR=#887a6b>....</TD><TD BGCOLOR=#83756d>....</TD><TD BGCOLOR=#7b7068>....</TD><TD BGCOLOR=#6d665c>....</TD><TD BGCOLOR=#70685e>....</TD><TD BGCOLOR=#796b61>....</TD><TD BGCOLOR=#72635c>....</TD><TD BGCOLOR=#6f605d>....</TD><TD BGCOLOR=#635549>....</TD><TD BGCOLOR=#675b49>....</TD><TD BGCOLOR=#696152>....</TD><TD BGCOLOR=#69644f>....</TD><TD BGCOLOR=#6d675b>....</TD><TD BGCOLOR=#5d5349>....</TD><TD BGCOLOR=#62594c>....</TD><TD BGCOLOR=#67675e>....</TD><TD BGCOLOR=#676a60>....</TD><TD BGCOLOR=#61593f>....</TD><TD BGCOLOR=#524633>....</TD><TD BGCOLOR=#472f0f>....</TD><TD BGCOLOR=#402302>....</TD><TD BGCOLOR=#432706>....</TD><TD BGCOLOR=#462a0a>....</TD><TD BGCOLOR=#432609>....</TD><TD BGCOLOR=#24100b>....</TD><TD BGCOLOR=#050604>....</TD><TD BGCOLOR=#0c0b06>....</TD><TD BGCOLOR=#524d4b>....</TD><TD BGCOLOR=#625653>....</TD><TD BGCOLOR=#70635c>....</TD><TD BGCOLOR=#6f5851>....</TD><TD BGCOLOR=#815d56>....</TD><TD BGCOLOR=#866057>....</TD><TD BGCOLOR=#84655a>....</TD><TD BGCOLOR=#7f6659>....</TD><TD BGCOLOR=#7d645b>....</TD><TD BGCOLOR=#796458>....</TD><TD BGCOLOR=#726457>....</TD><TD BGCOLOR=#6e625d>....</TD><TD BGCOLOR=#6d5855>....</TD><TD BGCOLOR=#60614d>....</TD><TD BGCOLOR=#5b5437>....</TD><TD BGCOLOR=#5d4324>....</TD><TD BGCOLOR=#4a310b>....</TD><TD BGCOLOR=#492e06>....</TD><TD BGCOLOR=#48300b>....</TD><TD BGCOLOR=#423012>....</TD><TD BGCOLOR=#472a13>....</TD><TD BGCOLOR=#4d230c>....</TD><TD BGCOLOR=#452b1c>....</TD><TD BGCOLOR=#4e4840>....</TD><TD BGCOLOR=#5b564a>....</TD><TD BGCOLOR=#5e5c56>....</TD><TD BGCOLOR=#615952>....</TD><TD BGCOLOR=#665850>....</TD><TD BGCOLOR=#685952>....</TD><TD BGCOLOR=#665750>....</TD><TD BGCOLOR=#6e5f58>....</TD><TD BGCOLOR=#71655c>....</TD><TD BGCOLOR=#6f655c>....</TD><TD BGCOLOR=#71675e COLSPAN=2>....</TD><TD BGCOLOR=#847367>....</TD><TD BGCOLOR=#8d7b70>....</TD><TD BGCOLOR=#86756d>....</TD><TD BGCOLOR=#867570>....</TD></TR>
<TR><TD BGCOLOR=#170d04 COLSPAN=2>....</TD><TD BGCOLOR=#180801>....</TD><TD BGCOLOR=#180802>....</TD><TD BGCOLOR=#140902>....</TD><TD BGCOLOR=#170600>....</TD><TD BGCOLOR=#210402>....</TD><TD BGCOLOR=#1c0300>....</TD><TD BGCOLOR=#1b0a04>....</TD><TD BGCOLOR=#1e0904>....</TD><TD BGCOLOR=#170903>....</TD><TD BGCOLOR=#1a0a03>....</TD><TD BGCOLOR=#1a0602>....</TD><TD BGCOLOR=#1d0f04>....</TD><TD BGCOLOR=#1b1203>....</TD><TD BGCOLOR=#1c0e06>....</TD><TD BGCOLOR=#270906>....</TD><TD BGCOLOR=#504232>....</TD><TD BGCOLOR=#574f36>....</TD><TD BGCOLOR=#5a4c39>....</TD><TD BGCOLOR=#5d5242>....</TD><TD BGCOLOR=#56614c>....</TD><TD BGCOLOR=#554428>....</TD><TD BGCOLOR=#4b3c1f>....</TD><TD BGCOLOR=#4b2d0b>....</TD><TD BGCOLOR=#42270a>....</TD><TD BGCOLOR=#492e10>....</TD><TD BGCOLOR=#482908>....</TD><TD BGCOLOR=#432b0b>....</TD><TD BGCOLOR=#3d2404>....</TD><TD BGCOLOR=#492e18>....</TD><TD BGCOLOR=#584337>....</TD><TD BGCOLOR=#52493d>....</TD><TD BGCOLOR=#5c4d3d>....</TD><TD BGCOLOR=#5a4630>....</TD><TD BGCOLOR=#61513a>....</TD><TD BGCOLOR=#615447>....</TD><TD BGCOLOR=#715f5a>....</TD><TD BGCOLOR=#7a645f>....</TD><TD BGCOLOR=#7f6f5d>....</TD><TD BGCOLOR=#7c6f5e>....</TD><TD BGCOLOR=#827466>....</TD><TD BGCOLOR=#7c6f5c>....</TD><TD BGCOLOR=#806f5e>....</TD><TD BGCOLOR=#867364>....</TD><TD BGCOLOR=#877465>....</TD><TD BGCOLOR=#877364>....</TD><TD BGCOLOR=#8b7567>....</TD><TD BGCOLOR=#897868>....</TD><TD BGCOLOR=#817967>....</TD><TD BGCOLOR=#7b7764>....</TD><TD BGCOLOR=#7a6c64>....</TD><TD BGCOLOR=#766b62>....</TD><TD BGCOLOR=#766f65>....</TD><TD BGCOLOR=#7b7368>....</TD><TD BGCOLOR=#74665c>....</TD><TD BGCOLOR=#6b5c55>....</TD><TD BGCOLOR=#6c5d5a>....</TD><TD BGCOLOR=#62544a>....</TD><TD BGCOLOR=#6a5e4f>....</TD><TD BGCOLOR=#696155>....</TD><TD BGCOLOR=#66614e>....</TD><TD BGCOLOR=#595447>....</TD><TD BGCOLOR=#61574b>....</TD><TD BGCOLOR=#6c6353>....</TD><TD BGCOLOR=#656559>....</TD><TD BGCOLOR=#676a5f>....</TD><TD BGCOLOR=#5f563c>....</TD><TD BGCOLOR=#514431>....</TD><TD BGCOLOR=#462e0d>....</TD><TD BGCOLOR=#402705>....</TD><TD BGCOLOR=#422907>....</TD><TD BGCOLOR=#442c0a>....</TD><TD BGCOLOR=#42280a>....</TD><TD BGCOLOR=#1a0c06>....</TD><TD BGCOLOR=#060805>....</TD><TD BGCOLOR=#15110d>....</TD><TD BGCOLOR=#5d4d4e>....</TD><TD BGCOLOR=#675755>....</TD><TD BGCOLOR=#62665a>....</TD><TD BGCOLOR=#79635c>....</TD><TD BGCOLOR=#8e625e>....</TD><TD BGCOLOR=#876158>....</TD><TD BGCOLOR=#87685d>....</TD><TD BGCOLOR=#7d6557>....</TD><TD BGCOLOR=#82675d>....</TD><TD BGCOLOR=#806357>....</TD><TD BGCOLOR=#786053>....</TD><TD BGCOLOR=#73645d>....</TD><TD BGCOLOR=#6f5956>....</TD><TD BGCOLOR=#686355>....</TD><TD BGCOLOR=#695f4b>....</TD><TD BGCOLOR=#68553e>....</TD><TD BGCOLOR=#4e4228>....</TD><TD BGCOLOR=#483412>....</TD><TD BGCOLOR=#49320d>....</TD><TD BGCOLOR=#432e0e>....</TD><TD BGCOLOR=#462c13>....</TD><TD BGCOLOR=#482508>....</TD><TD BGCOLOR=#452a14>....</TD><TD BGCOLOR=#3d301e>....</TD><TD BGCOLOR=#524834>....</TD><TD BGCOLOR=#575249>....</TD><TD BGCOLOR=#655e59>....</TD><TD BGCOLOR=#6f635d>....</TD><TD BGCOLOR=#64554e>....</TD><TD BGCOLOR=#6b5c55>....</TD><TD BGCOLOR=#6d5e57>....</TD><TD BGCOLOR=#6d6159>....</TD><TD BGCOLOR=#70665d>....</TD><TD BGCOLOR=#6c6259>....</TD><TD BGCOLOR=#6f655c>....</TD><TD BGCOLOR=#80685e>....</TD><TD BGCOLOR=#887268>....</TD><TD BGCOLOR=#81736b>....</TD><TD BGCOLOR=#7f786f>....</TD></TR>
<TR><TD BGCOLOR=#1b0903 COLSPAN=2>....</TD><TD BGCOLOR=#1b0500>....</TD><TD BGCOLOR=#180801>....</TD><TD BGCOLOR=#140b02>....</TD><TD BGCOLOR=#190801>....</TD><TD BGCOLOR=#220402>....</TD><TD BGCOLOR=#1c0300>....</TD><TD BGCOLOR=#1b0802>....</TD><TD BGCOLOR=#210703>....</TD><TD BGCOLOR=#160801>....</TD><TD BGCOLOR=#170c04>....</TD><TD BGCOLOR=#160903>....</TD><TD BGCOLOR=#180e02>....</TD><TD BGCOLOR=#1c1403>....</TD><TD BGCOLOR=#1e0c04>....</TD><TD BGCOLOR=#2d0908>....</TD><TD BGCOLOR=#4d4230>....</TD><TD BGCOLOR=#525136>....</TD><TD BGCOLOR=#594f3a>....</TD><TD BGCOLOR=#5b4f3f>....</TD><TD BGCOLOR=#56604b>....</TD><TD BGCOLOR=#56452a>....</TD><TD BGCOLOR=#4b3c1f>....</TD><TD BGCOLOR=#462e0a>....</TD><TD BGCOLOR=#3e2a0b>....</TD><TD BGCOLOR=#453010>....</TD><TD BGCOLOR=#452b09>....</TD><TD BGCOLOR=#3f250c>....</TD><TD BGCOLOR=#3c2209>....</TD><TD BGCOLOR=#482d1d>....</TD><TD BGCOLOR=#563f38>....</TD><TD BGCOLOR=#54473c>....</TD><TD BGCOLOR=#594737>....</TD><TD BGCOLOR=#5a422e>....</TD><TD BGCOLOR=#5e4935>....</TD><TD BGCOLOR=#655449>....</TD><TD BGCOLOR=#6d5b57>....</TD><TD BGCOLOR=#75645d>....</TD><TD BGCOLOR=#7a6c5a>....</TD><TD BGCOLOR=#7c6e5e>....</TD><TD BGCOLOR=#7e7062>....</TD><TD BGCOLOR=#7e715d>....</TD><TD BGCOLOR=#7e6c5b>....</TD><TD BGCOLOR=#826f60>....</TD><TD BGCOLOR=#867364>....</TD><TD BGCOLOR=#816e5f>....</TD><TD BGCOLOR=#7f7060>....</TD><TD BGCOLOR=#817664>....</TD><TD BGCOLOR=#7c7663>....</TD><TD BGCOLOR=#787361>....</TD><TD BGCOLOR=#74655e>....</TD><TD BGCOLOR=#71675e>....</TD><TD BGCOLOR=#6d665c>....</TD><TD BGCOLOR=#6e655b>....</TD><TD BGCOLOR=#6e6056>....</TD><TD BGCOLOR=#6a5b55>....</TD><TD BGCOLOR=#645552>....</TD><TD BGCOLOR=#6a5c53>....</TD><TD BGCOLOR=#6a5d52>....</TD><TD BGCOLOR=#625950>....</TD><TD BGCOLOR=#544f3f>....</TD><TD BGCOLOR=#615c4e>....</TD><TD BGCOLOR=#6d6454>....</TD><TD BGCOLOR=#6c6452>....</TD><TD BGCOLOR=#646555>....</TD><TD BGCOLOR=#696c61>....</TD><TD BGCOLOR=#5f563d>....</TD><TD BGCOLOR=#514431>....</TD><TD BGCOLOR=#402908>....</TD><TD BGCOLOR=#3e2805>....</TD><TD BGCOLOR=#412a08>....</TD><TD BGCOLOR=#402a08>....</TD><TD BGCOLOR=#3e2809>....</TD><TD BGCOLOR=#150c04>....</TD><TD BGCOLOR=#020501>....</TD><TD BGCOLOR=#261e1b>....</TD><TD BGCOLOR=#5c4c4e>....</TD><TD BGCOLOR=#675956>....</TD><TD BGCOLOR=#6a655c>....</TD><TD BGCOLOR=#7c665f>....</TD><TD BGCOLOR=#8b635e>....</TD><TD BGCOLOR=#8e685f>....</TD><TD BGCOLOR=#85665b>....</TD><TD BGCOLOR=#7d6457>....</TD><TD BGCOLOR=#82665a>....</TD><TD BGCOLOR=#866154>....</TD><TD BGCOLOR=#7f5c4f>....</TD><TD BGCOLOR=#77655b>....</TD><TD BGCOLOR=#6c5c57>....</TD><TD BGCOLOR=#656459>....</TD><TD BGCOLOR=#666355>....</TD><TD BGCOLOR=#686656>....</TD><TD BGCOLOR=#4f5345>....</TD><TD BGCOLOR=#4b4026>....</TD><TD BGCOLOR=#4e3714>....</TD><TD BGCOLOR=#48300d>....</TD><TD BGCOLOR=#432c11>....</TD><TD BGCOLOR=#432703>....</TD><TD BGCOLOR=#472d0c>....</TD><TD BGCOLOR=#3e2710>....</TD><TD BGCOLOR=#402d1c>....</TD><TD BGCOLOR=#51493e>....</TD><TD BGCOLOR=#5b564a>....</TD><TD BGCOLOR=#63584e>....</TD><TD BGCOLOR=#6a5b54>....</TD><TD BGCOLOR=#63544d>....</TD><TD BGCOLOR=#6b5c55>....</TD><TD BGCOLOR=#6e6259>....</TD><TD BGCOLOR=#746a61>....</TD><TD BGCOLOR=#71675e COLSPAN=2>....</TD><TD BGCOLOR=#7d695e>....</TD><TD BGCOLOR=#836f64>....</TD><TD BGCOLOR=#807168>....</TD><TD BGCOLOR=#80746d>....</TD></TR>
<TR><TD BGCOLOR=#200200 COLSPAN=2>....</TD><TD BGCOLOR=#1e0400>....</TD><TD BGCOLOR=#1b0903>....</TD><TD BGCOLOR=#140a02>....</TD><TD BGCOLOR=#180c04>....</TD><TD BGCOLOR=#210603>....</TD><TD BGCOLOR=#1d0803>....</TD><TD BGCOLOR=#190802>....</TD><TD BGCOLOR=#240603>....</TD><TD BGCOLOR=#1a0803>....</TD><TD BGCOLOR=#150a02>....</TD><TD BGCOLOR=#140a04>....</TD><TD BGCOLOR=#120d02>....</TD><TD BGCOLOR=#181102>....</TD><TD BGCOLOR=#240c03>....</TD><TD BGCOLOR=#2f0604>....</TD><TD BGCOLOR=#4b402f>....</TD><TD BGCOLOR=#505539>....</TD><TD BGCOLOR=#555236>....</TD><TD BGCOLOR=#5c513e>....</TD><TD BGCOLOR=#565e4a>....</TD><TD BGCOLOR=#55422a>....</TD><TD BGCOLOR=#473920>....</TD><TD BGCOLOR=#412f0b>....</TD><TD BGCOLOR=#402f0d>....</TD><TD BGCOLOR=#42310e>....</TD><TD BGCOLOR=#3f2a09>....</TD><TD BGCOLOR=#3d230f>....</TD><TD BGCOLOR=#3e220f>....</TD><TD BGCOLOR=#492a20>....</TD><TD BGCOLOR=#533833>....</TD><TD BGCOLOR=#544438>....</TD><TD BGCOLOR=#503d2c>....</TD><TD BGCOLOR=#553e2c>....</TD><TD BGCOLOR=#5b4432>....</TD><TD BGCOLOR=#604d40>....</TD><TD BGCOLOR=#6d5c52>....</TD><TD BGCOLOR=#726156>....</TD><TD BGCOLOR=#7a6958>....</TD><TD BGCOLOR=#796d5d>....</TD><TD BGCOLOR=#7c6e62>....</TD><TD BGCOLOR=#7c6b5f>....</TD><TD BGCOLOR=#7c6a5a>....</TD><TD BGCOLOR=#7f6c5d>....</TD><TD BGCOLOR=#847362>....</TD><TD BGCOLOR=#817160>....</TD><TD BGCOLOR=#7b7263>....</TD><TD BGCOLOR=#7e7466>....</TD><TD BGCOLOR=#7d7264>....</TD><TD BGCOLOR=#766b5d>....</TD><TD BGCOLOR=#70665a>....</TD><TD BGCOLOR=#696157>....</TD><TD BGCOLOR=#635d56>....</TD><TD BGCOLOR=#665e56>....</TD><TD BGCOLOR=#665a4c>....</TD><TD BGCOLOR=#675850>....</TD><TD BGCOLOR=#675755>....</TD><TD BGCOLOR=#68564f>....</TD><TD BGCOLOR=#66594e>....</TD><TD BGCOLOR=#555046>....</TD><TD BGCOLOR=#5d5e4d>....</TD><TD BGCOLOR=#676251>....</TD><TD BGCOLOR=#68624f>....</TD><TD BGCOLOR=#6b6853>....</TD><TD BGCOLOR=#636552>....</TD><TD BGCOLOR=#616459>....</TD><TD BGCOLOR=#5a513a>....</TD><TD BGCOLOR=#4d3e27>....</TD><TD BGCOLOR=#43270a>....</TD><TD BGCOLOR=#3d260a>....</TD><TD BGCOLOR=#3f2b09>....</TD><TD BGCOLOR=#422707>....</TD><TD BGCOLOR=#38260b>....</TD><TD BGCOLOR=#0c0902>....</TD><TD BGCOLOR=#020703>....</TD><TD BGCOLOR=#292222>....</TD><TD BGCOLOR=#594e51>....</TD><TD BGCOLOR=#675755>....</TD><TD BGCOLOR=#775e59>....</TD><TD BGCOLOR=#7e645f>....</TD><TD BGCOLOR=#86645e>....</TD><TD BGCOLOR=#815c53>....</TD><TD BGCOLOR=#816157>....</TD><TD BGCOLOR=#7c6358>....</TD><TD BGCOLOR=#846557>....</TD><TD BGCOLOR=#8a6156>....</TD><TD BGCOLOR=#835b53>....</TD><TD BGCOLOR=#786058>....</TD><TD BGCOLOR=#6a6059>....</TD><TD BGCOLOR=#626559>....</TD><TD BGCOLOR=#636759>....</TD><TD BGCOLOR=#676c5d>....</TD><TD BGCOLOR=#596153>....</TD><TD BGCOLOR=#555340>....</TD><TD BGCOLOR=#554529>....</TD><TD BGCOLOR=#492f0d>....</TD><TD BGCOLOR=#422a0e>....</TD><TD BGCOLOR=#452b07>....</TD><TD BGCOLOR=#472e0a>....</TD><TD BGCOLOR=#462c11>....</TD><TD BGCOLOR=#402917>....</TD><TD BGCOLOR=#3f3326>....</TD><TD BGCOLOR=#4e4c3e>....</TD><TD BGCOLOR=#565045>....</TD><TD BGCOLOR=#5e524a>....</TD><TD BGCOLOR=#675a53>....</TD><TD BGCOLOR=#665951>....</TD><TD BGCOLOR=#685c52>....</TD><TD BGCOLOR=#6c6157>....</TD><TD BGCOLOR=#6e6358>....</TD><TD BGCOLOR=#72665c>....</TD><TD BGCOLOR=#78695e>....</TD><TD BGCOLOR=#7a6d62>....</TD><TD BGCOLOR=#7d6e65>....</TD><TD BGCOLOR=#7d7167>....</TD></TR>
<TR><TD BGCOLOR=#240201 COLSPAN=2>....</TD><TD BGCOLOR=#1c0601>....</TD><TD BGCOLOR=#170a02>....</TD><TD BGCOLOR=#160a02>....</TD><TD BGCOLOR=#120d02>....</TD><TD BGCOLOR=#1b0802>....</TD><TD BGCOLOR=#180b03>....</TD><TD BGCOLOR=#160b03>....</TD><TD BGCOLOR=#240704>....</TD><TD BGCOLOR=#1d0803>....</TD><TD BGCOLOR=#160902>....</TD><TD BGCOLOR=#100903>....</TD><TD BGCOLOR=#0d0e06>....</TD><TD BGCOLOR=#110f01>....</TD><TD BGCOLOR=#220c00>....</TD><TD BGCOLOR=#2f0701>....</TD><TD BGCOLOR=#4d3f30>....</TD><TD BGCOLOR=#52533a>....</TD><TD BGCOLOR=#56502f>....</TD><TD BGCOLOR=#60543e>....</TD><TD BGCOLOR=#5b5c4b>....</TD><TD BGCOLOR=#573f2c>....</TD><TD BGCOLOR=#473a25>....</TD><TD BGCOLOR=#462c0c>....</TD><TD BGCOLOR=#462a0a>....</TD><TD BGCOLOR=#492d0c>....</TD><TD BGCOLOR=#432709>....</TD><TD BGCOLOR=#3c230d>....</TD><TD BGCOLOR=#402211>....</TD><TD BGCOLOR=#452216>....</TD><TD BGCOLOR=#58382e>....</TD><TD BGCOLOR=#574334>....</TD><TD BGCOLOR=#513e29>....</TD><TD BGCOLOR=#533f2f>....</TD><TD BGCOLOR=#5d463a>....</TD><TD BGCOLOR=#5f4b3c>....</TD><TD BGCOLOR=#6b5b4a>....</TD><TD BGCOLOR=#735e4f>....</TD><TD BGCOLOR=#7b6258>....</TD><TD BGCOLOR=#74695e>....</TD><TD BGCOLOR=#7a6b62>....</TD><TD BGCOLOR=#7c6861>....</TD><TD BGCOLOR=#7b685a>....</TD><TD BGCOLOR=#7b695a>....</TD><TD BGCOLOR=#7f705f>....</TD><TD BGCOLOR=#817564>....</TD><TD BGCOLOR=#7f7069>....</TD><TD BGCOLOR=#7a6b64 COLSPAN=2>....</TD><TD BGCOLOR=#6e6159>....</TD><TD BGCOLOR=#6c6658>....</TD><TD BGCOLOR=#666055>....</TD><TD BGCOLOR=#665f59>....</TD><TD BGCOLOR=#675e55>....</TD><TD BGCOLOR=#655a48>....</TD><TD BGCOLOR=#5f5247>....</TD><TD BGCOLOR=#645553>....</TD><TD BGCOLOR=#69564f>....</TD><TD BGCOLOR=#55493a>....</TD><TD BGCOLOR=#626656>....</TD><TD BGCOLOR=#5a654e>....</TD><TD BGCOLOR=#68644f>....</TD><TD BGCOLOR=#676550>....</TD><TD BGCOLOR=#646952>....</TD><TD BGCOLOR=#636650>....</TD><TD BGCOLOR=#616458>....</TD><TD BGCOLOR=#5a503d>....</TD><TD BGCOLOR=#4d3d1f>....</TD><TD BGCOLOR=#46250c>....</TD><TD BGCOLOR=#3d2311>....</TD><TD BGCOLOR=#3c2907>....</TD><TD BGCOLOR=#462207>....</TD><TD BGCOLOR=#32220f>....</TD><TD BGCOLOR=#050602>....</TD><TD BGCOLOR=#000401>....</TD><TD BGCOLOR=#262327>....</TD><TD BGCOLOR=#594f55>....</TD><TD BGCOLOR=#675353>....</TD><TD BGCOLOR=#765853>....</TD><TD BGCOLOR=#7c605b>....</TD><TD BGCOLOR=#815d5a>....</TD><TD BGCOLOR=#87635b>....</TD><TD BGCOLOR=#82625a>....</TD><TD BGCOLOR=#7e625a>....</TD><TD BGCOLOR=#835d52>....</TD><TD BGCOLOR=#885e58>....</TD><TD BGCOLOR=#815d5c>....</TD><TD BGCOLOR=#7d615b>....</TD><TD BGCOLOR=#685c53>....</TD><TD BGCOLOR=#666559>....</TD><TD BGCOLOR=#616453>....</TD><TD BGCOLOR=#6f6e5b>....</TD><TD BGCOLOR=#696852>....</TD><TD BGCOLOR=#5e6455>....</TD><TD BGCOLOR=#565240>....</TD><TD BGCOLOR=#503b20>....</TD><TD BGCOLOR=#432911>....</TD><TD BGCOLOR=#41280c>....</TD><TD BGCOLOR=#442d0d>....</TD><TD BGCOLOR=#432d0a>....</TD><TD BGCOLOR=#473210>....</TD><TD BGCOLOR=#3e2a15>....</TD><TD BGCOLOR=#41372d>....</TD><TD BGCOLOR=#524e49>....</TD><TD BGCOLOR=#5a534d>....</TD><TD BGCOLOR=#655b53>....</TD><TD BGCOLOR=#66594e>....</TD><TD BGCOLOR=#615347>....</TD><TD BGCOLOR=#6a5c4f>....</TD><TD BGCOLOR=#736558>....</TD><TD BGCOLOR=#716356>....</TD><TD BGCOLOR=#76645d>....</TD><TD BGCOLOR=#766e63>....</TD><TD BGCOLOR=#776c5f>....</TD><TD BGCOLOR=#767461>....</TD></TR>
<TR><TD BGCOLOR=#1f0501 COLSPAN=2>....</TD><TD BGCOLOR=#190902>....</TD><TD BGCOLOR=#170a03>....</TD><TD BGCOLOR=#190a03>....</TD><TD BGCOLOR=#130c03>....</TD><TD BGCOLOR=#190a04>....</TD><TD BGCOLOR=#160a02>....</TD><TD BGCOLOR=#140b03>....</TD><TD BGCOLOR=#1c0a04>....</TD><TD BGCOLOR=#190b04>....</TD><TD BGCOLOR=#150a02>....</TD><TD BGCOLOR=#130704>....</TD><TD BGCOLOR=#120a08>....</TD><TD BGCOLOR=#110c03>....</TD><TD BGCOLOR=#210b01>....</TD><TD BGCOLOR=#2d0601>....</TD><TD BGCOLOR=#4c4030>....</TD><TD BGCOLOR=#4d5037>....</TD><TD BGCOLOR=#54522f>....</TD><TD BGCOLOR=#5f533f>....</TD><TD BGCOLOR=#5c5e4c>....</TD><TD BGCOLOR=#553e25>....</TD><TD BGCOLOR=#45391c>....</TD><TD BGCOLOR=#492a0b>....</TD><TD BGCOLOR=#492809>....</TD><TD BGCOLOR=#4c2b0c>....</TD><TD BGCOLOR=#452508>....</TD><TD BGCOLOR=#3d1f0b>....</TD><TD BGCOLOR=#412211>....</TD><TD BGCOLOR=#48291c>....</TD><TD BGCOLOR=#482c21>....</TD><TD BGCOLOR=#543d30>....</TD><TD BGCOLOR=#4f3422>....</TD><TD BGCOLOR=#5a4234>....</TD><TD BGCOLOR=#5c463b>....</TD><TD BGCOLOR=#634f43>....</TD><TD BGCOLOR=#6a5a4c>....</TD><TD BGCOLOR=#745f53>....</TD><TD BGCOLOR=#7a625e>....</TD><TD BGCOLOR=#72655e>....</TD><TD BGCOLOR=#7b685e>....</TD><TD BGCOLOR=#786758>....</TD><TD BGCOLOR=#786558>....</TD><TD BGCOLOR=#7a675a>....</TD><TD BGCOLOR=#796a5c>....</TD><TD BGCOLOR=#7a6e5f>....</TD><TD BGCOLOR=#7b6c64>....</TD><TD BGCOLOR=#796a63>....</TD><TD BGCOLOR=#72635c>....</TD><TD BGCOLOR=#71635c>....</TD><TD BGCOLOR=#6d645a>....</TD><TD BGCOLOR=#6c6358>....</TD><TD BGCOLOR=#665e51>....</TD><TD BGCOLOR=#5a5043>....</TD><TD BGCOLOR=#55483d>....</TD><TD BGCOLOR=#625850>....</TD><TD BGCOLOR=#625a55>....</TD><TD BGCOLOR=#5a4f42>....</TD><TD BGCOLOR=#625c48>....</TD><TD BGCOLOR=#676b58>....</TD><TD BGCOLOR=#5c6349>....</TD><TD BGCOLOR=#65644d>....</TD><TD BGCOLOR=#64654f>....</TD><TD BGCOLOR=#636750>....</TD><TD BGCOLOR=#64614d>....</TD><TD BGCOLOR=#646251>....</TD><TD BGCOLOR=#5c4e3d>....</TD><TD BGCOLOR=#4d3d25>....</TD><TD BGCOLOR=#42250d>....</TD><TD BGCOLOR=#3e230c>....</TD><TD BGCOLOR=#3c2a06>....</TD><TD BGCOLOR=#412208>....</TD><TD BGCOLOR=#2d2313>....</TD><TD BGCOLOR=#040201>....</TD><TD BGCOLOR=#030500>....</TD><TD BGCOLOR=#1d1918>....</TD><TD BGCOLOR=#584d4c>....</TD><TD BGCOLOR=#685654>....</TD><TD BGCOLOR=#725b58>....</TD><TD BGCOLOR=#755d57>....</TD><TD BGCOLOR=#7d5b58>....</TD><TD BGCOLOR=#81605b>....</TD><TD BGCOLOR=#816058>....</TD><TD BGCOLOR=#7e5f53>....</TD><TD BGCOLOR=#886057>....</TD><TD BGCOLOR=#875d5a>....</TD><TD BGCOLOR=#7f5b59>....</TD><TD BGCOLOR=#7d6156>....</TD><TD BGCOLOR=#6f5c55>....</TD><TD BGCOLOR=#676056>....</TD><TD BGCOLOR=#626453>....</TD><TD BGCOLOR=#6b6b58>....</TD><TD BGCOLOR=#676853>....</TD><TD BGCOLOR=#686c5c>....</TD><TD BGCOLOR=#646353>....</TD><TD BGCOLOR=#594e3a>....</TD><TD BGCOLOR=#45321b>....</TD><TD BGCOLOR=#3e290f>....</TD><TD BGCOLOR=#422a0d>....</TD><TD BGCOLOR=#432c09>....</TD><TD BGCOLOR=#432e05>....</TD><TD BGCOLOR=#482b0e>....</TD><TD BGCOLOR=#442814>....</TD><TD BGCOLOR=#4f4037>....</TD><TD BGCOLOR=#57514c>....</TD><TD BGCOLOR=#5f554c>....</TD><TD BGCOLOR=#65564b>....</TD><TD BGCOLOR=#67584c>....</TD><TD BGCOLOR=#65574a>....</TD><TD BGCOLOR=#685a4d>....</TD><TD BGCOLOR=#726457>....</TD><TD BGCOLOR=#6e5e54>....</TD><TD BGCOLOR=#72695c>....</TD><TD BGCOLOR=#766657>....</TD><TD BGCOLOR=#786e5b>....</TD></TR>
<TR><TD BGCOLOR=#190802 COLSPAN=2>....</TD><TD BGCOLOR=#170c04>....</TD><TD BGCOLOR=#180b04>....</TD><TD BGCOLOR=#1c0a04>....</TD><TD BGCOLOR=#140b03>....</TD><TD BGCOLOR=#160c05>....</TD><TD BGCOLOR=#150b03>....</TD><TD BGCOLOR=#130b02>....</TD><TD BGCOLOR=#140e04>....</TD><TD BGCOLOR=#130c02>....</TD><TD BGCOLOR=#140c03>....</TD><TD BGCOLOR=#150404>....</TD><TD BGCOLOR=#140407>....</TD><TD BGCOLOR=#110903>....</TD><TD BGCOLOR=#200b03>....</TD><TD BGCOLOR=#2b0701>....</TD><TD BGCOLOR=#4c402f>....</TD><TD BGCOLOR=#514a34>....</TD><TD BGCOLOR=#5e492c>....</TD><TD BGCOLOR=#625141>....</TD><TD BGCOLOR=#5c5d4b>....</TD><TD BGCOLOR=#564021>....</TD><TD BGCOLOR=#413611>....</TD><TD BGCOLOR=#462c0b>....</TD><TD BGCOLOR=#462a0a>....</TD><TD BGCOLOR=#482c0b>....</TD><TD BGCOLOR=#422407>....</TD><TD BGCOLOR=#3c1806>....</TD><TD BGCOLOR=#422212>....</TD><TD BGCOLOR=#482c1e>....</TD><TD BGCOLOR=#432b1f>....</TD><TD BGCOLOR=#462d20>....</TD><TD BGCOLOR=#532f1f>....</TD><TD BGCOLOR=#54382b>....</TD><TD BGCOLOR=#5e473f>....</TD><TD BGCOLOR=#5e4941>....</TD><TD BGCOLOR=#69574f>....</TD><TD BGCOLOR=#735d56>....</TD><TD BGCOLOR=#78645b>....</TD><TD BGCOLOR=#726359>....</TD><TD BGCOLOR=#785f59>....</TD><TD BGCOLOR=#74645b>....</TD><TD BGCOLOR=#77645c>....</TD><TD BGCOLOR=#7b675f>....</TD><TD BGCOLOR=#7a6a60>....</TD><TD BGCOLOR=#796c62>....</TD><TD BGCOLOR=#796a63>....</TD><TD BGCOLOR=#766760>....</TD><TD BGCOLOR=#75665f>....</TD><TD BGCOLOR=#73645b>....</TD><TD BGCOLOR=#6c604e>....</TD><TD BGCOLOR=#5e5142>....</TD><TD BGCOLOR=#55483d>....</TD><TD BGCOLOR=#5c4c46>....</TD><TD BGCOLOR=#655654>....</TD><TD BGCOLOR=#5e5651>....</TD><TD BGCOLOR=#4f4f46>....</TD><TD BGCOLOR=#666450>....</TD><TD BGCOLOR=#66644b>....</TD><TD BGCOLOR=#666b54>....</TD><TD BGCOLOR=#616348>....</TD><TD BGCOLOR=#606148>....</TD><TD BGCOLOR=#636750>....</TD><TD BGCOLOR=#62654e>....</TD><TD BGCOLOR=#655e4b>....</TD><TD BGCOLOR=#676149>....</TD><TD BGCOLOR=#5e4e3d>....</TD><TD BGCOLOR=#4d3e2b>....</TD><TD BGCOLOR=#412911>....</TD><TD BGCOLOR=#3f2408>....</TD><TD BGCOLOR=#3b2a04>....</TD><TD BGCOLOR=#3b2209>....</TD><TD BGCOLOR=#201c0f>....</TD><TD BGCOLOR=#040000>....</TD><TD BGCOLOR=#050400>....</TD><TD BGCOLOR=#0f0905>....</TD><TD BGCOLOR=#564a43>....</TD><TD BGCOLOR=#655652>....</TD><TD BGCOLOR=#675857>....</TD><TD BGCOLOR=#745f58>....</TD><TD BGCOLOR=#795854>....</TD><TD BGCOLOR=#7f615e>....</TD><TD BGCOLOR=#7c5c53>....</TD><TD BGCOLOR=#825e4f>....</TD><TD BGCOLOR=#895f58>....</TD><TD BGCOLOR=#865c5d>....</TD><TD BGCOLOR=#825f5b>....</TD><TD BGCOLOR=#7b5f50>....</TD><TD BGCOLOR=#715651>....</TD><TD BGCOLOR=#6a5c54>....</TD><TD BGCOLOR=#666756>....</TD><TD BGCOLOR=#6d705c>....</TD><TD BGCOLOR=#646751>....</TD><TD BGCOLOR=#686b58>....</TD><TD BGCOLOR=#67695b>....</TD><TD BGCOLOR=#5a5b4e>....</TD><TD BGCOLOR=#4d432b>....</TD><TD BGCOLOR=#3f2e16>....</TD><TD BGCOLOR=#432a12>....</TD><TD BGCOLOR=#472e0f>....</TD><TD BGCOLOR=#462e08>....</TD><TD BGCOLOR=#462709>....</TD><TD BGCOLOR=#482a12>....</TD><TD BGCOLOR=#3d2918>....</TD><TD BGCOLOR=#574a40>....</TD><TD BGCOLOR=#5f554e>....</TD><TD BGCOLOR=#615b56>....</TD><TD BGCOLOR=#60554b>....</TD><TD BGCOLOR=#605245>....</TD><TD BGCOLOR=#625447>....</TD><TD BGCOLOR=#66584b>....</TD><TD BGCOLOR=#6a5d50>....</TD><TD BGCOLOR=#6e6654>....</TD><TD BGCOLOR=#786353>....</TD><TD BGCOLOR=#796752>....</TD></TR>
</TABLE><TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR><TD BGCOLOR=#180c03>....</TD><TD BGCOLOR=#180c03>....</TD><TD BGCOLOR=#150d04>....</TD><TD BGCOLOR=#170a03>....</TD><TD BGCOLOR=#1d0905>....</TD><TD BGCOLOR=#160903>....</TD><TD BGCOLOR=#170b05>....</TD><TD BGCOLOR=#170b04>....</TD><TD BGCOLOR=#170b04>....</TD><TD BGCOLOR=#150c03>....</TD><TD BGCOLOR=#130901>....</TD><TD BGCOLOR=#160a02>....</TD><TD BGCOLOR=#180405>....</TD><TD BGCOLOR=#170506>....</TD><TD BGCOLOR=#130903>....</TD><TD BGCOLOR=#210c05>....</TD><TD BGCOLOR=#2b0704>....</TD><TD BGCOLOR=#4c3f34>....</TD><TD BGCOLOR=#534633>....</TD><TD BGCOLOR=#5e492b>....</TD><TD BGCOLOR=#5c523f>....</TD><TD BGCOLOR=#625b4f>....</TD><TD BGCOLOR=#574021>....</TD><TD BGCOLOR=#4b3414>....</TD><TD BGCOLOR=#432a0b>....</TD><TD BGCOLOR=#402f0b>....</TD><TD BGCOLOR=#412f0b>....</TD><TD BGCOLOR=#402505>....</TD><TD BGCOLOR=#371602>....</TD><TD BGCOLOR=#3c1b0a>....</TD><TD BGCOLOR=#412216>....</TD><TD BGCOLOR=#472f22>....</TD><TD BGCOLOR=#4b3423>....</TD><TD BGCOLOR=#4e2c19>....</TD><TD BGCOLOR=#523321>....</TD><TD BGCOLOR=#5e4737>....</TD><TD BGCOLOR=#5e4a3d>....</TD><TD BGCOLOR=#655246>....</TD><TD BGCOLOR=#716256>....</TD><TD BGCOLOR=#716354>....</TD><TD BGCOLOR=#746358>....</TD><TD BGCOLOR=#765e58>....</TD><TD BGCOLOR=#746659>....</TD><TD BGCOLOR=#7c6961>....</TD><TD BGCOLOR=#7b6560>....</TD><TD BGCOLOR=#796961>....</TD><TD BGCOLOR=#736f63>....</TD><TD BGCOLOR=#74695e>....</TD><TD BGCOLOR=#6e625b>....</TD><TD BGCOLOR=#6b5f57>....</TD><TD BGCOLOR=#65584e>....</TD><TD BGCOLOR=#63544a>....</TD><TD BGCOLOR=#544737>....</TD><TD BGCOLOR=#584c45>....</TD><TD BGCOLOR=#60524e>....</TD><TD BGCOLOR=#645253>....</TD><TD BGCOLOR=#524b3d>....</TD><TD BGCOLOR=#5b5d4d>....</TD><TD BGCOLOR=#656955>....</TD><TD BGCOLOR=#61674e>....</TD><TD BGCOLOR=#656c56>....</TD><TD BGCOLOR=#5c614c>....</TD><TD BGCOLOR=#5d624e>....</TD><TD BGCOLOR=#636856>....</TD><TD BGCOLOR=#636755>....</TD><TD BGCOLOR=#626151>....</TD><TD BGCOLOR=#656653>....</TD><TD BGCOLOR=#5e5746>....</TD><TD BGCOLOR=#4f4430>....</TD><TD BGCOLOR=#3e2c12>....</TD><TD BGCOLOR=#3e2202>....</TD><TD BGCOLOR=#392904>....</TD><TD BGCOLOR=#36220a>....</TD><TD BGCOLOR=#1e170d>....</TD><TD BGCOLOR=#0c0004>....</TD><TD BGCOLOR=#060107>....</TD><TD BGCOLOR=#070505>....</TD><TD BGCOLOR=#3a362e>....</TD><TD BGCOLOR=#57564e>....</TD><TD BGCOLOR=#5e5957>....</TD><TD BGCOLOR=#725b54>....</TD><TD BGCOLOR=#775853>....</TD><TD BGCOLOR=#735957>....</TD><TD BGCOLOR=#7c5a52>....</TD><TD BGCOLOR=#865c4e>....</TD><TD BGCOLOR=#8b5e58>....</TD><TD BGCOLOR=#835f60>....</TD><TD BGCOLOR=#815c5c>....</TD><TD BGCOLOR=#775b4c>....</TD><TD BGCOLOR=#70524d>....</TD><TD BGCOLOR=#6a5e55>....</TD><TD BGCOLOR=#676556>....</TD><TD BGCOLOR=#6a6e5b>....</TD><TD BGCOLOR=#666654>....</TD><TD BGCOLOR=#69695c>....</TD><TD BGCOLOR=#636854>....</TD><TD BGCOLOR=#5f6459>....</TD><TD BGCOLOR=#544e3e>....</TD><TD BGCOLOR=#4a3926>....</TD><TD BGCOLOR=#492d14>....</TD><TD BGCOLOR=#472a0e>....</TD><TD BGCOLOR=#492c10>....</TD><TD BGCOLOR=#482707>....</TD><TD BGCOLOR=#442e11>....</TD><TD BGCOLOR=#33230c>....</TD><TD BGCOLOR=#453526>....</TD><TD BGCOLOR=#554842>....</TD><TD BGCOLOR=#5b534c>....</TD><TD BGCOLOR=#5c5248>....</TD><TD BGCOLOR=#5d4f45>....</TD><TD BGCOLOR=#64544b>....</TD><TD BGCOLOR=#63574d>....</TD><TD BGCOLOR=#675d52>....</TD><TD BGCOLOR=#6c6353>....</TD><TD BGCOLOR=#715f50>....</TD><TD BGCOLOR=#7c675b>....</TD></TR>
<TR><TD BGCOLOR=#1c0601 COLSPAN=2>....</TD><TD BGCOLOR=#180b04>....</TD><TD BGCOLOR=#130901>....</TD><TD BGCOLOR=#190b03>....</TD><TD BGCOLOR=#180902>....</TD><TD BGCOLOR=#1a0b04>....</TD><TD BGCOLOR=#190b03>....</TD><TD BGCOLOR=#160802>....</TD><TD BGCOLOR=#180904>....</TD><TD BGCOLOR=#170900>....</TD><TD BGCOLOR=#170902>....</TD><TD BGCOLOR=#180405>....</TD><TD BGCOLOR=#150604>....</TD><TD BGCOLOR=#130a02>....</TD><TD BGCOLOR=#230d05>....</TD><TD BGCOLOR=#2a0404>....</TD><TD BGCOLOR=#483c33>....</TD><TD BGCOLOR=#544938>....</TD><TD BGCOLOR=#564c2b>....</TD><TD BGCOLOR=#5c5641>....</TD><TD BGCOLOR=#64554e>....</TD><TD BGCOLOR=#574123>....</TD><TD BGCOLOR=#4e2f15>....</TD><TD BGCOLOR=#43270a>....</TD><TD BGCOLOR=#3c2e0c>....</TD><TD BGCOLOR=#3e2f0c>....</TD><TD BGCOLOR=#3f2607>....</TD><TD BGCOLOR=#2e1f06>....</TD><TD BGCOLOR=#30210b>....</TD><TD BGCOLOR=#372816>....</TD><TD BGCOLOR=#3f2d1e>....</TD><TD BGCOLOR=#4e3327>....</TD><TD BGCOLOR=#512d21>....</TD><TD BGCOLOR=#583525>....</TD><TD BGCOLOR=#5b4734>....</TD><TD BGCOLOR=#5b4b3a>....</TD><TD BGCOLOR=#675244>....</TD><TD BGCOLOR=#6c5d4c>....</TD><TD BGCOLOR=#6c6453>....</TD><TD BGCOLOR=#6a5b52>....</TD><TD BGCOLOR=#755e56>....</TD><TD BGCOLOR=#7a6856>....</TD><TD BGCOLOR=#73655a>....</TD><TD BGCOLOR=#76645e>....</TD><TD BGCOLOR=#76665f>....</TD><TD BGCOLOR=#6f675d>....</TD><TD BGCOLOR=#6a6454>....</TD><TD BGCOLOR=#685e57>....</TD><TD BGCOLOR=#675b53>....</TD><TD BGCOLOR=#66574d>....</TD><TD BGCOLOR=#66534e>....</TD><TD BGCOLOR=#544636>....</TD><TD BGCOLOR=#57494a>....</TD><TD BGCOLOR=#594a46>....</TD><TD BGCOLOR=#57433e>....</TD><TD BGCOLOR=#5c533a>....</TD><TD BGCOLOR=#625f45>....</TD><TD BGCOLOR=#625f4b>....</TD><TD BGCOLOR=#5c5742>....</TD><TD BGCOLOR=#615c45>....</TD><TD BGCOLOR=#555038>....</TD><TD BGCOLOR=#58513d>....</TD><TD BGCOLOR=#5b5340>....</TD><TD BGCOLOR=#574f3c>....</TD><TD BGCOLOR=#534b38>....</TD><TD BGCOLOR=#514a35>....</TD><TD BGCOLOR=#4c452e>....</TD><TD BGCOLOR=#483d25>....</TD><TD BGCOLOR=#3f3218>....</TD><TD BGCOLOR=#402609>....</TD><TD BGCOLOR=#392908>....</TD><TD BGCOLOR=#35220b>....</TD><TD BGCOLOR=#1e1306>....</TD><TD BGCOLOR=#160401>....</TD><TD BGCOLOR=#0b0407>....</TD><TD BGCOLOR=#080609>....</TD><TD BGCOLOR=#151210>....</TD><TD BGCOLOR=#444440>....</TD><TD BGCOLOR=#585552>....</TD><TD BGCOLOR=#705754>....</TD><TD BGCOLOR=#765a57>....</TD><TD BGCOLOR=#6f5c57>....</TD><TD BGCOLOR=#73574e>....</TD><TD BGCOLOR=#795447>....</TD><TD BGCOLOR=#875a55>....</TD><TD BGCOLOR=#7c5b5c>....</TD><TD BGCOLOR=#755357>....</TD><TD BGCOLOR=#6c5550>....</TD><TD BGCOLOR=#69554b>....</TD><TD BGCOLOR=#676657>....</TD><TD BGCOLOR=#616357>....</TD><TD BGCOLOR=#656c61>....</TD><TD BGCOLOR=#676554>....</TD><TD BGCOLOR=#696a61>....</TD><TD BGCOLOR=#5c694c>....</TD><TD BGCOLOR=#5c6859>....</TD><TD BGCOLOR=#5a5649>....</TD><TD BGCOLOR=#50422f>....</TD><TD BGCOLOR=#4e3219>....</TD><TD BGCOLOR=#492b11>....</TD><TD BGCOLOR=#432c10>....</TD><TD BGCOLOR=#452803>....</TD><TD BGCOLOR=#423110>....</TD><TD BGCOLOR=#30270d>....</TD><TD BGCOLOR=#312412>....</TD><TD BGCOLOR=#44362f>....</TD><TD BGCOLOR=#594a46>....</TD><TD BGCOLOR=#5d5149>....</TD><TD BGCOLOR=#5c4c45>....</TD><TD BGCOLOR=#5d4a44>....</TD><TD BGCOLOR=#5d5048>....</TD><TD BGCOLOR=#665751>....</TD><TD BGCOLOR=#6b5e50>....</TD><TD BGCOLOR=#695d4e>....</TD><TD BGCOLOR=#6f625a>....</TD></TR>
<TR><TD BGCOLOR=#230000 COLSPAN=2>....</TD><TD BGCOLOR=#1d0904>....</TD><TD BGCOLOR=#140b02>....</TD><TD BGCOLOR=#140c02>....</TD><TD BGCOLOR=#180a01>....</TD><TD BGCOLOR=#190b01 COLSPAN=2>....</TD><TD BGCOLOR=#160700>....</TD><TD BGCOLOR=#180904>....</TD><TD BGCOLOR=#190b00>....</TD><TD BGCOLOR=#160801>....</TD><TD BGCOLOR=#150404>....</TD><TD BGCOLOR=#110603>....</TD><TD BGCOLOR=#110701>....</TD><TD BGCOLOR=#270c06>....</TD><TD BGCOLOR=#2a0301>....</TD><TD BGCOLOR=#483d31>....</TD><TD BGCOLOR=#544a39>....</TD><TD BGCOLOR=#574c31>....</TD><TD BGCOLOR=#5d5240>....</TD><TD BGCOLOR=#67554f>....</TD><TD BGCOLOR=#574324>....</TD><TD BGCOLOR=#4c3216>....</TD><TD BGCOLOR=#432809>....</TD><TD BGCOLOR=#382a08>....</TD><TD BGCOLOR=#3e2e10>....</TD><TD BGCOLOR=#3e220d>....</TD><TD BGCOLOR=#301a0a>....</TD><TD BGCOLOR=#321d0b>....</TD><TD BGCOLOR=#311c09>....</TD><TD BGCOLOR=#3c2416>....</TD><TD BGCOLOR=#472624>....</TD><TD BGCOLOR=#47211c>....</TD><TD BGCOLOR=#513127>....</TD><TD BGCOLOR=#534335>....</TD><TD BGCOLOR=#574b3c>....</TD><TD BGCOLOR=#695444>....</TD><TD BGCOLOR=#6b5844>....</TD><TD BGCOLOR=#676050>....</TD><TD BGCOLOR=#675b4f>....</TD><TD BGCOLOR=#765f53>....</TD><TD BGCOLOR=#786153>....</TD><TD BGCOLOR=#6e6359>....</TD><TD BGCOLOR=#6c6259>....</TD><TD BGCOLOR=#71625a>....</TD><TD BGCOLOR=#735e58>....</TD><TD BGCOLOR=#656050>....</TD><TD BGCOLOR=#61564f>....</TD><TD BGCOLOR=#65524d>....</TD><TD BGCOLOR=#675147>....</TD><TD BGCOLOR=#5c473d>....</TD><TD BGCOLOR=#513f34>....</TD><TD BGCOLOR=#5b4a50>....</TD><TD BGCOLOR=#52413a>....</TD><TD BGCOLOR=#3e2a1d>....</TD><TD BGCOLOR=#3e2e15>....</TD><TD BGCOLOR=#3f3215>....</TD><TD BGCOLOR=#3d2c16>....</TD><TD BGCOLOR=#3d2714>....</TD><TD BGCOLOR=#3e2911>....</TD><TD BGCOLOR=#412c0f>....</TD><TD BGCOLOR=#3d290e>....</TD><TD BGCOLOR=#3e2911>....</TD><TD BGCOLOR=#402b13>....</TD><TD BGCOLOR=#3f2a12>....</TD><TD BGCOLOR=#422b13>....</TD><TD BGCOLOR=#3c2a11>....</TD><TD BGCOLOR=#392b12>....</TD><TD BGCOLOR=#382d15>....</TD><TD BGCOLOR=#3c2518>....</TD><TD BGCOLOR=#392812>....</TD><TD BGCOLOR=#331d07>....</TD><TD BGCOLOR=#231403>....</TD><TD BGCOLOR=#221001>....</TD><TD BGCOLOR=#1a0f04>....</TD><TD BGCOLOR=#1d110e>....</TD><TD BGCOLOR=#2b181b>....</TD><TD BGCOLOR=#231311>....</TD><TD BGCOLOR=#433934>....</TD><TD BGCOLOR=#61484a>....</TD><TD BGCOLOR=#684f4e>....</TD><TD BGCOLOR=#61524b>....</TD><TD BGCOLOR=#655149>....</TD><TD BGCOLOR=#71574e>....</TD><TD BGCOLOR=#75534e>....</TD><TD BGCOLOR=#765250>....</TD><TD BGCOLOR=#694f4d>....</TD><TD BGCOLOR=#634e4f>....</TD><TD BGCOLOR=#625343>....</TD><TD BGCOLOR=#656853>....</TD><TD BGCOLOR=#606154>....</TD><TD BGCOLOR=#676a62>....</TD><TD BGCOLOR=#65634f>....</TD><TD BGCOLOR=#676a5d>....</TD><TD BGCOLOR=#606e4e>....</TD><TD BGCOLOR=#5f6c58>....</TD><TD BGCOLOR=#5c5947>....</TD><TD BGCOLOR=#5a543d>....</TD><TD BGCOLOR=#533b24>....</TD><TD BGCOLOR=#4a2f18>....</TD><TD BGCOLOR=#3c2e0f>....</TD><TD BGCOLOR=#3f2702>....</TD><TD BGCOLOR=#423010>....</TD><TD BGCOLOR=#32280c>....</TD><TD BGCOLOR=#352910>....</TD><TD BGCOLOR=#312315>....</TD><TD BGCOLOR=#493938>....</TD><TD BGCOLOR=#594a46>....</TD><TD BGCOLOR=#57433d>....</TD><TD BGCOLOR=#5b4440>....</TD><TD BGCOLOR=#56453e>....</TD><TD BGCOLOR=#614e49>....</TD><TD BGCOLOR=#645448>....</TD><TD BGCOLOR=#695e4f>....</TD><TD BGCOLOR=#696258>....</TD></TR>
<TR><TD BGCOLOR=#280202 COLSPAN=2>....</TD><TD BGCOLOR=#1e0804>....</TD><TD BGCOLOR=#150801>....</TD><TD BGCOLOR=#170a01>....</TD><TD BGCOLOR=#180b00 COLSPAN=2>....</TD><TD BGCOLOR=#170900>....</TD><TD BGCOLOR=#190a01>....</TD><TD BGCOLOR=#180903>....</TD><TD BGCOLOR=#180a00>....</TD><TD BGCOLOR=#190b04>....</TD><TD BGCOLOR=#140605>....</TD><TD BGCOLOR=#0f0802>....</TD><TD BGCOLOR=#110701>....</TD><TD BGCOLOR=#2b0b07>....</TD><TD BGCOLOR=#2d0400>....</TD><TD BGCOLOR=#473c2c>....</TD><TD BGCOLOR=#554a3b>....</TD><TD BGCOLOR=#584c36>....</TD><TD BGCOLOR=#5d4e3f>....</TD><TD BGCOLOR=#65514c>....</TD><TD BGCOLOR=#554324>....</TD><TD BGCOLOR=#4c381a>....</TD><TD BGCOLOR=#442907>....</TD><TD BGCOLOR=#392b0b>....</TD><TD BGCOLOR=#3d2c14>....</TD><TD BGCOLOR=#3c2012>....</TD><TD BGCOLOR=#2f1b0e>....</TD><TD BGCOLOR=#2b1807>....</TD><TD BGCOLOR=#301e06>....</TD><TD BGCOLOR=#36220e>....</TD><TD BGCOLOR=#3b1f18>....</TD><TD BGCOLOR=#3b1f14>....</TD><TD BGCOLOR=#493726>....</TD><TD BGCOLOR=#504436>....</TD><TD BGCOLOR=#5c4940>....</TD><TD BGCOLOR=#655040>....</TD><TD BGCOLOR=#6a5e44>....</TD><TD BGCOLOR=#685e50>....</TD><TD BGCOLOR=#69584c>....</TD><TD BGCOLOR=#725d4c>....</TD><TD BGCOLOR=#756456>....</TD><TD BGCOLOR=#73655c>....</TD><TD BGCOLOR=#6b6259>....</TD><TD BGCOLOR=#6a5f56>....</TD><TD BGCOLOR=#6a5650>....</TD><TD BGCOLOR=#5c5948>....</TD><TD BGCOLOR=#5a4e47>....</TD><TD BGCOLOR=#664d49>....</TD><TD BGCOLOR=#674943>....</TD><TD BGCOLOR=#573d39>....</TD><TD BGCOLOR=#5b4541>....</TD><TD BGCOLOR=#5a464a>....</TD><TD BGCOLOR=#3e2d1c>....</TD><TD BGCOLOR=#382217>....</TD><TD BGCOLOR=#382112>....</TD><TD BGCOLOR=#3b240e>....</TD><TD BGCOLOR=#3d290f>....</TD><TD BGCOLOR=#3c2a12>....</TD><TD BGCOLOR=#37250f>....</TD><TD BGCOLOR=#3b2813>....</TD><TD BGCOLOR=#3a2a11>....</TD><TD BGCOLOR=#392b10>....</TD><TD BGCOLOR=#38290e>....</TD><TD BGCOLOR=#36270c>....</TD><TD BGCOLOR=#372516>....</TD><TD BGCOLOR=#352413>....</TD><TD BGCOLOR=#342811>....</TD><TD BGCOLOR=#3a3016>....</TD><TD BGCOLOR=#392324>....</TD><TD BGCOLOR=#37271a>....</TD><TD BGCOLOR=#351d0a>....</TD><TD BGCOLOR=#291504>....</TD><TD BGCOLOR=#210b06>....</TD><TD BGCOLOR=#1d0e02>....</TD><TD BGCOLOR=#210c07>....</TD><TD BGCOLOR=#4a2a2b>....</TD><TD BGCOLOR=#51342a>....</TD><TD BGCOLOR=#453626>....</TD><TD BGCOLOR=#412b27>....</TD><TD BGCOLOR=#432828>....</TD><TD BGCOLOR=#503b35>....</TD><TD BGCOLOR=#553d3a>....</TD><TD BGCOLOR=#5e4442>....</TD><TD BGCOLOR=#604c47>....</TD><TD BGCOLOR=#694c41>....</TD><TD BGCOLOR=#5d4937>....</TD><TD BGCOLOR=#563b30>....</TD><TD BGCOLOR=#4e3220>....</TD><TD BGCOLOR=#4d4229>....</TD><TD BGCOLOR=#52412c>....</TD><TD BGCOLOR=#5b4c37>....</TD><TD BGCOLOR=#54553c>....</TD><TD BGCOLOR=#626152>....</TD><TD BGCOLOR=#636244>....</TD><TD BGCOLOR=#696352>....</TD><TD BGCOLOR=#5d5c45>....</TD><TD BGCOLOR=#5c5d43>....</TD><TD BGCOLOR=#5f4d37>....</TD><TD BGCOLOR=#573a27>....</TD><TD BGCOLOR=#3d2d0e>....</TD><TD BGCOLOR=#442603>....</TD><TD BGCOLOR=#482c0f>....</TD><TD BGCOLOR=#36250c>....</TD><TD BGCOLOR=#3c3111>....</TD><TD BGCOLOR=#332808>....</TD><TD BGCOLOR=#3c301c>....</TD><TD BGCOLOR=#514138>....</TD><TD BGCOLOR=#5b433f>....</TD><TD BGCOLOR=#543a37>....</TD><TD BGCOLOR=#55423c>....</TD><TD BGCOLOR=#5c4f48>....</TD><TD BGCOLOR=#605446>....</TD><TD BGCOLOR=#615445>....</TD><TD BGCOLOR=#6a5a54>....</TD></TR>
<TR><TD BGCOLOR=#220805 COLSPAN=2>....</TD><TD BGCOLOR=#1c0908>....</TD><TD BGCOLOR=#140903>....</TD><TD BGCOLOR=#140d02>....</TD><TD BGCOLOR=#160903>....</TD><TD BGCOLOR=#1b0400>....</TD><TD BGCOLOR=#1e0b03>....</TD><TD BGCOLOR=#170e04>....</TD><TD BGCOLOR=#180d06>....</TD><TD BGCOLOR=#160c01>....</TD><TD BGCOLOR=#160c06>....</TD><TD BGCOLOR=#110a04>....</TD><TD BGCOLOR=#100902>....</TD><TD BGCOLOR=#180803>....</TD><TD BGCOLOR=#240d03>....</TD><TD BGCOLOR=#2b0a01>....</TD><TD BGCOLOR=#4b3a26>....</TD><TD BGCOLOR=#514d2f>....</TD><TD BGCOLOR=#554d2e>....</TD><TD BGCOLOR=#5c5136>....</TD><TD BGCOLOR=#5b5649>....</TD><TD BGCOLOR=#544228>....</TD><TD BGCOLOR=#553522>....</TD><TD BGCOLOR=#4a2a06>....</TD><TD BGCOLOR=#3e2703>....</TD><TD BGCOLOR=#3b2d0b>....</TD><TD BGCOLOR=#35270b>....</TD><TD BGCOLOR=#36200f>....</TD><TD BGCOLOR=#281504>....</TD><TD BGCOLOR=#2d1d08>....</TD><TD BGCOLOR=#31200b>....</TD><TD BGCOLOR=#331a07>....</TD><TD BGCOLOR=#3d230c>....</TD><TD BGCOLOR=#4d3c23>....</TD><TD BGCOLOR=#534532>....</TD><TD BGCOLOR=#5b463c>....</TD><TD BGCOLOR=#614840>....</TD><TD BGCOLOR=#665644>....</TD><TD BGCOLOR=#685749>....</TD><TD BGCOLOR=#6d5851>....</TD><TD BGCOLOR=#715d55>....</TD><TD BGCOLOR=#6f5c52>....</TD><TD BGCOLOR=#72575a>....</TD><TD BGCOLOR=#6b5d56>....</TD><TD BGCOLOR=#655a4d>....</TD><TD BGCOLOR=#634945>....</TD><TD BGCOLOR=#554440>....</TD><TD BGCOLOR=#574c47>....</TD><TD BGCOLOR=#594a47>....</TD><TD BGCOLOR=#54403d>....</TD><TD BGCOLOR=#4b3935>....</TD><TD BGCOLOR=#54423f>....</TD><TD BGCOLOR=#3d2c2a>....</TD><TD BGCOLOR=#342414>....</TD><TD BGCOLOR=#3a2712>....</TD><TD BGCOLOR=#3a2614>....</TD><TD BGCOLOR=#3c2811>....</TD><TD BGCOLOR=#3c280a>....</TD><TD BGCOLOR=#3f2a13>....</TD><TD BGCOLOR=#3c291a>....</TD><TD BGCOLOR=#3b2c13>....</TD><TD BGCOLOR=#3d2617>....</TD><TD BGCOLOR=#3e261a>....</TD><TD BGCOLOR=#3e2713>....</TD><TD BGCOLOR=#44250e>....</TD><TD BGCOLOR=#3d2517>....</TD><TD BGCOLOR=#3b261a>....</TD><TD BGCOLOR=#34230f>....</TD><TD BGCOLOR=#34270a>....</TD><TD BGCOLOR=#2f251d>....</TD><TD BGCOLOR=#372a16>....</TD><TD BGCOLOR=#311e0a>....</TD><TD BGCOLOR=#211108>....</TD><TD BGCOLOR=#210f0a>....</TD><TD BGCOLOR=#260805>....</TD><TD BGCOLOR=#250c09>....</TD><TD BGCOLOR=#503c35>....</TD><TD BGCOLOR=#5a3c35>....</TD><TD BGCOLOR=#5d3f3f>....</TD><TD BGCOLOR=#56393d>....</TD><TD BGCOLOR=#573b36>....</TD><TD BGCOLOR=#5f423a>....</TD><TD BGCOLOR=#4c2f2f COLSPAN=2>....</TD><TD BGCOLOR=#4f3932>....</TD><TD BGCOLOR=#423021>....</TD><TD BGCOLOR=#402b18>....</TD><TD BGCOLOR=#3f2714>....</TD><TD BGCOLOR=#422a13>....</TD><TD BGCOLOR=#3c2d13>....</TD><TD BGCOLOR=#402916>....</TD><TD BGCOLOR=#3d2917>....</TD><TD BGCOLOR=#3a2c14>....</TD><TD BGCOLOR=#3f2a19>....</TD><TD BGCOLOR=#42321d>....</TD><TD BGCOLOR=#4e3727>....</TD><TD BGCOLOR=#534629>....</TD><TD BGCOLOR=#595639>....</TD><TD BGCOLOR=#61543a>....</TD><TD BGCOLOR=#5f4e33>....</TD><TD BGCOLOR=#3f3a18>....</TD><TD BGCOLOR=#3d2806>....</TD><TD BGCOLOR=#432710>....</TD><TD BGCOLOR=#3b230a>....</TD><TD BGCOLOR=#412f11>....</TD><TD BGCOLOR=#3c2d0e>....</TD><TD BGCOLOR=#332412>....</TD><TD BGCOLOR=#48322f>....</TD><TD BGCOLOR=#4d4441>....</TD><TD BGCOLOR=#493932>....</TD><TD BGCOLOR=#493926>....</TD><TD BGCOLOR=#4f4437>....</TD><TD BGCOLOR=#534938>....</TD><TD BGCOLOR=#5a4f3d>....</TD><TD BGCOLOR=#615148>....</TD></TR>
<TR><TD BGCOLOR=#200600 COLSPAN=2>....</TD><TD BGCOLOR=#1c0604>....</TD><TD BGCOLOR=#170904>....</TD><TD BGCOLOR=#170e04>....</TD><TD BGCOLOR=#1b0c09>....</TD><TD BGCOLOR=#1d0302>....</TD><TD BGCOLOR=#200c05>....</TD><TD BGCOLOR=#160c03>....</TD><TD BGCOLOR=#190d07>....</TD><TD BGCOLOR=#170d01>....</TD><TD BGCOLOR=#160b05>....</TD><TD BGCOLOR=#120902>....</TD><TD BGCOLOR=#170804>....</TD><TD BGCOLOR=#1f0503>....</TD><TD BGCOLOR=#250c02>....</TD><TD BGCOLOR=#2a0802>....</TD><TD BGCOLOR=#4a3623>....</TD><TD BGCOLOR=#4f4c2b>....</TD><TD BGCOLOR=#534c2c>....</TD><TD BGCOLOR=#5f5033>....</TD><TD BGCOLOR=#5d5c4d>....</TD><TD BGCOLOR=#52482e>....</TD><TD BGCOLOR=#533b28>....</TD><TD BGCOLOR=#4a2a06>....</TD><TD BGCOLOR=#422a03>....</TD><TD BGCOLOR=#3b2d07>....</TD><TD BGCOLOR=#322906>....</TD><TD BGCOLOR=#2f200b>....</TD><TD BGCOLOR=#281704>....</TD><TD BGCOLOR=#2f1d0a>....</TD><TD BGCOLOR=#2d1a08>....</TD><TD BGCOLOR=#281502>....</TD><TD BGCOLOR=#3e240e>....</TD><TD BGCOLOR=#563d2a>....</TD><TD BGCOLOR=#5b483a>....</TD><TD BGCOLOR=#5c4741>....</TD><TD BGCOLOR=#604445>....</TD><TD BGCOLOR=#5f4b44>....</TD><TD BGCOLOR=#655345>....</TD><TD BGCOLOR=#68544c>....</TD><TD BGCOLOR=#69544f>....</TD><TD BGCOLOR=#69554a>....</TD><TD BGCOLOR=#6c514d>....</TD><TD BGCOLOR=#625249>....</TD><TD BGCOLOR=#574840>....</TD><TD BGCOLOR=#553a3d>....</TD><TD BGCOLOR=#594845>....</TD><TD BGCOLOR=#564b46>....</TD><TD BGCOLOR=#574a46>....</TD><TD BGCOLOR=#4f3e3a>....</TD><TD BGCOLOR=#4b3d34>....</TD><TD BGCOLOR=#3b2d23>....</TD><TD BGCOLOR=#33241b>....</TD><TD BGCOLOR=#362618>....</TD><TD BGCOLOR=#392710>....</TD><TD BGCOLOR=#392614>....</TD><TD BGCOLOR=#3b2913>....</TD><TD BGCOLOR=#3a270b>....</TD><TD BGCOLOR=#3d2813>....</TD><TD BGCOLOR=#3a2819>....</TD><TD BGCOLOR=#3d2f15>....</TD><TD BGCOLOR=#412a1c>....</TD><TD BGCOLOR=#402721>....</TD><TD BGCOLOR=#3b271e>....</TD><TD BGCOLOR=#3d261e>....</TD><TD BGCOLOR=#3c2918>....</TD><TD BGCOLOR=#3a2719>....</TD><TD BGCOLOR=#372414>....</TD><TD BGCOLOR=#392810>....</TD><TD BGCOLOR=#352819>....</TD><TD BGCOLOR=#382811>....</TD><TD BGCOLOR=#33260f>....</TD><TD BGCOLOR=#201509>....</TD><TD BGCOLOR=#200904>....</TD><TD BGCOLOR=#180b03>....</TD><TD BGCOLOR=#1e0c06>....</TD><TD BGCOLOR=#583f39>....</TD><TD BGCOLOR=#583d39>....</TD><TD BGCOLOR=#603e45>....</TD><TD BGCOLOR=#55383c>....</TD><TD BGCOLOR=#61463e>....</TD><TD BGCOLOR=#61433b>....</TD><TD BGCOLOR=#634744>....</TD><TD BGCOLOR=#5c443e>....</TD><TD BGCOLOR=#553931>....</TD><TD BGCOLOR=#382316>....</TD><TD BGCOLOR=#3e2a19>....</TD><TD BGCOLOR=#352812>....</TD><TD BGCOLOR=#3b290e>....</TD><TD BGCOLOR=#3a2c11>....</TD><TD BGCOLOR=#3f2913>....</TD><TD BGCOLOR=#3c2a15>....</TD><TD BGCOLOR=#3e2b0f>....</TD><TD BGCOLOR=#3d230c>....</TD><TD BGCOLOR=#3d2b14>....</TD><TD BGCOLOR=#3d210e>....</TD><TD BGCOLOR=#3f270d>....</TD><TD BGCOLOR=#352911>....</TD><TD BGCOLOR=#3d2c13>....</TD><TD BGCOLOR=#432f16>....</TD><TD BGCOLOR=#3d3516>....</TD><TD BGCOLOR=#442e0a>....</TD><TD BGCOLOR=#482c0d>....</TD><TD BGCOLOR=#3f2703>....</TD><TD BGCOLOR=#45300c>....</TD><TD BGCOLOR=#3f2d0f>....</TD><TD BGCOLOR=#342215>....</TD><TD BGCOLOR=#38211d>....</TD><TD BGCOLOR=#413c33>....</TD><TD BGCOLOR=#4c3b32>....</TD><TD BGCOLOR=#433320>....</TD><TD BGCOLOR=#423529>....</TD><TD BGCOLOR=#493a2c>....</TD><TD BGCOLOR=#4d3e2f>....</TD><TD BGCOLOR=#54463d>....</TD></TR>
<TR><TD BGCOLOR=#2f1808 COLSPAN=2>....</TD><TD BGCOLOR=#28150d>....</TD><TD BGCOLOR=#190c07>....</TD><TD BGCOLOR=#160c05>....</TD><TD BGCOLOR=#1b0a08>....</TD><TD BGCOLOR=#1d0806>....</TD><TD BGCOLOR=#1e0b03>....</TD><TD BGCOLOR=#1b0b04>....</TD><TD BGCOLOR=#1c0c07>....</TD><TD BGCOLOR=#190b01>....</TD><TD BGCOLOR=#190903>....</TD><TD BGCOLOR=#140803>....</TD><TD BGCOLOR=#190904>....</TD><TD BGCOLOR=#210604>....</TD><TD BGCOLOR=#250a01>....</TD><TD BGCOLOR=#2a0703>....</TD><TD BGCOLOR=#4a3527>....</TD><TD BGCOLOR=#4e4b2d>....</TD><TD BGCOLOR=#544c30>....</TD><TD BGCOLOR=#605135>....</TD><TD BGCOLOR=#616353>....</TD><TD BGCOLOR=#505033>....</TD><TD BGCOLOR=#534a32>....</TD><TD BGCOLOR=#482f08>....</TD><TD BGCOLOR=#402a04>....</TD><TD BGCOLOR=#402f0a>....</TD><TD BGCOLOR=#362907>....</TD><TD BGCOLOR=#2e230d>....</TD><TD BGCOLOR=#291b06>....</TD><TD BGCOLOR=#311e0b>....</TD><TD BGCOLOR=#271505>....</TD><TD BGCOLOR=#2a170b>....</TD><TD BGCOLOR=#432718>....</TD><TD BGCOLOR=#54382e>....</TD><TD BGCOLOR=#5e4940>....</TD><TD BGCOLOR=#5d4743>....</TD><TD BGCOLOR=#604447>....</TD><TD BGCOLOR=#55403b>....</TD><TD BGCOLOR=#5d4b3c>....</TD><TD BGCOLOR=#634f43>....</TD><TD BGCOLOR=#634e46>....</TD><TD BGCOLOR=#665344>....</TD><TD BGCOLOR=#5f483d>....</TD><TD BGCOLOR=#523e38>....</TD><TD BGCOLOR=#4c3837>....</TD><TD BGCOLOR=#5e4747>....</TD><TD BGCOLOR=#554d44>....</TD><TD BGCOLOR=#54473f>....</TD><TD BGCOLOR=#4c3933>....</TD><TD BGCOLOR=#3f2d26>....</TD><TD BGCOLOR=#3c2e21>....</TD><TD BGCOLOR=#372b15>....</TD><TD BGCOLOR=#362917>....</TD><TD BGCOLOR=#362617>....</TD><TD BGCOLOR=#3b2915>....</TD><TD BGCOLOR=#392517>....</TD><TD BGCOLOR=#3d2a18>....</TD><TD BGCOLOR=#392711>....</TD><TD BGCOLOR=#3e2c1a>....</TD><TD BGCOLOR=#382a19>....</TD><TD BGCOLOR=#3a2f1a>....</TD><TD BGCOLOR=#3c2c1d>....</TD><TD BGCOLOR=#3f2d25>....</TD><TD BGCOLOR=#3a2a27>....</TD><TD BGCOLOR=#352929>....</TD><TD BGCOLOR=#362e1b>....</TD><TD BGCOLOR=#352919>....</TD><TD BGCOLOR=#38261b>....</TD><TD BGCOLOR=#3e291a>....</TD><TD BGCOLOR=#38281a>....</TD><TD BGCOLOR=#392816>....</TD><TD BGCOLOR=#372b18>....</TD><TD BGCOLOR=#292011>....</TD><TD BGCOLOR=#230b07>....</TD><TD BGCOLOR=#141207>....</TD><TD BGCOLOR=#160b03>....</TD><TD BGCOLOR=#432723>....</TD><TD BGCOLOR=#58403c>....</TD><TD BGCOLOR=#583a3c>....</TD><TD BGCOLOR=#59403a>....</TD><TD BGCOLOR=#5e4438>....</TD><TD BGCOLOR=#604139>....</TD><TD BGCOLOR=#5b443c>....</TD><TD BGCOLOR=#584a38>....</TD><TD BGCOLOR=#44291d>....</TD><TD BGCOLOR=#3b2619>....</TD><TD BGCOLOR=#3b2716>....</TD><TD BGCOLOR=#362a14>....</TD><TD BGCOLOR=#392611>....</TD><TD BGCOLOR=#3a2c15>....</TD><TD BGCOLOR=#3e2912>....</TD><TD BGCOLOR=#3d2c13>....</TD><TD BGCOLOR=#3c280f>....</TD><TD BGCOLOR=#402610>....</TD><TD BGCOLOR=#3b2914>....</TD><TD BGCOLOR=#3d2110>....</TD><TD BGCOLOR=#3e230d>....</TD><TD BGCOLOR=#352613>....</TD><TD BGCOLOR=#392510>....</TD><TD BGCOLOR=#3f2613>....</TD><TD BGCOLOR=#3b2b12>....</TD><TD BGCOLOR=#412808>....</TD><TD BGCOLOR=#422809>....</TD><TD BGCOLOR=#412903>....</TD><TD BGCOLOR=#452d05>....</TD><TD BGCOLOR=#412c07>....</TD><TD BGCOLOR=#3a260f>....</TD><TD BGCOLOR=#392411>....</TD><TD BGCOLOR=#2f2615>....</TD><TD BGCOLOR=#412822>....</TD><TD BGCOLOR=#402e22>....</TD><TD BGCOLOR=#3d3129>....</TD><TD BGCOLOR=#4c362d>....</TD><TD BGCOLOR=#493228>....</TD><TD BGCOLOR=#4b3c36>....</TD></TR>
<TR><TD BGCOLOR=#6c6044 COLSPAN=2>....</TD><TD BGCOLOR=#635b4a>....</TD><TD BGCOLOR=#57544a>....</TD><TD BGCOLOR=#3e3c31>....</TD><TD BGCOLOR=#3b2927>....</TD><TD BGCOLOR=#1f0f0b>....</TD><TD BGCOLOR=#1e0d05>....</TD><TD BGCOLOR=#1e0c06>....</TD><TD BGCOLOR=#1e0c07>....</TD><TD BGCOLOR=#190800>....</TD><TD BGCOLOR=#1a0903>....</TD><TD BGCOLOR=#130a03>....</TD><TD BGCOLOR=#150b04>....</TD><TD BGCOLOR=#1a0602>....</TD><TD BGCOLOR=#1f0b01>....</TD><TD BGCOLOR=#280804>....</TD><TD BGCOLOR=#473226>....</TD><TD BGCOLOR=#4b472c>....</TD><TD BGCOLOR=#524a30>....</TD><TD BGCOLOR=#5a5334>....</TD><TD BGCOLOR=#57614e>....</TD><TD BGCOLOR=#505435>....</TD><TD BGCOLOR=#4e482e>....</TD><TD BGCOLOR=#422e06>....</TD><TD BGCOLOR=#3d2902>....</TD><TD BGCOLOR=#422f0b>....</TD><TD BGCOLOR=#3a2607>....</TD><TD BGCOLOR=#391f0e>....</TD><TD BGCOLOR=#361f0d>....</TD><TD BGCOLOR=#36230f>....</TD><TD BGCOLOR=#281406>....</TD><TD BGCOLOR=#2e130f>....</TD><TD BGCOLOR=#492c22>....</TD><TD BGCOLOR=#553e36>....</TD><TD BGCOLOR=#59493e>....</TD><TD BGCOLOR=#5d483e>....</TD><TD BGCOLOR=#634844>....</TD><TD BGCOLOR=#59463a>....</TD><TD BGCOLOR=#574634>....</TD><TD BGCOLOR=#594637>....</TD><TD BGCOLOR=#574338>....</TD><TD BGCOLOR=#554231>....</TD><TD BGCOLOR=#4c3830>....</TD><TD BGCOLOR=#4b3335>....</TD><TD BGCOLOR=#523b3b>....</TD><TD BGCOLOR=#564438>....</TD><TD BGCOLOR=#484737>....</TD><TD BGCOLOR=#44352b>....</TD><TD BGCOLOR=#38231a>....</TD><TD BGCOLOR=#38261c>....</TD><TD BGCOLOR=#3b2e1d>....</TD><TD BGCOLOR=#3a2f10>....</TD><TD BGCOLOR=#392d14>....</TD><TD BGCOLOR=#3a2b1c>....</TD><TD BGCOLOR=#3c2918>....</TD><TD BGCOLOR=#3c281d>....</TD><TD BGCOLOR=#3d2a1b>....</TD><TD BGCOLOR=#3d2c1a>....</TD><TD BGCOLOR=#3e2e1e>....</TD><TD BGCOLOR=#372b18>....</TD><TD BGCOLOR=#38301d>....</TD><TD BGCOLOR=#36301f>....</TD><TD BGCOLOR=#3e2f24>....</TD><TD BGCOLOR=#402a25>....</TD><TD BGCOLOR=#3b2b25>....</TD><TD BGCOLOR=#37341d>....</TD><TD BGCOLOR=#352e1e>....</TD><TD BGCOLOR=#3b2a23>....</TD><TD BGCOLOR=#3e2820>....</TD><TD BGCOLOR=#382f24>....</TD><TD BGCOLOR=#382721>....</TD><TD BGCOLOR=#382620>....</TD><TD BGCOLOR=#36281f>....</TD><TD BGCOLOR=#281911>....</TD><TD BGCOLOR=#180e05>....</TD><TD BGCOLOR=#160b03>....</TD><TD BGCOLOR=#1d0c07>....</TD><TD BGCOLOR=#543f3b>....</TD><TD BGCOLOR=#573d3b>....</TD><TD BGCOLOR=#604b40>....</TD><TD BGCOLOR=#654b3e>....</TD><TD BGCOLOR=#63433e>....</TD><TD BGCOLOR=#564336>....</TD><TD BGCOLOR=#423b21>....</TD><TD BGCOLOR=#392817>....</TD><TD BGCOLOR=#372618>....</TD><TD BGCOLOR=#3c2616>....</TD><TD BGCOLOR=#3b2814>....</TD><TD BGCOLOR=#3b241c>....</TD><TD BGCOLOR=#39281d>....</TD><TD BGCOLOR=#3d2718>....</TD><TD BGCOLOR=#3d2b17>....</TD><TD BGCOLOR=#3d2717>....</TD><TD BGCOLOR=#402419>....</TD><TD BGCOLOR=#3c281d>....</TD><TD BGCOLOR=#40251b>....</TD><TD BGCOLOR=#3d2914>....</TD><TD BGCOLOR=#312916>....</TD><TD BGCOLOR=#372915>....</TD><TD BGCOLOR=#3c2814>....</TD><TD BGCOLOR=#382a13>....</TD><TD BGCOLOR=#3b280e>....</TD><TD BGCOLOR=#3a2815>....</TD><TD BGCOLOR=#3e280e>....</TD><TD BGCOLOR=#432806>....</TD><TD BGCOLOR=#412b03>....</TD><TD BGCOLOR=#3d2803>....</TD><TD BGCOLOR=#3d2a08>....</TD><TD BGCOLOR=#2f2209>....</TD><TD BGCOLOR=#391914>....</TD><TD BGCOLOR=#37231d>....</TD><TD BGCOLOR=#392d28>....</TD><TD BGCOLOR=#4b2f2b>....</TD><TD BGCOLOR=#492b27>....</TD><TD BGCOLOR=#3e2e2b>....</TD></TR>
<TR><TD BGCOLOR=#8b876c COLSPAN=2>....</TD><TD BGCOLOR=#8b8670>....</TD><TD BGCOLOR=#837f6d>....</TD><TD BGCOLOR=#868272>....</TD><TD BGCOLOR=#7f816f>....</TD><TD BGCOLOR=#5d5f51>....</TD><TD BGCOLOR=#322a25>....</TD><TD BGCOLOR=#1a0d09>....</TD><TD BGCOLOR=#1b0f07>....</TD><TD BGCOLOR=#1f0a02>....</TD><TD BGCOLOR=#1b0c06>....</TD><TD BGCOLOR=#130b07>....</TD><TD BGCOLOR=#110903>....</TD><TD BGCOLOR=#140906>....</TD><TD BGCOLOR=#1f0a06>....</TD><TD BGCOLOR=#220903>....</TD><TD BGCOLOR=#433428>....</TD><TD BGCOLOR=#4d4731>....</TD><TD BGCOLOR=#52482d>....</TD><TD BGCOLOR=#5b4f37>....</TD><TD BGCOLOR=#575c4f>....</TD><TD BGCOLOR=#564b2e>....</TD><TD BGCOLOR=#513c20>....</TD><TD BGCOLOR=#432a06>....</TD><TD BGCOLOR=#382a08>....</TD><TD BGCOLOR=#3d2d0b>....</TD><TD BGCOLOR=#3c2305>....</TD><TD BGCOLOR=#391a0c>....</TD><TD BGCOLOR=#452411>....</TD><TD BGCOLOR=#2e230b>....</TD><TD BGCOLOR=#281608>....</TD><TD BGCOLOR=#361c13>....</TD><TD BGCOLOR=#4e2e20>....</TD><TD BGCOLOR=#503c2a>....</TD><TD BGCOLOR=#524438>....</TD><TD BGCOLOR=#59443c>....</TD><TD BGCOLOR=#5a4036>....</TD><TD BGCOLOR=#56433a>....</TD><TD BGCOLOR=#564941>....</TD><TD BGCOLOR=#56463a>....</TD><TD BGCOLOR=#533e31>....</TD><TD BGCOLOR=#4a372f>....</TD><TD BGCOLOR=#42362d>....</TD><TD BGCOLOR=#49413c>....</TD><TD BGCOLOR=#4e433f>....</TD><TD BGCOLOR=#4d3c32>....</TD><TD BGCOLOR=#46332b>....</TD><TD BGCOLOR=#401b15>....</TD><TD BGCOLOR=#3e311d>....</TD><TD BGCOLOR=#413720>....</TD><TD BGCOLOR=#453628>....</TD><TD BGCOLOR=#3e381a>....</TD><TD BGCOLOR=#3e341e>....</TD><TD BGCOLOR=#422f26>....</TD><TD BGCOLOR=#473022>....</TD><TD BGCOLOR=#45321f>....</TD><TD BGCOLOR=#453524>....</TD><TD BGCOLOR=#433426>....</TD><TD BGCOLOR=#403322>....</TD><TD BGCOLOR=#403321>....</TD><TD BGCOLOR=#413329>....</TD><TD BGCOLOR=#3f3624>....</TD><TD BGCOLOR=#433622>....</TD><TD BGCOLOR=#443223>....</TD><TD BGCOLOR=#403526>....</TD><TD BGCOLOR=#363122>....</TD><TD BGCOLOR=#393022>....</TD><TD BGCOLOR=#3c2d1e>....</TD><TD BGCOLOR=#422e1f>....</TD><TD BGCOLOR=#412e20>....</TD><TD BGCOLOR=#402822>....</TD><TD BGCOLOR=#3e2922>....</TD><TD BGCOLOR=#362c1c>....</TD><TD BGCOLOR=#2d2a1f>....</TD><TD BGCOLOR=#1a160c>....</TD><TD BGCOLOR=#100c02>....</TD><TD BGCOLOR=#120b01>....</TD><TD BGCOLOR=#372821>....</TD><TD BGCOLOR=#564745>....</TD><TD BGCOLOR=#5c4842>....</TD><TD BGCOLOR=#614b45>....</TD><TD BGCOLOR=#624a4d>....</TD><TD BGCOLOR=#533c2b>....</TD><TD BGCOLOR=#3a2b11>....</TD><TD BGCOLOR=#3a281e>....</TD><TD BGCOLOR=#3a2720>....</TD><TD BGCOLOR=#3c281d>....</TD><TD BGCOLOR=#3d2a15>....</TD><TD BGCOLOR=#3f271b>....</TD><TD BGCOLOR=#3c271b>....</TD><TD BGCOLOR=#3c2f1b>....</TD><TD BGCOLOR=#383019>....</TD><TD BGCOLOR=#3c2b1f>....</TD><TD BGCOLOR=#3f2520>....</TD><TD BGCOLOR=#3c251c>....</TD><TD BGCOLOR=#3a2a17>....</TD><TD BGCOLOR=#372c1b>....</TD><TD BGCOLOR=#3a281d>....</TD><TD BGCOLOR=#3b2817>....</TD><TD BGCOLOR=#3a2a12>....</TD><TD BGCOLOR=#3b2915>....</TD><TD BGCOLOR=#3b2914>....</TD><TD BGCOLOR=#3d2b18>....</TD><TD BGCOLOR=#412915>....</TD><TD BGCOLOR=#422b15>....</TD><TD BGCOLOR=#3f3116>....</TD><TD BGCOLOR=#402a08>....</TD><TD BGCOLOR=#422605>....</TD><TD BGCOLOR=#3b1e03>....</TD><TD BGCOLOR=#361e08>....</TD><TD BGCOLOR=#291f0b>....</TD><TD BGCOLOR=#2f211a>....</TD><TD BGCOLOR=#422727>....</TD><TD BGCOLOR=#492b27>....</TD><TD BGCOLOR=#3e2718>....</TD></TR>
<TR><TD BGCOLOR=#979379 COLSPAN=2>....</TD><TD BGCOLOR=#8f8b74>....</TD><TD BGCOLOR=#948e7b>....</TD><TD BGCOLOR=#98917f>....</TD><TD BGCOLOR=#978f71>....</TD><TD BGCOLOR=#8a8d72>....</TD><TD BGCOLOR=#757b65>....</TD><TD BGCOLOR=#494a3a>....</TD><TD BGCOLOR=#180c06>....</TD><TD BGCOLOR=#200902>....</TD><TD BGCOLOR=#190a05>....</TD><TD BGCOLOR=#110906>....</TD><TD BGCOLOR=#100903>....</TD><TD BGCOLOR=#140906>....</TD><TD BGCOLOR=#1f0a06>....</TD><TD BGCOLOR=#210903>....</TD><TD BGCOLOR=#433528>....</TD><TD BGCOLOR=#4d4731>....</TD><TD BGCOLOR=#52482d>....</TD><TD BGCOLOR=#5a4c36>....</TD><TD BGCOLOR=#555a4d>....</TD><TD BGCOLOR=#514427>....</TD><TD BGCOLOR=#4b3418>....</TD><TD BGCOLOR=#422805>....</TD><TD BGCOLOR=#392b0b>....</TD><TD BGCOLOR=#3a2a08>....</TD><TD BGCOLOR=#3c2205>....</TD><TD BGCOLOR=#412315>....</TD><TD BGCOLOR=#4c2a17>....</TD><TD BGCOLOR=#362c14>....</TD><TD BGCOLOR=#281709>....</TD><TD BGCOLOR=#3c2319>....</TD><TD BGCOLOR=#502f20>....</TD><TD BGCOLOR=#4f3a27>....</TD><TD BGCOLOR=#4e4035>....</TD><TD BGCOLOR=#533e36>....</TD><TD BGCOLOR=#543a2f>....</TD><TD BGCOLOR=#523e37>....</TD><TD BGCOLOR=#51453e>....</TD><TD BGCOLOR=#544539>....</TD><TD BGCOLOR=#543f32>....</TD><TD BGCOLOR=#4d3a34>....</TD><TD BGCOLOR=#4b4136>....</TD><TD BGCOLOR=#514b44>....</TD><TD BGCOLOR=#4d433e>....</TD><TD BGCOLOR=#44342b>....</TD><TD BGCOLOR=#38231c>....</TD><TD BGCOLOR=#48211b>....</TD><TD BGCOLOR=#473c25>....</TD><TD BGCOLOR=#463d24>....</TD><TD BGCOLOR=#4c3d30>....</TD><TD BGCOLOR=#4b4629>....</TD><TD BGCOLOR=#4a412b>....</TD><TD BGCOLOR=#524037>....</TD><TD BGCOLOR=#4f3e2f>....</TD><TD BGCOLOR=#4a3e27>....</TD><TD BGCOLOR=#4a402d>....</TD><TD BGCOLOR=#4c4133>....</TD><TD BGCOLOR=#4a3d2c>....</TD><TD BGCOLOR=#4b3e2d>....</TD><TD BGCOLOR=#4d3e35>....</TD><TD BGCOLOR=#4b422f>....</TD><TD BGCOLOR=#4d402b>....</TD><TD BGCOLOR=#4d3d2c>....</TD><TD BGCOLOR=#473d2e>....</TD><TD BGCOLOR=#464134>....</TD><TD BGCOLOR=#463c2f>....</TD><TD BGCOLOR=#463828>....</TD><TD BGCOLOR=#493626>....</TD><TD BGCOLOR=#493b2a>....</TD><TD BGCOLOR=#49362e>....</TD><TD BGCOLOR=#493b30>....</TD><TD BGCOLOR=#423e2b>....</TD><TD BGCOLOR=#3f3d31>....</TD><TD BGCOLOR=#39372b>....</TD><TD BGCOLOR=#252318>....</TD><TD BGCOLOR=#1c1209>....</TD><TD BGCOLOR=#230d0a>....</TD><TD BGCOLOR=#463736>....</TD><TD BGCOLOR=#50423c>....</TD><TD BGCOLOR=#584640>....</TD><TD BGCOLOR=#563f44>....</TD><TD BGCOLOR=#422917>....</TD><TD BGCOLOR=#3d2b12>....</TD><TD BGCOLOR=#3a271e>....</TD><TD BGCOLOR=#3f2a25>....</TD><TD BGCOLOR=#3f2b21>....</TD><TD BGCOLOR=#402e18>....</TD><TD BGCOLOR=#3e2d1e>....</TD><TD BGCOLOR=#3d2c1d>....</TD><TD BGCOLOR=#3d2d1a>....</TD><TD BGCOLOR=#3f301a>....</TD><TD BGCOLOR=#41311d>....</TD><TD BGCOLOR=#40261f>....</TD><TD BGCOLOR=#402822>....</TD><TD BGCOLOR=#3a2b1d>....</TD><TD BGCOLOR=#342a1a>....</TD><TD BGCOLOR=#3b271d>....</TD><TD BGCOLOR=#3a2615>....</TD><TD BGCOLOR=#3b2b13>....</TD><TD BGCOLOR=#3d2b17 COLSPAN=2>....</TD><TD BGCOLOR=#3f2d19>....</TD><TD BGCOLOR=#422c17>....</TD><TD BGCOLOR=#40311b>....</TD><TD BGCOLOR=#3c361a>....</TD><TD BGCOLOR=#41310d>....</TD><TD BGCOLOR=#462b09>....</TD><TD BGCOLOR=#432408>....</TD><TD BGCOLOR=#3c250d>....</TD><TD BGCOLOR=#2b220c>....</TD><TD BGCOLOR=#2a1b14>....</TD><TD BGCOLOR=#402526>....</TD><TD BGCOLOR=#482a26>....</TD><TD BGCOLOR=#442c1b>....</TD></TR>
</TABLE>
dj1hg8kcz29f5fygx0brxiqifzn7of7
14960
14959
2007-11-15T12:19:12Z
AdRiley
3650
Undo revision 1030771 by [[Special:Contributions/IJstLrndAlotAboutStargateAtWP|IJstLrndAlotAboutStargateAtWP]] ([[User talk:IJstLrndAlotAboutStargateAtWP|Talk]])
14960
wikitext
text/x-wiki
<includeonly>[[Category:{{BOOKNAME}}|{{#ifeq:{{BOOKNAME}}|{{PAGENAME}}| |{{{1|{{FULLCHAPTERNAME}}}}}]]</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
jjwghjjqlr7jok68yy7ekz3ncdq87r1
14961
14960
2007-12-12T19:30:12Z
VSimonian
3651
14961
wikitext
text/x-wiki
<includeonly>[[Category:{{BOOKNAME}}|{{#ifeq:{{BOOKNAME}}|{{PAGENAME}}|{{PAGENAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
6jv4i71rya3yktwi3diozbj13cwiz8z
14962
14961
2007-12-12T19:36:42Z
VSimonian
3651
14962
wikitext
text/x-wiki
<includeonly>[[Category:{{BOOKNAME}}|{{#ifeq:{{BOOKNAME}}|{{PAGENAME}}|{{PAGENAME}}|{{{1|{{FULLCHAPTERNAME}}}}}}}]]</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
cxasohhaj5nih4d54hnrnlj0eqdhw2j
14963
14962
2007-12-12T19:38:18Z
VSimonian
3651
14963
wikitext
text/x-wiki
<includeonly>[[Category:{{BOOKNAME}}|{{#ifeq:"{{BOOKNAME}}"|"{{PAGENAME}}"|{{PAGENAME}}|{{{1|{{FULLCHAPTERNAME}}}}}}}]]</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
cfcxcmt8poly0oui6j3g25d6gnp8gy4
14964
14963
2007-12-12T20:08:38Z
VSimonian
3651
14964
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{BOOKNAME}}"|"{{PAGENAME}}"|[[Category:{{BOOKNAME}}|{{PAGENAME}}]]|[[Category:{{BOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
oc8juateguijives8kr4cdw1q0dwmju
14965
14964
2007-12-12T20:10:11Z
VSimonian
3651
Yeay - I fixed it! :D
14965
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{BOOKNAME}}"|"{{PAGENAME}}"|[[Category:{{BOOKNAME}}|{{BOOKNAME}}]]|[[Category:{{BOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
nwyeusg0ior39l3c78r7d1zze8v907c
14966
14965
2008-04-01T21:13:46Z
Darklama
2894
fix the logic some
14966
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
n2q3fj29hpe38hp5sobq24w5owymir1
14967
14966
2008-05-23T15:30:30Z
Diagramma Della Verita
3652
14967
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
[[ms:Templat:MukaDepan]]
lx5gxnb1hyuf0y2you7cg3ty7osizm8
14968
14967
2008-10-10T17:22:10Z
Vikysobs
3653
/*Reference*/
14968
wikitext
text/x-wiki
<div style="position:fixed; width=20000; height=2000; left:9%; top:0%; overflow:visible;">
<imagemap> Image:Avrilcloseup.jpg
rect 0 0 400 360 [http://www.avrillavigne.com/]
desc none
</imagemap>
<div style="position:fixed; width=20000; height=2000; left:15%; top:90%; overflow:visible;">
{| align="center" cellpadding="0" cellspacing="2" padding="10px" style="background: white; margin:25px; text-align:center; font-size:555%;"
|<font color="Blue">Avril Lavigne Rules!</font>
|}
</div>
<div style="position:fixed; width=20000; height=2000; left:15%; top:20%; overflow:visible;">
{| align="center" cellpadding="0" cellspacing="2" padding="10px" style="background: white; margin:25px; text-align:center; font-size:555%;"
|<div class="jpg">
{|
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#BBBBBB" |
| bgcolor="#A9A9A9" |
| bgcolor="#D8D8D8" |
| bgcolor="#CBCBCB" |
| bgcolor="#969696" |
| bgcolor="#A9A9A9" |
| colspan="2" bgcolor="#D2D2D2" |
| bgcolor="#DBDBDB" |
| bgcolor="#B9B9B9" |
| bgcolor="#DEDEDE" |
| bgcolor="#E5E5E5" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FBFBFB" |
| colspan="7" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#F7F7F7" |
| bgcolor="#CFCFCF" |
| bgcolor="#BDBDBD" |
| bgcolor="#B0B0B0" |
| bgcolor="#CBCBCB" |
| bgcolor="#C4C4C4" |
| bgcolor="#A7A7A7" |
| bgcolor="#ADADAD" |
| bgcolor="#B9B9B9" |
| bgcolor="#C6C6C6" |
| bgcolor="#E0E0E0" |
| bgcolor="#CBCBCB" |
| bgcolor="#CCCCCC" |
| bgcolor="#D6D6D6" |
| bgcolor="#F2F2F2" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#F7F7F7" |
| colspan="7" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#E1E1E1" |
| bgcolor="#B0B0B0" |
| bgcolor="#C5C5C5" |
| bgcolor="#CFCFCF" |
| bgcolor="#CCCCCC" |
| bgcolor="#CECECE" |
| bgcolor="#AFAFAF" |
| bgcolor="#AEAEAE" |
| bgcolor="#C2C2C2" |
| bgcolor="#D9D9D9" |
| bgcolor="#CFCFCF" |
| bgcolor="#C5C5C5" |
| bgcolor="#C3C3C3" |
| bgcolor="#CECECE" |
| bgcolor="#D9D9D9" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| colspan="7" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#EFEFEF" |
| bgcolor="#C5C5C5" |
| bgcolor="#C2C2C2" |
| bgcolor="#CBCBCB" |
| bgcolor="#E1E1E1" |
| bgcolor="#CBCBCB" |
| bgcolor="#BEBEBE" |
| bgcolor="#AAAAAA" |
| bgcolor="#A9A9A9" |
| bgcolor="#BCBCBC" |
| bgcolor="#DADADA" |
| bgcolor="#C3C3C3" |
| bgcolor="#D4D4D4" |
| bgcolor="#E1E1E1" |
| bgcolor="#D1D1D1" |
| bgcolor="#C6C6C6" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="7" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#F1F1F1" |
| bgcolor="#D9D9D9" |
| bgcolor="#BDBDBD" |
| bgcolor="#D6D6D6" |
| bgcolor="#C9C9C9" |
| bgcolor="#C5C5C5" |
| bgcolor="#BDBDBD" |
| bgcolor="#C4C4C4" |
| bgcolor="#D2D2D2" |
| bgcolor="#C8C8C8" |
| bgcolor="#AAAAAA" |
| bgcolor="#B7B7B7" |
| bgcolor="#B2B2B2" |
| bgcolor="#D0D0D0" |
| bgcolor="#D9D9D9" |
| bgcolor="#D7D7D7" |
| bgcolor="#BCBCBC" |
| bgcolor="#F5F5F5" |
| bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FBFBFB" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#E3E3E3" |
| bgcolor="#B6B6B6" |
| bgcolor="#CACACA" |
| bgcolor="#CECECE" |
| bgcolor="#C4C4C4" |
| bgcolor="#A7A7A7" |
| bgcolor="#BEBEBE" |
| bgcolor="#DADADA" |
| bgcolor="#E7E7E7" |
| bgcolor="#E5E5E5" |
| bgcolor="#CDCDCD" |
| bgcolor="#C5C5C5" |
| bgcolor="#AAAAAA" |
| bgcolor="#A9A9A9" |
| bgcolor="#C4C4C4" |
| bgcolor="#DEDEDE" |
| bgcolor="#C3C3C3" |
| bgcolor="#ECECEC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#C8C8C8" |
| bgcolor="#AFAFAF" |
| bgcolor="#D3D3D3" |
| bgcolor="#BEBEBE" |
| bgcolor="#B0B0B0" |
| bgcolor="#AEAEAE" |
| bgcolor="#D0D0D0" |
| bgcolor="#D4D4D4" |
| bgcolor="#CFCFCF" |
| bgcolor="#DCDCDC" |
| bgcolor="#E7E7E7" |
| bgcolor="#E1E1E1" |
| bgcolor="#BFBFBF" |
| bgcolor="#999999" |
| bgcolor="#CCCCCC" |
| bgcolor="#DCDCDC" |
| bgcolor="#CECECE" |
| bgcolor="#E7E7E7" |
| colspan="11" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#B8B8B8" |
| bgcolor="#C4C4C4" |
| bgcolor="#D3D3D3" |
| bgcolor="#B8B8B8" |
| bgcolor="#949494" |
| bgcolor="#C3C3C3" |
| bgcolor="#DADADA" |
| bgcolor="#E3E3E3" |
| bgcolor="#E1E1E1" |
| bgcolor="#DFDFDF" |
| bgcolor="#CFCFCF" |
| bgcolor="#C5C5C5" |
| bgcolor="#C6C6C6" |
| bgcolor="#8E8E8E" |
| bgcolor="#B5B5B5" |
| bgcolor="#D1D1D1" |
| bgcolor="#D0D0D0" |
| bgcolor="#E1E1E1" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F4F4F4" |
| bgcolor="#FEFEFE" |
| colspan="7" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#AFAFAF" |
| bgcolor="#BCBCBC" |
| bgcolor="#D3D3D3" |
| bgcolor="#B6B6B6" |
| bgcolor="#848484" |
| bgcolor="#A0A0A0" |
| bgcolor="#A1A1A1" |
| bgcolor="#ADADAD" |
| bgcolor="#D1D1D1" |
| bgcolor="#CDCDCD" |
| bgcolor="#AAAAAA" |
| bgcolor="#ABABAB" |
| bgcolor="#C3C3C3" |
| bgcolor="#BDBDBD" |
| bgcolor="#A3A3A3" |
| bgcolor="#D0D0D0" |
| bgcolor="#D5D5D5" |
| bgcolor="#D9D9D9" |
| colspan="4" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#AEAEAE" |
| bgcolor="#BDBDBD" |
| bgcolor="#C4C4C4" |
| bgcolor="#939393" |
| bgcolor="#5F5F5F" |
| bgcolor="#717171" |
| bgcolor="#808080" |
| bgcolor="#BDBDBD" |
| bgcolor="#DBDBDB" |
| bgcolor="#E1E1E1" |
| bgcolor="#B6B6B6" |
| bgcolor="#808080" |
| bgcolor="#717171" |
| bgcolor="#828282" |
| bgcolor="#939393" |
| bgcolor="#BCBCBC" |
| bgcolor="#C4C4C4" |
| bgcolor="#CCCCCC" |
| bgcolor="#FDFDFD" |
| bgcolor="#FCFCFC" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#A2A2A2" |
| bgcolor="#C3C3C3" |
| bgcolor="#C1C1C1" |
| bgcolor="#8E8E8E" |
| bgcolor="#767676" |
| bgcolor="#838383" |
| bgcolor="#A0A0A0" |
| bgcolor="#DCDCDC" |
| bgcolor="#D9D9D9" |
| bgcolor="#E0E0E0" |
| bgcolor="#CBCBCB" |
| bgcolor="#929292" |
| bgcolor="#747474" |
| bgcolor="#828282" |
| bgcolor="#919191" |
| bgcolor="#BFBFBF" |
| bgcolor="#C7C7C7" |
| bgcolor="#CFCFCF" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#9C9C9C" |
| bgcolor="#CDCDCD" |
| bgcolor="#C7C7C7" |
| bgcolor="#9F9F9F" |
| bgcolor="#B8B8B8" |
| bgcolor="#BFBFBF" |
| bgcolor="#D7D7D7" |
| bgcolor="#E3E3E3" |
| bgcolor="#CECECE" |
| bgcolor="#D8D8D8" |
| bgcolor="#E0E0E0" |
| bgcolor="#C9C9C9" |
| bgcolor="#BEBEBE" |
| bgcolor="#B5B5B5" |
| bgcolor="#989898" |
| bgcolor="#C5C5C5" |
| bgcolor="#CCCCCC" |
| bgcolor="#D4D4D4" |
| colspan="4" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#A4A4A4" |
| bgcolor="#D5D5D5" |
| bgcolor="#C6C6C6" |
| bgcolor="#9E9E9E" |
| bgcolor="#D9D9D9" |
| bgcolor="#D7D7D7" |
| bgcolor="#DADADA" |
| bgcolor="#CFCFCF" |
| bgcolor="#CECECE" |
| bgcolor="#E1E1E1" |
| bgcolor="#E6E6E6" |
| bgcolor="#DADADA" |
| bgcolor="#E0E0E0" |
| bgcolor="#CBCBCB" |
| bgcolor="#919191" |
| bgcolor="#B8B8B8" |
| bgcolor="#C1C1C1" |
| bgcolor="#CBCBCB" |
| colspan="2" bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#A8A8A8" |
| bgcolor="#D5D5D5" |
| bgcolor="#C6C6C6" |
| bgcolor="#959595" |
| bgcolor="#DADADA" |
| bgcolor="#DDDDDD" |
| bgcolor="#D6D6D6" |
| bgcolor="#CECECE" |
| bgcolor="#D3D3D3" |
| bgcolor="#DEDEDE" |
| bgcolor="#DDDDDD" |
| bgcolor="#DCDCDC" |
| bgcolor="#E3E3E3" |
| bgcolor="#C4C4C4" |
| bgcolor="#868686" |
| bgcolor="#B7B7B7" |
| bgcolor="#BFBFBF" |
| bgcolor="#C9C9C9" |
| colspan="2" bgcolor="#FCFCFC" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#A8A8A8" |
| bgcolor="#D1D1D1" |
| bgcolor="#CECECE" |
| bgcolor="#898989" |
| bgcolor="#C2C2C2" |
| bgcolor="#D8D8D8" |
| bgcolor="#DEDEDE" |
| bgcolor="#D5D5D5" |
| bgcolor="#CECECE" |
| bgcolor="#CFCFCF" |
| bgcolor="#DBDBDB" |
| bgcolor="#E5E5E5" |
| bgcolor="#D7D7D7" |
| bgcolor="#AEAEAE" |
| bgcolor="#868686" |
| bgcolor="#C1C1C1" |
| bgcolor="#C8C8C8" |
| bgcolor="#CFCFCF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#AEAEAE" |
| bgcolor="#D2D2D2" |
| bgcolor="#D4D4D4" |
| bgcolor="#777777" |
| bgcolor="#9A9A9A" |
| bgcolor="#BEBEBE" |
| bgcolor="#D4D4D4" |
| bgcolor="#CDCDCD" |
| bgcolor="#C5C5C5" |
| bgcolor="#CCCCCC" |
| colspan="2" bgcolor="#E3E3E3" |
| bgcolor="#B6B6B6" |
| bgcolor="#8E8E8E" |
| bgcolor="#8B8B8B" |
| bgcolor="#BEBEBE" |
| bgcolor="#C5C5C5" |
| bgcolor="#CCCCCC" |
| bgcolor="#FCFCFC" |
| bgcolor="#FBFBFB" |
| bgcolor="#FEFEFE" |
| colspan="8" bgcolor="#FFFFFF" |
|-
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#F2F2F2" |
| bgcolor="#BBBBBB" |
| bgcolor="#C6C6C6" |
| bgcolor="#CBCBCB" |
| bgcolor="#828282" |
| bgcolor="#727272" |
| bgcolor="#808080" |
| bgcolor="#AFAFAF" |
| bgcolor="#BCBCBC" |
| bgcolor="#D9D9D9" |
| bgcolor="#E5E5E5" |
| bgcolor="#C0C0C0" |
| bgcolor="#ADADAD" |
| bgcolor="#7C7C7C" |
| bgcolor="#818181" |
| bgcolor="#969696" |
| bgcolor="#B9B9B9" |
| bgcolor="#C9C9C9" |
| bgcolor="#D4D4D4" |
| bgcolor="#F0F0F0" |
| bgcolor="#FEFEFE" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#E7E7E7" |
| bgcolor="#BDBDBD" |
| bgcolor="#C1C1C1" |
| bgcolor="#BBBBBB" |
| bgcolor="#7B7B7B" |
| bgcolor="#797979" |
| bgcolor="#7F7F7F" |
| bgcolor="#969696" |
| bgcolor="#919191" |
| bgcolor="#AEAEAE" |
| bgcolor="#B2B2B2" |
| bgcolor="#7D7D7D" |
| bgcolor="#6B6B6B" |
| bgcolor="#838383" |
| bgcolor="#777777" |
| bgcolor="#868686" |
| bgcolor="#CCCCCC" |
| bgcolor="#CACACA" |
| bgcolor="#C8C8C8" |
| bgcolor="#E9E9E9" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| colspan="2" bgcolor="#FAFAFA" |
| bgcolor="#F9F9F9" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#D2D2D2" |
| colspan="2" bgcolor="#BEBEBE" |
| bgcolor="#AFAFAF" |
| bgcolor="#777777" |
| bgcolor="#808080" |
| bgcolor="#7E7E7E" |
| bgcolor="#7D7D7D" |
| bgcolor="#B1B1B1" |
| bgcolor="#777777" |
| bgcolor="#535353" |
| bgcolor="#454545" |
| bgcolor="#4F4F4F" |
| bgcolor="#828282" |
| bgcolor="#717171" |
| bgcolor="#A4A4A4" |
| bgcolor="#C9C9C9" |
| bgcolor="#C2C2C2" |
| bgcolor="#BDBDBD" |
| bgcolor="#E7E7E7" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#F9F9F9" |
| colspan="4" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FBFBFB" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#F8F8F8" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#BBBBBB" |
| bgcolor="#BEBEBE" |
| bgcolor="#C2C2C2" |
| bgcolor="#B5B5B5" |
| bgcolor="#7D7D7D" |
| bgcolor="#7E7E7E" |
| bgcolor="#7C7C7C" |
| bgcolor="#767676" |
| bgcolor="#DADADA" |
| bgcolor="#AFAFAF" |
| bgcolor="#737373" |
| colspan="2" bgcolor="#414141" |
| bgcolor="#787878" |
| bgcolor="#797979" |
| bgcolor="#848484" |
| bgcolor="#C3C3C3" |
| bgcolor="#C2C2C2" |
| bgcolor="#B2B2B2" |
| bgcolor="#CECECE" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="5" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#F9F9F9" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#AAAAAA" |
| bgcolor="#BFBFBF" |
| bgcolor="#C9C9C9" |
| bgcolor="#C3C3C3" |
| bgcolor="#858585" |
| bgcolor="#757575" |
| bgcolor="#777777" |
| bgcolor="#7D7D7D" |
| bgcolor="#D3D3D3" |
| bgcolor="#E0E0E0" |
| bgcolor="#C8C8C8" |
| bgcolor="#999999" |
| bgcolor="#7C7C7C" |
| bgcolor="#727272" |
| bgcolor="#9D9D9D" |
| bgcolor="#9B9B9B" |
| bgcolor="#CACACA" |
| bgcolor="#D1D1D1" |
| bgcolor="#AAAAAA" |
| bgcolor="#A3A3A3" |
| bgcolor="#CECECE" |
| bgcolor="#F0F0F0" |
| colspan="3" bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FBFBFB" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#A1A1A1" |
| bgcolor="#C2C2C2" |
| colspan="2" bgcolor="#CACACA" |
| bgcolor="#8D8D8D" |
| bgcolor="#747474" |
| bgcolor="#7D7D7D" |
| bgcolor="#8C8C8C" |
| bgcolor="#A7A7A7" |
| bgcolor="#B3B3B3" |
| bgcolor="#B1B1B1" |
| bgcolor="#B2B2B2" |
| bgcolor="#9F9F9F" |
| bgcolor="#6F6F6F" |
| bgcolor="#AEAEAE" |
| bgcolor="#B5B5B5" |
| bgcolor="#C2C2C2" |
| bgcolor="#DADADA" |
| bgcolor="#B0B0B0" |
| bgcolor="#999999" |
| bgcolor="#BEBEBE" |
| bgcolor="#E1E1E1" |
| bgcolor="#F5F5F5" |
| bgcolor="#F9F9F9" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="4" bgcolor="#FFFFFF" |
| bgcolor="#F4F4F4" |
| bgcolor="#D2D2D2" |
| bgcolor="#9C9C9C" |
| colspan="2" bgcolor="#C4C4C4" |
| bgcolor="#C5C5C5" |
| bgcolor="#969696" |
| bgcolor="#8A8A8A" |
| bgcolor="#999999" |
| bgcolor="#A2A2A2" |
| bgcolor="#BBBBBB" |
| bgcolor="#D1D1D1" |
| bgcolor="#C7C7C7" |
| bgcolor="#B7B7B7" |
| bgcolor="#ADADAD" |
| bgcolor="#BCBCBC" |
| bgcolor="#DADADA" |
| colspan="2" bgcolor="#B3B3B3" |
| bgcolor="#D6D6D6" |
| bgcolor="#B8B8B8" |
| bgcolor="#A9A9A9" |
| bgcolor="#CBCBCB" |
| colspan="2" bgcolor="#D9D9D9" |
| bgcolor="#D8D8D8" |
| bgcolor="#E6E6E6" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#F9F9F9" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#E2E2E2" |
| bgcolor="#ADADAD" |
| bgcolor="#9A9A9A" |
| bgcolor="#C4C4C4" |
| colspan="2" bgcolor="#BCBCBC" |
| bgcolor="#9E9E9E" |
| bgcolor="#A3A3A3" |
| colspan="2" bgcolor="#B6B6B6" |
| bgcolor="#B5B5B5" |
| bgcolor="#AFAFAF" |
| bgcolor="#B5B5B5" |
| bgcolor="#CCCCCC" |
| bgcolor="#BABABA" |
| bgcolor="#CBCBCB" |
| bgcolor="#C5C5C5" |
| bgcolor="#BDBDBD" |
| bgcolor="#B5B5B5" |
| bgcolor="#D3D3D3" |
| bgcolor="#B4B4B4" |
| bgcolor="#ADADAD" |
| bgcolor="#D0D0D0" |
| bgcolor="#D3D3D3" |
| bgcolor="#CCCCCC" |
| bgcolor="#D1D1D1" |
| bgcolor="#B1B1B1" |
| bgcolor="#DEDEDE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#E5E5E5" |
| bgcolor="#A5A5A5" |
| bgcolor="#858585" |
| bgcolor="#AAAAAA" |
| bgcolor="#BCBCBC" |
| bgcolor="#C4C4C4" |
| bgcolor="#C3C3C3" |
| bgcolor="#A9A9A9" |
| bgcolor="#A1A1A1" |
| bgcolor="#C1C1C1" |
| bgcolor="#CCCCCC" |
| bgcolor="#B7B7B7" |
| bgcolor="#CFCFCF" |
| bgcolor="#C3C3C3" |
| bgcolor="#C2C2C2" |
| bgcolor="#C0C0C0" |
| bgcolor="#CDCDCD" |
| bgcolor="#D7D7D7" |
| bgcolor="#ABABAB" |
| bgcolor="#BCBCBC" |
| bgcolor="#C3C3C3" |
| bgcolor="#ADADAD" |
| bgcolor="#B4B4B4" |
| bgcolor="#B9B9B9" |
| bgcolor="#D6D6D6" |
| bgcolor="#D5D5D5" |
| bgcolor="#C7C7C7" |
| bgcolor="#B6B6B6" |
| bgcolor="#DEDEDE" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#F9F9F9" |
|-
| bgcolor="#FDFDFD" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#F7F7F7" |
| bgcolor="#F2F2F2" |
| bgcolor="#909090" |
| bgcolor="#8F8F8F" |
| bgcolor="#A2A2A2" |
| bgcolor="#BCBCBC" |
| bgcolor="#C6C6C6" |
| bgcolor="#C1C1C1" |
| bgcolor="#ADADAD" |
| bgcolor="#B0B0B0" |
| colspan="2" bgcolor="#D0D0D0" |
| bgcolor="#BBBBBB" |
| bgcolor="#B1B1B1" |
| bgcolor="#A4A4A4" |
| bgcolor="#A6A6A6" |
| bgcolor="#C3C3C3" |
| colspan="2" bgcolor="#D8D8D8" |
| bgcolor="#A8A8A8" |
| bgcolor="#BBBBBB" |
| bgcolor="#C2C2C2" |
| bgcolor="#B0B0B0" |
| bgcolor="#B1B1B1" |
| bgcolor="#ADADAD" |
| bgcolor="#CDCDCD" |
| bgcolor="#D4D4D4" |
| bgcolor="#CFCFCF" |
| bgcolor="#CDCDCD" |
| bgcolor="#DADADA" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
|-
| bgcolor="#FCFCFC" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#DBDBDB" |
| bgcolor="#959595" |
| bgcolor="#919191" |
| bgcolor="#9F9F9F" |
| bgcolor="#BCBCBC" |
| bgcolor="#C5C5C5" |
| bgcolor="#BDBDBD" |
| bgcolor="#B0B0B0" |
| bgcolor="#BCBCBC" |
| bgcolor="#DADADA" |
| bgcolor="#D1D1D1" |
| bgcolor="#BBBBBB" |
| bgcolor="#939393" |
| colspan="2" bgcolor="#979797" |
| bgcolor="#CDCDCD" |
| bgcolor="#E0E0E0" |
| bgcolor="#D8D8D8" |
| bgcolor="#B0B0B0" |
| bgcolor="#BABABA" |
| bgcolor="#C0C0C0" |
| bgcolor="#B4B4B4" |
| bgcolor="#ACACAC" |
| bgcolor="#9D9D9D" |
| bgcolor="#C4C4C4" |
| bgcolor="#D5D5D5" |
| bgcolor="#D8D8D8" |
| bgcolor="#DFDFDF" |
| bgcolor="#CACACA" |
| bgcolor="#F3F3F3" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#ABABAB" |
| bgcolor="#B3B3B3" |
| bgcolor="#8B8B8B" |
| bgcolor="#A6A6A6" |
| bgcolor="#BABABA" |
| bgcolor="#BEBEBE" |
| bgcolor="#BDBDBD" |
| bgcolor="#B2B2B2" |
| bgcolor="#BBBBBB" |
| bgcolor="#D7D7D7" |
| bgcolor="#D0D0D0" |
| bgcolor="#BBBBBB" |
| bgcolor="#898989" |
| bgcolor="#A1A1A1" |
| bgcolor="#9D9D9D" |
| bgcolor="#D5D5D5" |
| bgcolor="#DCDCDC" |
| bgcolor="#D3D3D3" |
| bgcolor="#BBBBBB" |
| colspan="2" bgcolor="#BABABA" |
| bgcolor="#B5B5B5" |
| bgcolor="#A7A7A7" |
| bgcolor="#929292" |
| bgcolor="#C2C2C2" |
| bgcolor="#D6D6D6" |
| bgcolor="#DCDCDC" |
| bgcolor="#E0E0E0" |
| bgcolor="#B5B5B5" |
| bgcolor="#ECECEC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#F9F9F9" |
| bgcolor="#FDFDFD" |
| bgcolor="#A2A2A2" |
| bgcolor="#B4B4B4" |
| bgcolor="#909090" |
| bgcolor="#AFAFAF" |
| bgcolor="#B4B4B4" |
| bgcolor="#B6B6B6" |
| bgcolor="#C1C1C1" |
| bgcolor="#B9B9B9" |
| bgcolor="#B7B7B7" |
| bgcolor="#D2D2D2" |
| bgcolor="#D7D7D7" |
| bgcolor="#CCCCCC" |
| bgcolor="#8F8F8F" |
| bgcolor="#A1A1A1" |
| bgcolor="#9D9D9D" |
| bgcolor="#D4D4D4" |
| bgcolor="#D7D7D7" |
| bgcolor="#D1D1D1" |
| bgcolor="#C1C1C1" |
| bgcolor="#B9B9B9" |
| bgcolor="#B0B0B0" |
| bgcolor="#B2B2B2" |
| bgcolor="#A0A0A0" |
| bgcolor="#8B8B8B" |
| bgcolor="#C5C5C5" |
| bgcolor="#D7D7D7" |
| colspan="2" bgcolor="#DADADA" |
| bgcolor="#AEAEAE" |
| bgcolor="#E8E8E8" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#D5D5D5" |
| bgcolor="#BEBEBE" |
| bgcolor="#989898" |
| bgcolor="#9D9D9D" |
| bgcolor="#ACACAC" |
| bgcolor="#ADADAD" |
| bgcolor="#B3B3B3" |
| bgcolor="#C7C7C7" |
| bgcolor="#C1C1C1" |
| bgcolor="#BABABA" |
| bgcolor="#D4D4D4" |
| bgcolor="#DDDDDD" |
| bgcolor="#DFDFDF" |
| bgcolor="#999999" |
| bgcolor="#8C8C8C" |
| bgcolor="#949494" |
| bgcolor="#D1D1D1" |
| bgcolor="#DEDEDE" |
| bgcolor="#DCDCDC" |
| bgcolor="#C4C4C4" |
| bgcolor="#B6B6B6" |
| bgcolor="#A5A5A5" |
| bgcolor="#ACACAC" |
| bgcolor="#989898" |
| bgcolor="#828282" |
| bgcolor="#C6C6C6" |
| bgcolor="#D7D7D7" |
| bgcolor="#D8D8D8" |
| bgcolor="#D9D9D9" |
| bgcolor="#BABABA" |
| bgcolor="#E6E6E6" |
| colspan="3" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| bgcolor="#BFBFBF" |
| bgcolor="#C4C4C4" |
| bgcolor="#909090" |
| colspan="2" bgcolor="#9E9E9E" |
| bgcolor="#AAAAAA" |
| bgcolor="#B6B6B6" |
| bgcolor="#C8C8C8" |
| bgcolor="#C2C2C2" |
| bgcolor="#BEBEBE" |
| bgcolor="#D4D4D4" |
| bgcolor="#D5D5D5" |
| bgcolor="#CCCCCC" |
| bgcolor="#919191" |
| bgcolor="#6F6F6F" |
| bgcolor="#8E8E8E" |
| bgcolor="#C8C8C8" |
| bgcolor="#DDDDDD" |
| bgcolor="#DFDFDF" |
| bgcolor="#BEBEBE" |
| bgcolor="#AFAFAF" |
| bgcolor="#9A9A9A" |
| bgcolor="#A8A8A8" |
| bgcolor="#8F8F8F" |
| bgcolor="#747474" |
| bgcolor="#C0C0C0" |
| bgcolor="#D6D6D6" |
| bgcolor="#DADADA" |
| bgcolor="#D7D7D7" |
| bgcolor="#C7C7C7" |
| bgcolor="#DCDCDC" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#E9E9E9" |
| bgcolor="#C5C5C5" |
| bgcolor="#ACACAC" |
| bgcolor="#A3A3A3" |
| bgcolor="#949494" |
| bgcolor="#919191" |
| bgcolor="#AAAAAA" |
| bgcolor="#BBBBBB" |
| bgcolor="#C7C7C7" |
| bgcolor="#BFBFBF" |
| bgcolor="#C0C0C0" |
| bgcolor="#D2D2D2" |
| bgcolor="#C7C7C7" |
| bgcolor="#A0A0A0" |
| bgcolor="#7C7C7C" |
| bgcolor="#5A5A5A" |
| bgcolor="#898989" |
| bgcolor="#BABABA" |
| bgcolor="#CECECE" |
| bgcolor="#D5D5D5" |
| bgcolor="#B2B2B2" |
| bgcolor="#ABABAB" |
| bgcolor="#959595" |
| bgcolor="#A5A5A5" |
| bgcolor="#898989" |
| bgcolor="#6A6A6A" |
| bgcolor="#BABABA" |
| bgcolor="#D5D5D5" |
| bgcolor="#DDDDDD" |
| bgcolor="#D3D3D3" |
| bgcolor="#CDCDCD" |
| bgcolor="#D0D0D0" |
| bgcolor="#F1F1F1" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#F7F7F7" |
| bgcolor="#D9D9D9" |
| bgcolor="#A7A7A7" |
| bgcolor="#B1B1B1" |
| bgcolor="#9D9D9D" |
| bgcolor="#8C8C8C" |
| bgcolor="#9A9A9A" |
| bgcolor="#A0A0A0" |
| bgcolor="#AAAAAA" |
| bgcolor="#CBCBCB" |
| bgcolor="#C3C3C3" |
| bgcolor="#B5B5B5" |
| bgcolor="#CDCDCD" |
| bgcolor="#BEBEBE" |
| bgcolor="#898989" |
| bgcolor="#858585" |
| bgcolor="#585858" |
| bgcolor="#7C7C7C" |
| bgcolor="#868686" |
| bgcolor="#9E9E9E" |
| bgcolor="#E1E1E1" |
| bgcolor="#B6B6B6" |
| bgcolor="#9F9F9F" |
| bgcolor="#969696" |
| bgcolor="#9D9D9D" |
| bgcolor="#7D7D7D" |
| bgcolor="#9A9A9A" |
| bgcolor="#BBBBBB" |
| colspan="2" bgcolor="#D4D4D4" |
| bgcolor="#D8D8D8" |
| bgcolor="#D3D3D3" |
| bgcolor="#AEAEAE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#DADADA" |
| bgcolor="#9E9E9E" |
| bgcolor="#9D9D9D" |
| bgcolor="#8D8D8D" |
| colspan="2" bgcolor="#8E8E8E" |
| bgcolor="#A3A3A3" |
| bgcolor="#999999" |
| bgcolor="#C2C2C2" |
| bgcolor="#BEBEBE" |
| bgcolor="#B1B1B1" |
| bgcolor="#E0E0E0" |
| bgcolor="#C4C4C4" |
| bgcolor="#C2C2C2" |
| bgcolor="#8D8D8D" |
| bgcolor="#6C6C6C" |
| bgcolor="#7E7E7E" |
| bgcolor="#B3B3B3" |
| bgcolor="#ADADAD" |
| bgcolor="#E7E7E7" |
| bgcolor="#B7B7B7" |
| bgcolor="#9E9E9E" |
| bgcolor="#818181" |
| bgcolor="#8A8A8A" |
| bgcolor="#7D7D7D" |
| bgcolor="#999999" |
| bgcolor="#B9B9B9" |
| bgcolor="#D8D8D8" |
| bgcolor="#DEDEDE" |
| bgcolor="#D8D8D8" |
| bgcolor="#ABABAB" |
| bgcolor="#949494" |
| bgcolor="#F7F7F7" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#D1D1D1" |
| bgcolor="#999999" |
| bgcolor="#949494" |
| bgcolor="#828282" |
| colspan="2" bgcolor="#8E8E8E" |
| bgcolor="#A7A7A7" |
| bgcolor="#888888" |
| bgcolor="#AFAFAF" |
| bgcolor="#B1B1B1" |
| bgcolor="#A6A6A6" |
| bgcolor="#DADADA" |
| bgcolor="#A7A7A7" |
| bgcolor="#9A9A9A" |
| bgcolor="#777777" |
| bgcolor="#7A7A7A" |
| bgcolor="#7F7F7F" |
| colspan="2" bgcolor="#ABABAB" |
| bgcolor="#D9D9D9" |
| bgcolor="#BFBFBF" |
| bgcolor="#A1A1A1" |
| bgcolor="#777777" |
| bgcolor="#898989" |
| bgcolor="#909090" |
| bgcolor="#9C9C9C" |
| bgcolor="#B3B3B3" |
| bgcolor="#D0D0D0" |
| bgcolor="#D6D6D6" |
| bgcolor="#C0C0C0" |
| bgcolor="#8F8F8F" |
| bgcolor="#9F9F9F" |
| bgcolor="#EFEFEF" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#E7E7E7" |
| bgcolor="#C2C2C2" |
| bgcolor="#999999" |
| bgcolor="#9B9B9B" |
| bgcolor="#868686" |
| bgcolor="#8D8D8D" |
| bgcolor="#9A9A9A" |
| bgcolor="#A8A8A8" |
| bgcolor="#8A8A8A" |
| colspan="2" bgcolor="#9A9A9A" |
| bgcolor="#9C9C9C" |
| bgcolor="#BBBBBB" |
| bgcolor="#838383" |
| bgcolor="#8A8A8A" |
| bgcolor="#949494" |
| bgcolor="#A2A2A2" |
| bgcolor="#9E9E9E" |
| bgcolor="#9C9C9C" |
| bgcolor="#BCBCBC" |
| bgcolor="#C1C1C1" |
| bgcolor="#AFAFAF" |
| bgcolor="#898989" |
| bgcolor="#6E6E6E" |
| bgcolor="#909090" |
| bgcolor="#989898" |
| bgcolor="#868686" |
| bgcolor="#959595" |
| bgcolor="#ABABAB" |
| bgcolor="#A9A9A9" |
| bgcolor="#A4A4A4" |
| bgcolor="#9A9A9A" |
| bgcolor="#D7D7D7" |
| bgcolor="#F2F2F2" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#E3E3E3" |
| bgcolor="#BDBDBD" |
| bgcolor="#929292" |
| bgcolor="#9F9F9F" |
| bgcolor="#8F8F8F" |
| bgcolor="#909090" |
| bgcolor="#9C9C9C" |
| bgcolor="#A0A0A0" |
| bgcolor="#9D9D9D" |
| bgcolor="#8F8F8F" |
| bgcolor="#858585" |
| bgcolor="#9F9F9F" |
| bgcolor="#B5B5B5" |
| bgcolor="#9D9D9D" |
| bgcolor="#949494" |
| bgcolor="#8E8E8E" |
| bgcolor="#939393" |
| bgcolor="#949494" |
| bgcolor="#A9A9A9" |
| bgcolor="#CCCCCC" |
| bgcolor="#B6B6B6" |
| bgcolor="#999999" |
| bgcolor="#808080" |
| bgcolor="#838383" |
| bgcolor="#ACACAC" |
| bgcolor="#A5A5A5" |
| bgcolor="#7E7E7E" |
| bgcolor="#969696" |
| bgcolor="#ADADAD" |
| bgcolor="#A9A9A9" |
| bgcolor="#AEAEAE" |
| bgcolor="#B3B3B3" |
| bgcolor="#FCFCFC" |
| bgcolor="#F7F7F7" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FBFBFB" |
| bgcolor="#F1F1F1" |
| bgcolor="#C7C7C7" |
| bgcolor="#8C8C8C" |
| bgcolor="#A2A2A2" |
| bgcolor="#A0A0A0" |
| bgcolor="#969696" |
| bgcolor="#8F8F8F" |
| bgcolor="#949494" |
| bgcolor="#A7A7A7" |
| bgcolor="#909090" |
| bgcolor="#838383" |
| bgcolor="#B0B0B0" |
| bgcolor="#D1D1D1" |
| bgcolor="#D7D7D7" |
| bgcolor="#BCBCBC" |
| bgcolor="#919191" |
| bgcolor="#9C9C9C" |
| bgcolor="#A0A0A0" |
| bgcolor="#E2E2E2" |
| bgcolor="#DCDCDC" |
| bgcolor="#DBDBDB" |
| bgcolor="#C8C8C8" |
| bgcolor="#999999" |
| bgcolor="#ADADAD" |
| bgcolor="#C9C9C9" |
| bgcolor="#B3B3B3" |
| bgcolor="#8B8B8B" |
| bgcolor="#B6B6B6" |
| bgcolor="#D2D2D2" |
| bgcolor="#D5D5D5" |
| bgcolor="#D1D1D1" |
| bgcolor="#BEBEBE" |
| bgcolor="#F2F2F2" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FDFDFD" |
| bgcolor="#D7D7D7" |
| bgcolor="#979797" |
| bgcolor="#BBBBBB" |
| bgcolor="#BDBDBD" |
| bgcolor="#9A9A9A" |
| bgcolor="#8A8A8A" |
| bgcolor="#8C8C8C" |
| colspan="2" bgcolor="#939393" |
| bgcolor="#9A9A9A" |
| bgcolor="#C3C3C3" |
| bgcolor="#E3E3E3" |
| bgcolor="#D7D7D7" |
| bgcolor="#BCBCBC" |
| bgcolor="#9C9C9C" |
| bgcolor="#9F9F9F" |
| bgcolor="#A6A6A6" |
| bgcolor="#DDDDDD" |
| bgcolor="#C3C3C3" |
| bgcolor="#D0D0D0" |
| bgcolor="#CBCBCB" |
| bgcolor="#B5B5B5" |
| bgcolor="#C5C5C5" |
| bgcolor="#C7C7C7" |
| bgcolor="#ACACAC" |
| bgcolor="#909090" |
| bgcolor="#C2C2C2" |
| bgcolor="#D5D5D5" |
| bgcolor="#DFDFDF" |
| bgcolor="#D8D8D8" |
| bgcolor="#BEBEBE" |
| bgcolor="#E2E2E2" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#F7F7F7" |
| bgcolor="#FDFDFD" |
| bgcolor="#E1E1E1" |
| bgcolor="#AAAAAA" |
| bgcolor="#DCDCDC" |
| bgcolor="#D8D8D8" |
| bgcolor="#9A9A9A" |
| bgcolor="#909090" |
| bgcolor="#8A8A8A" |
| bgcolor="#767676" |
| bgcolor="#949494" |
| bgcolor="#B2B2B2" |
| bgcolor="#CDCDCD" |
| bgcolor="#E0E0E0" |
| bgcolor="#A8A8A8" |
| bgcolor="#A3A3A3" |
| bgcolor="#A4A4A4" |
| bgcolor="#949494" |
| bgcolor="#B4B4B4" |
| bgcolor="#D8D8D8" |
| bgcolor="#E2E2E2" |
| bgcolor="#E1E1E1" |
| bgcolor="#D7D7D7" |
| bgcolor="#D6D6D6" |
| bgcolor="#DCDCDC" |
| bgcolor="#CACACA" |
| bgcolor="#B0B0B0" |
| bgcolor="#9C9C9C" |
| bgcolor="#CACACA" |
| bgcolor="#CDCDCD" |
| bgcolor="#D7D7D7" |
| bgcolor="#C4C4C4" |
| bgcolor="#BFBFBF" |
| bgcolor="#E2E2E2" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
|-
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#DCDCDC" |
| bgcolor="#C2C2C2" |
| bgcolor="#D9D9D9" |
| bgcolor="#CCCCCC" |
| bgcolor="#A5A5A5" |
| bgcolor="#858585" |
| bgcolor="#8E8E8E" |
| bgcolor="#7A7A7A" |
| bgcolor="#979797" |
| bgcolor="#D6D6D6" |
| bgcolor="#CDCDCD" |
| bgcolor="#E5E5E5" |
| bgcolor="#D6D6D6" |
| bgcolor="#D9D9D9" |
| bgcolor="#D8D8D8" |
| bgcolor="#D7D7D7" |
| bgcolor="#D5D5D5" |
| bgcolor="#D4D4D4" |
| bgcolor="#D6D6D6" |
| bgcolor="#D9D9D9" |
| bgcolor="#DBDBDB" |
| bgcolor="#E1E1E1" |
| bgcolor="#DADADA" |
| bgcolor="#AAAAAA" |
| bgcolor="#B4B4B4" |
| bgcolor="#A2A2A2" |
| bgcolor="#CDCDCD" |
| bgcolor="#D7D7D7" |
| bgcolor="#D4D4D4" |
| bgcolor="#C3C3C3" |
| bgcolor="#B9B9B9" |
| bgcolor="#F5F5F5" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#DADADA" |
| bgcolor="#C3C3C3" |
| bgcolor="#DCDCDC" |
| bgcolor="#CECECE" |
| bgcolor="#A5A5A5" |
| bgcolor="#898989" |
| bgcolor="#9C9C9C" |
| bgcolor="#8D8D8D" |
| bgcolor="#ACACAC" |
| bgcolor="#DADADA" |
| bgcolor="#D5D5D5" |
| bgcolor="#E6E6E6" |
| bgcolor="#D9D9D9" |
| colspan="2" bgcolor="#DFDFDF" |
| bgcolor="#DEDEDE" |
| colspan="3" bgcolor="#DDDDDD" |
| bgcolor="#DFDFDF" |
| bgcolor="#E0E0E0" |
| bgcolor="#DADADA" |
| bgcolor="#DCDCDC" |
| bgcolor="#AAAAAA" |
| bgcolor="#B7B7B7" |
| bgcolor="#A0A0A0" |
| bgcolor="#CCCCCC" |
| bgcolor="#D1D1D1" |
| bgcolor="#D3D3D3" |
| bgcolor="#C4C4C4" |
| bgcolor="#BFBFBF" |
| bgcolor="#F7F7F7" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#D7D7D7" |
| bgcolor="#C2C2C2" |
| bgcolor="#DEDEDE" |
| bgcolor="#D3D3D3" |
| bgcolor="#ACACAC" |
| bgcolor="#919191" |
| bgcolor="#AEAEAE" |
| bgcolor="#A5A5A5" |
| bgcolor="#C6C6C6" |
| bgcolor="#DADADA" |
| bgcolor="#DCDCDC" |
| bgcolor="#E4E4E4" |
| bgcolor="#DBDBDB" |
| colspan="3" bgcolor="#DEDEDE" |
| colspan="2" bgcolor="#DFDFDF" |
| colspan="2" bgcolor="#DEDEDE" |
| bgcolor="#DDDDDD" |
| bgcolor="#D6D6D6" |
| bgcolor="#E3E3E3" |
| bgcolor="#B0B0B0" |
| bgcolor="#C4C4C4" |
| bgcolor="#A3A3A3" |
| bgcolor="#CDCDCD" |
| bgcolor="#CBCBCB" |
| bgcolor="#D5D5D5" |
| bgcolor="#C5C5C5" |
| bgcolor="#C8C8C8" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#D5D5D5" |
| bgcolor="#BEBEBE" |
| bgcolor="#DEDEDE" |
| bgcolor="#DBDBDB" |
| bgcolor="#BBBBBB" |
| bgcolor="#9F9F9F" |
| bgcolor="#BCBCBC" |
| bgcolor="#B8B8B8" |
| bgcolor="#D8D8D8" |
| bgcolor="#D6D6D6" |
| bgcolor="#DDDDDD" |
| bgcolor="#DEDEDE" |
| colspan="2" bgcolor="#DBDBDB" |
| bgcolor="#DCDCDC" |
| bgcolor="#DDDDDD" |
| bgcolor="#DEDEDE" |
| bgcolor="#DFDFDF" |
| bgcolor="#DEDEDE" |
| bgcolor="#DBDBDB" |
| bgcolor="#D8D8D8" |
| bgcolor="#DADADA" |
| bgcolor="#E8E8E8" |
| bgcolor="#BDBDBD" |
| bgcolor="#D9D9D9" |
| bgcolor="#ACACAC" |
| bgcolor="#CFCFCF" |
| bgcolor="#CACACA" |
| bgcolor="#D8D8D8" |
| bgcolor="#C5C5C5" |
| bgcolor="#D3D3D3" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#D4D4D4" |
| bgcolor="#BABABA" |
| bgcolor="#DCDCDC" |
| bgcolor="#E1E1E1" |
| bgcolor="#C8C8C8" |
| bgcolor="#B1B1B1" |
| bgcolor="#C1C1C1" |
| bgcolor="#C2C2C2" |
| bgcolor="#DEDEDE" |
| bgcolor="#D3D3D3" |
| colspan="2" bgcolor="#DCDCDC" |
| bgcolor="#DDDDDD" |
| colspan="3" bgcolor="#E0E0E0" |
| bgcolor="#E2E2E2" |
| bgcolor="#E4E4E4" |
| bgcolor="#E2E2E2" |
| bgcolor="#DEDEDE" |
| bgcolor="#DADADA" |
| bgcolor="#DEDEDE" |
| bgcolor="#DFDFDF" |
| bgcolor="#C6C6C6" |
| bgcolor="#EBEBEB" |
| bgcolor="#B7B7B7" |
| bgcolor="#CBCBCB" |
| bgcolor="#CDCDCD" |
| bgcolor="#D8D8D8" |
| bgcolor="#C4C4C4" |
| bgcolor="#DEDEDE" |
| bgcolor="#FDFDFD" |
| colspan="3" bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#D4D4D4" |
| bgcolor="#BABABA" |
| bgcolor="#DBDBDB" |
| bgcolor="#E0E0E0" |
| bgcolor="#C6C6C6" |
| bgcolor="#BEBEBE" |
| bgcolor="#B7B7B7" |
| bgcolor="#C0C0C0" |
| bgcolor="#DADADA" |
| bgcolor="#D7D7D7" |
| bgcolor="#DBDBDB" |
| bgcolor="#DDDDDD" |
| bgcolor="#E0E0E0" |
| bgcolor="#E2E2E2" |
| bgcolor="#E0E0E0" |
| bgcolor="#DFDFDF" |
| bgcolor="#E1E1E1" |
| bgcolor="#E4E4E4" |
| bgcolor="#E3E3E3" |
| bgcolor="#DEDEDE" |
| bgcolor="#D9D9D9" |
| bgcolor="#DCDCDC" |
| bgcolor="#C4C4C4" |
| bgcolor="#C5C5C5" |
| bgcolor="#F5F5F5" |
| colspan="2" bgcolor="#BFBFBF" |
| bgcolor="#D2D2D2" |
| bgcolor="#D5D5D5" |
| bgcolor="#C1C1C1" |
| bgcolor="#E6E6E6" |
| colspan="2" bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#D5D5D5" |
| bgcolor="#BFBFBF" |
| bgcolor="#DDDDDD" |
| bgcolor="#D8D8D8" |
| bgcolor="#B5B5B5" |
| bgcolor="#C0C0C0" |
| bgcolor="#A1A1A1" |
| bgcolor="#B4B4B4" |
| bgcolor="#D0D0D0" |
| bgcolor="#DDDDDD" |
| bgcolor="#D8D8D8" |
| bgcolor="#DFDFDF" |
| colspan="2" bgcolor="#E0E0E0" |
| bgcolor="#DDDDDD" |
| bgcolor="#DADADA" |
| bgcolor="#DCDCDC" |
| colspan="2" bgcolor="#DFDFDF" |
| bgcolor="#DADADA" |
| bgcolor="#D5D5D5" |
| bgcolor="#D8D8D8" |
| bgcolor="#A3A3A3" |
| bgcolor="#BFBFBF" |
| bgcolor="#FAFAFA" |
| bgcolor="#C6C6C6" |
| bgcolor="#B3B3B3" |
| bgcolor="#DADADA" |
| bgcolor="#D3D3D3" |
| bgcolor="#BDBDBD" |
| bgcolor="#EBEBEB" |
| bgcolor="#FDFDFD" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FDFDFD" |
| bgcolor="#D6D6D6" |
| bgcolor="#C4C4C4" |
| bgcolor="#E0E0E0" |
| bgcolor="#D0D0D0" |
| bgcolor="#A4A4A4" |
| bgcolor="#BBBBBB" |
| bgcolor="#8E8E8E" |
| bgcolor="#A8A8A8" |
| bgcolor="#C6C6C6" |
| bgcolor="#E0E0E0" |
| bgcolor="#D5D5D5" |
| colspan="2" bgcolor="#DEDEDE" |
| bgcolor="#E1E1E1" |
| bgcolor="#DDDDDD" |
| bgcolor="#DADADA" |
| bgcolor="#DBDBDB" |
| colspan="2" bgcolor="#DEDEDE" |
| bgcolor="#DADADA" |
| bgcolor="#D5D5D5" |
| bgcolor="#D4D4D4" |
| bgcolor="#8E8E8E" |
| bgcolor="#BBBBBB" |
| bgcolor="#FCFCFC" |
| bgcolor="#CBCBCB" |
| bgcolor="#ADADAD" |
| bgcolor="#E1E1E1" |
| bgcolor="#D3D3D3" |
| bgcolor="#BBBBBB" |
| bgcolor="#EEEEEE" |
| bgcolor="#FCFCFC" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#BCBCBC" |
| bgcolor="#CFCFCF" |
| bgcolor="#E0E0E0" |
| bgcolor="#D4D4D4" |
| bgcolor="#ACACAC" |
| bgcolor="#C1C1C1" |
| bgcolor="#8A8A8A" |
| bgcolor="#939393" |
| bgcolor="#CACACA" |
| colspan="2" bgcolor="#DADADA" |
| colspan="2" bgcolor="#E3E3E3" |
| bgcolor="#E4E4E4" |
| bgcolor="#E1E1E1" |
| bgcolor="#DCDCDC" |
| bgcolor="#D8D8D8" |
| colspan="2" bgcolor="#D6D6D6" |
| bgcolor="#D7D7D7" |
| bgcolor="#D8D8D8" |
| bgcolor="#CCCCCC" |
| bgcolor="#AEAEAE" |
| bgcolor="#C7C7C7" |
| bgcolor="#FFFFFF" |
| bgcolor="#ACACAC" |
| bgcolor="#D3D3D3" |
| bgcolor="#D4D4D4" |
| bgcolor="#D9D9D9" |
| bgcolor="#D3D3D3" |
| bgcolor="#EEEEEE" |
| bgcolor="#FCFCFC" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F4F4F4" |
| bgcolor="#C1C1C1" |
| bgcolor="#D4D4D4" |
| bgcolor="#E2E2E2" |
| bgcolor="#D7D7D7" |
| bgcolor="#B4B4B4" |
| bgcolor="#BBBBBB" |
| bgcolor="#A3A3A3" |
| bgcolor="#ABABAB" |
| bgcolor="#CBCBCB" |
| bgcolor="#D8D8D8" |
| bgcolor="#DDDDDD" |
| bgcolor="#E2E2E2" |
| colspan="2" bgcolor="#E0E0E0" |
| bgcolor="#DFDFDF" |
| bgcolor="#DEDEDE" |
| bgcolor="#DBDBDB" |
| bgcolor="#D8D8D8" |
| colspan="2" bgcolor="#D6D6D6" |
| bgcolor="#D7D7D7" |
| bgcolor="#DDDDDD" |
| bgcolor="#B9B9B9" |
| bgcolor="#CFCFCF" |
| bgcolor="#FCFCFC" |
| bgcolor="#B7B7B7" |
| bgcolor="#D6D6D6" |
| bgcolor="#DADADA" |
| bgcolor="#DBDBDB" |
| bgcolor="#D4D4D4" |
| bgcolor="#EFEFEF" |
| colspan="2" bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#E9E9E9" |
| bgcolor="#C8C8C8" |
| bgcolor="#DADADA" |
| bgcolor="#E1E1E1" |
| bgcolor="#D8D8D8" |
| bgcolor="#BCBCBC" |
| bgcolor="#AFAFAF" |
| bgcolor="#BCBCBC" |
| bgcolor="#C4C4C4" |
| bgcolor="#CACACA" |
| bgcolor="#D8D8D8" |
| bgcolor="#E0E0E0" |
| bgcolor="#DFDFDF" |
| bgcolor="#DEDEDE" |
| bgcolor="#DBDBDB" |
| bgcolor="#DEDEDE" |
| bgcolor="#E0E0E0" |
| bgcolor="#DFDFDF" |
| bgcolor="#DBDBDB" |
| colspan="2" bgcolor="#D7D7D7" |
| bgcolor="#D8D8D8" |
| bgcolor="#DDDDDD" |
| bgcolor="#B3B3B3" |
| bgcolor="#C8C8C8" |
| bgcolor="#E8E8E8" |
| bgcolor="#C2C2C2" |
| bgcolor="#DADADA" |
| bgcolor="#E2E2E2" |
| bgcolor="#DEDEDE" |
| bgcolor="#D6D6D6" |
| bgcolor="#F0F0F0" |
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#DBDBDB" |
| bgcolor="#CDCDCD" |
| bgcolor="#DEDEDE" |
| bgcolor="#DFDFDF" |
| bgcolor="#D6D6D6" |
| bgcolor="#BFBFBF" |
| bgcolor="#A5A5A5" |
| bgcolor="#C8C8C8" |
| bgcolor="#CECECE" |
| bgcolor="#CBCBCB" |
| bgcolor="#DEDEDE" |
| bgcolor="#E2E2E2" |
| bgcolor="#DADADA" |
| bgcolor="#E1E1E1" |
| bgcolor="#DBDBDB" |
| bgcolor="#DFDFDF" |
| bgcolor="#E3E3E3" |
| bgcolor="#E2E2E2" |
| bgcolor="#DDDDDD" |
| bgcolor="#DADADA" |
| bgcolor="#DBDBDB" |
| bgcolor="#DDDDDD" |
| bgcolor="#D3D3D3" |
| bgcolor="#A9A9A9" |
| bgcolor="#BFBFBF" |
| bgcolor="#D4D4D4" |
| bgcolor="#CBCBCB" |
| bgcolor="#DBDBDB" |
| bgcolor="#E2E2E2" |
| bgcolor="#DBDBDB" |
| bgcolor="#D8D8D8" |
| bgcolor="#F2F2F2" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#D3D3D3" |
| bgcolor="#D5D5D5" |
| bgcolor="#E1E1E1" |
| bgcolor="#DEDEDE" |
| bgcolor="#D3D3D3" |
| bgcolor="#BDBDBD" |
| bgcolor="#A8A8A8" |
| bgcolor="#CDCDCD" |
| colspan="2" bgcolor="#D1D1D1" |
| bgcolor="#E6E6E6" |
| bgcolor="#E2E2E2" |
| bgcolor="#D3D3D3" |
| bgcolor="#E2E2E2" |
| bgcolor="#DEDEDE" |
| bgcolor="#E1E1E1" |
| bgcolor="#E3E3E3" |
| bgcolor="#E2E2E2" |
| bgcolor="#DFDFDF" |
| colspan="2" bgcolor="#DCDCDC" |
| bgcolor="#DEDEDE" |
| bgcolor="#C8C8C8" |
| bgcolor="#A6A6A6" |
| bgcolor="#BABABA" |
| bgcolor="#C9C9C9" |
| bgcolor="#D3D3D3" |
| bgcolor="#DCDCDC" |
| bgcolor="#DDDDDD" |
| bgcolor="#D5D5D5" |
| bgcolor="#DBDBDB" |
| bgcolor="#F4F4F4" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#CFCFCF" |
| bgcolor="#DBDBDB" |
| bgcolor="#E3E3E3" |
| bgcolor="#DCDCDC" |
| bgcolor="#CECECE" |
| bgcolor="#B3B3B3" |
| bgcolor="#AEAEAE" |
| bgcolor="#CFCFCF" |
| bgcolor="#D6D6D6" |
| bgcolor="#D9D9D9" |
| bgcolor="#E9E9E9" |
| bgcolor="#E0E0E0" |
| bgcolor="#D2D2D2" |
| colspan="3" bgcolor="#E1E1E1" |
| colspan="2" bgcolor="#E2E2E2" |
| bgcolor="#DFDFDF" |
| bgcolor="#DADADA" |
| bgcolor="#D5D5D5" |
| bgcolor="#D1D1D1" |
| bgcolor="#ADADAD" |
| bgcolor="#9A9A9A" |
| bgcolor="#ACACAC" |
| bgcolor="#BFBFBF" |
| bgcolor="#D4D4D4" |
| bgcolor="#E0E0E0" |
| bgcolor="#DADADA" |
| bgcolor="#DBDBDB" |
| bgcolor="#DDDDDD" |
| bgcolor="#F6F6F6" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#CBCBCB" |
| bgcolor="#DBDBDB" |
| bgcolor="#DEDEDE" |
| bgcolor="#D7D7D7" |
| bgcolor="#C4C4C4" |
| bgcolor="#A3A3A3" |
| bgcolor="#A7A7A7" |
| bgcolor="#CDCDCD" |
| bgcolor="#DCDCDC" |
| bgcolor="#DADADA" |
| bgcolor="#E1E1E1" |
| bgcolor="#DEDEDE" |
| bgcolor="#D8D8D8" |
| bgcolor="#E1E1E1" |
| colspan="4" bgcolor="#E0E0E0" |
| bgcolor="#DDDDDD" |
| bgcolor="#D3D3D3" |
| bgcolor="#C5C5C5" |
| bgcolor="#BABABA" |
| bgcolor="#A1A1A1" |
| bgcolor="#9B9B9B" |
| bgcolor="#A7A7A7" |
| bgcolor="#BCBCBC" |
| bgcolor="#D0D0D0" |
| bgcolor="#E1E1E1" |
| bgcolor="#D5D5D5" |
| bgcolor="#E1E1E1" |
| bgcolor="#DFDFDF" |
| bgcolor="#F8F8F8" |
| colspan="4" bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#C6C6C6" |
| bgcolor="#D7D7D7" |
| bgcolor="#D8D8D8" |
| bgcolor="#D0D0D0" |
| bgcolor="#BCBCBC" |
| bgcolor="#959595" |
| bgcolor="#989898" |
| bgcolor="#C6C6C6" |
| bgcolor="#DEDEDE" |
| colspan="2" bgcolor="#D6D6D6" |
| bgcolor="#DDDDDD" |
| bgcolor="#DFDFDF" |
| bgcolor="#E1E1E1" |
| bgcolor="#DFDFDF" |
| colspan="2" bgcolor="#DEDEDE" |
| bgcolor="#E0E0E0" |
| bgcolor="#DCDCDC" |
| bgcolor="#CDCDCD" |
| bgcolor="#B8B8B8" |
| bgcolor="#A7A7A7" |
| bgcolor="#B2B2B2" |
| bgcolor="#B1B1B1" |
| bgcolor="#B3B3B3" |
| bgcolor="#C4C4C4" |
| bgcolor="#CECECE" |
| bgcolor="#DFDFDF" |
| bgcolor="#CBCBCB" |
| bgcolor="#DCDCDC" |
| bgcolor="#E0E0E0" |
| bgcolor="#F9F9F9" |
| colspan="4" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#C4C4C4" |
| colspan="2" bgcolor="#D1D1D1" |
| bgcolor="#D3D3D3" |
| bgcolor="#A9A9A9" |
| bgcolor="#9D9D9D" |
| bgcolor="#9B9B9B" |
| bgcolor="#B3B3B3" |
| bgcolor="#D5D5D5" |
| bgcolor="#E7E7E7" |
| bgcolor="#E2E2E2" |
| bgcolor="#D5D5D5" |
| bgcolor="#D7D7D7" |
| bgcolor="#E3E3E3" |
| bgcolor="#DEDEDE" |
| bgcolor="#E2E2E2" |
| bgcolor="#E3E3E3" |
| bgcolor="#D7D7D7" |
| bgcolor="#BEBEBE" |
| bgcolor="#ABABAB" |
| bgcolor="#B2B2B2" |
| bgcolor="#C4C4C4" |
| bgcolor="#D9D9D9" |
| bgcolor="#C6C6C6" |
| bgcolor="#B2B2B2" |
| bgcolor="#C6C6C6" |
| bgcolor="#CBCBCB" |
| bgcolor="#DBDBDB" |
| bgcolor="#D3D3D3" |
| bgcolor="#DBDBDB" |
| bgcolor="#E8E8E8" |
| bgcolor="#F7F7F7" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#CDCDCD" |
| bgcolor="#DADADA" |
| bgcolor="#DCDCDC" |
| bgcolor="#CFCFCF" |
| bgcolor="#9C9C9C" |
| bgcolor="#969696" |
| bgcolor="#9F9F9F" |
| bgcolor="#A4A4A4" |
| bgcolor="#B5B5B5" |
| bgcolor="#CDCDCD" |
| bgcolor="#DEDEDE" |
| bgcolor="#E1E1E1" |
| bgcolor="#DDDDDD" |
| bgcolor="#DBDBDB" |
| bgcolor="#DCDCDC" |
| bgcolor="#D8D8D8" |
| bgcolor="#CDCDCD" |
| bgcolor="#BABABA" |
| bgcolor="#ABABAB" |
| bgcolor="#B3B3B3" |
| bgcolor="#D3D3D3" |
| bgcolor="#F3F3F3" |
| bgcolor="#DCDCDC" |
| bgcolor="#D0D0D0" |
| bgcolor="#B5B5B5" |
| bgcolor="#CACACA" |
| bgcolor="#CDCDCD" |
| bgcolor="#DADADA" |
| colspan="2" bgcolor="#D9D9D9" |
| bgcolor="#EFEFEF" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#D3D3D3" |
| bgcolor="#DFDFDF" |
| bgcolor="#E9E9E9" |
| bgcolor="#CDCDCD" |
| bgcolor="#A6A6A6" |
| bgcolor="#9E9E9E" |
| bgcolor="#CCCCCC" |
| bgcolor="#B7B7B7" |
| bgcolor="#A3A3A3" |
| bgcolor="#A5A5A5" |
| bgcolor="#B7B7B7" |
| bgcolor="#CDCDCD" |
| bgcolor="#DDDDDD" |
| bgcolor="#E5E5E5" |
| bgcolor="#D5D5D5" |
| bgcolor="#CACACA" |
| bgcolor="#C2C2C2" |
| bgcolor="#CACACA" |
| bgcolor="#DDDDDD" |
| bgcolor="#E7E7E7" |
| bgcolor="#DDDDDD" |
| bgcolor="#CDCDCD" |
| bgcolor="#DADADA" |
| bgcolor="#D4D4D4" |
| bgcolor="#ABABAB" |
| bgcolor="#BEBEBE" |
| bgcolor="#C3C3C3" |
| bgcolor="#D0D0D0" |
| bgcolor="#D7D7D7" |
| bgcolor="#CECECE" |
| bgcolor="#FAFAFA" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#BEBEBE" |
| bgcolor="#C8C8C8" |
| bgcolor="#D7D7D7" |
| bgcolor="#B8B8B8" |
| bgcolor="#BEBEBE" |
| bgcolor="#A5A5A5" |
| bgcolor="#C2C2C2" |
| bgcolor="#CACACA" |
| bgcolor="#D3D3D3" |
| bgcolor="#D6D6D6" |
| bgcolor="#D1D1D1" |
| bgcolor="#C7C7C7" |
| bgcolor="#C2C2C2" |
| bgcolor="#C0C0C0" |
| bgcolor="#C9C9C9" |
| bgcolor="#D5D5D5" |
| bgcolor="#DEDEDE" |
| bgcolor="#DDDDDD" |
| bgcolor="#DBDBDB" |
| bgcolor="#DDDDDD" |
| bgcolor="#DEDEDE" |
| bgcolor="#DCDCDC" |
| bgcolor="#D4D4D4" |
| bgcolor="#CECECE" |
| bgcolor="#9F9F9F" |
| bgcolor="#B6B6B6" |
| bgcolor="#C2C2C2" |
| bgcolor="#D4D4D4" |
| bgcolor="#E0E0E0" |
| bgcolor="#D0D0D0" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#939393" |
| bgcolor="#969696" |
| bgcolor="#A0A0A0" |
| bgcolor="#8A8A8A" |
| bgcolor="#BFBFBF" |
| bgcolor="#8E8E8E" |
| bgcolor="#BDBDBD" |
| bgcolor="#D0D0D0" |
| bgcolor="#E1E1E1" |
| bgcolor="#E0E0E0" |
| bgcolor="#D3D3D3" |
| bgcolor="#C9C9C9" |
| bgcolor="#CACACA" |
| bgcolor="#D0D0D0" |
| bgcolor="#D2D2D2" |
| bgcolor="#DADADA" |
| bgcolor="#E0E0E0" |
| bgcolor="#DEDEDE" |
| bgcolor="#D8D8D8" |
| bgcolor="#D4D4D4" |
| bgcolor="#D1D1D1" |
| bgcolor="#CECECE" |
| bgcolor="#A7A7A7" |
| bgcolor="#A3A3A3" |
| bgcolor="#858585" |
| bgcolor="#A9A9A9" |
| bgcolor="#C0C0C0" |
| bgcolor="#DADADA" |
| bgcolor="#E2E2E2" |
| bgcolor="#D6D6D6" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#767676" |
| bgcolor="#727272" |
| bgcolor="#6F6F6F" |
| bgcolor="#696969" |
| bgcolor="#A4A4A4" |
| bgcolor="#6D6D6D" |
| bgcolor="#8D8D8D" |
| bgcolor="#A4A4A4" |
| bgcolor="#BEBEBE" |
| bgcolor="#CECECE" |
| bgcolor="#D2D2D2" |
| bgcolor="#D0D0D0" |
| bgcolor="#CACACA" |
| bgcolor="#C5C5C5" |
| bgcolor="#E5E5E5" |
| bgcolor="#D9D9D9" |
| bgcolor="#D3D3D3" |
| bgcolor="#DDDDDD" |
| bgcolor="#E1E1E1" |
| bgcolor="#CBCBCB" |
| bgcolor="#A0A0A0" |
| bgcolor="#7F7F7F" |
| bgcolor="#7E7E7E" |
| bgcolor="#787878" |
| bgcolor="#797979" |
| bgcolor="#A3A3A3" |
| bgcolor="#BDBDBD" |
| bgcolor="#DEDEDE" |
| bgcolor="#DFDFDF" |
| bgcolor="#E8E8E8" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FCFCFC" |
| colspan="3" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#E6E6E6" |
| bgcolor="#717171" |
| bgcolor="#707070" |
| bgcolor="#626262" |
| bgcolor="#6E6E6E" |
| bgcolor="#868686" |
| bgcolor="#5F5F5F" |
| bgcolor="#8C8C8C" |
| colspan="2" bgcolor="#8E8E8E" |
| bgcolor="#8F8F8F" |
| bgcolor="#9B9B9B" |
| bgcolor="#AEAEAE" |
| bgcolor="#BCBCBC" |
| bgcolor="#C1C1C1" |
| bgcolor="#C5C5C5" |
| bgcolor="#C0C0C0" |
| bgcolor="#BFBFBF" |
| bgcolor="#B7B7B7" |
| bgcolor="#9D9D9D" |
| bgcolor="#808080" |
| bgcolor="#7A7A7A" |
| bgcolor="#858585" |
| bgcolor="#808080" |
| bgcolor="#6E6E6E" |
| bgcolor="#808080" |
| bgcolor="#9A9A9A" |
| bgcolor="#A7A7A7" |
| bgcolor="#CDCDCD" |
| bgcolor="#CFCFCF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#CACACA" |
| bgcolor="#737373" |
| bgcolor="#797979" |
| bgcolor="#666666" |
| bgcolor="#808080" |
| bgcolor="#737373" |
| bgcolor="#616161" |
| bgcolor="#767676" |
| bgcolor="#858585" |
| bgcolor="#949494" |
| bgcolor="#9A9A9A" |
| colspan="2" bgcolor="#9B9B9B" |
| bgcolor="#939393" |
| bgcolor="#8A8A8A" |
| bgcolor="#818181" |
| bgcolor="#797979" |
| bgcolor="#7B7B7B" |
| bgcolor="#818181" |
| bgcolor="#777777" |
| bgcolor="#696969" |
| bgcolor="#777777" |
| bgcolor="#939393" |
| bgcolor="#7C7C7C" |
| bgcolor="#5C5C5C" |
| bgcolor="#6F6F6F" |
| bgcolor="#727272" |
| bgcolor="#6D6D6D" |
| bgcolor="#969696" |
| bgcolor="#9E9E9E" |
| bgcolor="#E8E8E8" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
|-
| bgcolor="#F9F9F9" |
| bgcolor="#B3B3B3" |
| bgcolor="#707070" |
| bgcolor="#909090" |
| bgcolor="#7C7C7C" |
| bgcolor="#888888" |
| bgcolor="#666666" |
| bgcolor="#646464" |
| bgcolor="#737373" |
| bgcolor="#808080" |
| bgcolor="#747474" |
| bgcolor="#8E8E8E" |
| bgcolor="#7B7B7B" |
| bgcolor="#979797" |
| bgcolor="#888888" |
| bgcolor="#919191" |
| bgcolor="#676767" |
| bgcolor="#464646" |
| bgcolor="#595959" |
| bgcolor="#8D8D8D" |
| bgcolor="#909090" |
| bgcolor="#6F6F6F" |
| bgcolor="#6A6A6A" |
| bgcolor="#808080" |
| bgcolor="#8D8D8D" |
| bgcolor="#696969" |
| bgcolor="#848484" |
| bgcolor="#818181" |
| bgcolor="#646464" |
| bgcolor="#707070" |
| bgcolor="#727272" |
| bgcolor="#EDEDED" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#C0C0C0" |
| bgcolor="#9E9E9E" |
| bgcolor="#B3B3B3" |
| bgcolor="#878787" |
| bgcolor="#8B8B8B" |
| bgcolor="#7B7B7B" |
| bgcolor="#646464" |
| bgcolor="#6B6B6B" |
| bgcolor="#727272" |
| bgcolor="#5D5D5D" |
| bgcolor="#767676" |
| bgcolor="#777777" |
| bgcolor="#A1A1A1" |
| bgcolor="#8B8B8B" |
| bgcolor="#7E7E7E" |
| bgcolor="#5E5E5E" |
| bgcolor="#515151" |
| bgcolor="#676767" |
| bgcolor="#898989" |
| bgcolor="#878787" |
| bgcolor="#777777" |
| bgcolor="#808080" |
| bgcolor="#939393" |
| bgcolor="#838383" |
| bgcolor="#757575" |
| bgcolor="#8C8C8C" |
| bgcolor="#828282" |
| bgcolor="#707070" |
| bgcolor="#6E6E6E" |
| bgcolor="#6B6B6B" |
| bgcolor="#C6C6C6" |
| bgcolor="#F4F4F4" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#F6F6F6" |
| bgcolor="#898989" |
| bgcolor="#5B5B5B" |
| bgcolor="#656565" |
| bgcolor="#5E5E5E" |
| bgcolor="#828282" |
| bgcolor="#979797" |
| bgcolor="#6F6F6F" |
| bgcolor="#7A7A7A" |
| bgcolor="#7E7E7E" |
| bgcolor="#646464" |
| bgcolor="#717171" |
| bgcolor="#777777" |
| bgcolor="#A2A2A2" |
| bgcolor="#8A8A8A" |
| bgcolor="#737373" |
| bgcolor="#4E4E4E" |
| bgcolor="#565656" |
| bgcolor="#6F6F6F" |
| bgcolor="#808080" |
| bgcolor="#787878" |
| bgcolor="#747474" |
| bgcolor="#7F7F7F" |
| bgcolor="#888888" |
| bgcolor="#8C8C8C" |
| bgcolor="#959595" |
| bgcolor="#979797" |
| bgcolor="#787878" |
| bgcolor="#767676" |
| colspan="2" bgcolor="#646464" |
| bgcolor="#959595" |
| bgcolor="#DFDFDF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#F2F2F2" |
| bgcolor="#9D9D9D" |
| bgcolor="#7D7D7D" |
| bgcolor="#6B6B6B" |
| bgcolor="#5F5F5F" |
| bgcolor="#686868" |
| bgcolor="#9A9A9A" |
| bgcolor="#9D9D9D" |
| colspan="2" bgcolor="#969696" |
| bgcolor="#808080" |
| bgcolor="#818181" |
| bgcolor="#767676" |
| bgcolor="#8A8A8A" |
| bgcolor="#7D7D7D" |
| bgcolor="#767676" |
| bgcolor="#525252" |
| bgcolor="#616161" |
| bgcolor="#848484" |
| bgcolor="#A0A0A0" |
| bgcolor="#A7A7A7" |
| bgcolor="#ADADAD" |
| bgcolor="#B7B7B7" |
| bgcolor="#B8B8B8" |
| bgcolor="#A8A8A8" |
| bgcolor="#B6B6B6" |
| bgcolor="#9A9A9A" |
| bgcolor="#656565" |
| bgcolor="#6B6B6B" |
| bgcolor="#555555" |
| bgcolor="#606060" |
| bgcolor="#737373" |
| bgcolor="#CCCCCC" |
| bgcolor="#F3F3F3" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#F5F5F5" |
| bgcolor="#D4D4D4" |
| bgcolor="#D1D1D1" |
| bgcolor="#C4C4C4" |
| bgcolor="#C0C0C0" |
| bgcolor="#929292" |
| bgcolor="#9F9F9F" |
| bgcolor="#B5B5B5" |
| bgcolor="#D4D4D4" |
| bgcolor="#C8C8C8" |
| bgcolor="#B7B7B7" |
| bgcolor="#BABABA" |
| bgcolor="#ACACAC" |
| bgcolor="#ABABAB" |
| bgcolor="#A7A7A7" |
| bgcolor="#B2B2B2" |
| bgcolor="#AAAAAA" |
| bgcolor="#A3A3A3" |
| bgcolor="#B3B3B3" |
| colspan="2" bgcolor="#CCCCCC" |
| bgcolor="#C0C0C0" |
| bgcolor="#B7B7B7" |
| bgcolor="#AFAFAF" |
| bgcolor="#A3A3A3" |
| bgcolor="#A8A8A8" |
| bgcolor="#7E7E7E" |
| bgcolor="#4C4C4C" |
| bgcolor="#545454" |
| bgcolor="#424242" |
| bgcolor="#545454" |
| bgcolor="#595959" |
| bgcolor="#C6C6C6" |
| bgcolor="#EEEEEE" |
| bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#E8E8E8" |
| bgcolor="#D7D7D7" |
| bgcolor="#CFCFCF" |
| bgcolor="#C7C7C7" |
| bgcolor="#D8D8D8" |
| bgcolor="#ADADAD" |
| bgcolor="#A7A7A7" |
| bgcolor="#BEBEBE" |
| bgcolor="#D3D3D3" |
| bgcolor="#BCBCBC" |
| bgcolor="#B0B0B0" |
| bgcolor="#BFBFBF" |
| bgcolor="#C0C0C0" |
| bgcolor="#BABABA" |
| bgcolor="#B8B8B8" |
| bgcolor="#C5C5C5" |
| bgcolor="#ABABAB" |
| bgcolor="#999999" |
| bgcolor="#A4A4A4" |
| bgcolor="#C2C2C2" |
| bgcolor="#CACACA" |
| bgcolor="#C2C2C2" |
| bgcolor="#BDBDBD" |
| bgcolor="#B9B9B9" |
| bgcolor="#A2A2A2" |
| bgcolor="#979797" |
| bgcolor="#7D7D7D" |
| bgcolor="#6C6C6C" |
| bgcolor="#717171" |
| bgcolor="#696969" |
| bgcolor="#777777" |
| bgcolor="#7A7A7A" |
| bgcolor="#D3D3D3" |
| bgcolor="#F1F1F1" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#DFDFDF" |
| bgcolor="#DBDBDB" |
| bgcolor="#D0D0D0" |
| bgcolor="#AEAEAE" |
| bgcolor="#9A9A9A" |
| bgcolor="#909090" |
| bgcolor="#AFAFAF" |
| bgcolor="#CFCFCF" |
| bgcolor="#C9C9C9" |
| bgcolor="#BCBCBC" |
| bgcolor="#BABABA" |
| bgcolor="#C7C7C7" |
| bgcolor="#CFCFCF" |
| bgcolor="#C9C9C9" |
| bgcolor="#C8C8C8" |
| bgcolor="#CDCDCD" |
| bgcolor="#BABABA" |
| bgcolor="#B0B0B0" |
| bgcolor="#BBBBBB" |
| bgcolor="#CECECE" |
| bgcolor="#CACACA" |
| bgcolor="#BFBFBF" |
| bgcolor="#B9B9B9" |
| bgcolor="#B4B4B4" |
| bgcolor="#BABABA" |
| bgcolor="#9B9B9B" |
| bgcolor="#9C9C9C" |
| bgcolor="#B7B7B7" |
| bgcolor="#B4B4B4" |
| bgcolor="#B9B9B9" |
| bgcolor="#BEBEBE" |
| bgcolor="#CBCBCB" |
| bgcolor="#EBEBEB" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#D9D9D9" |
| bgcolor="#C3C3C3" |
| bgcolor="#B5B5B5" |
| bgcolor="#A1A1A1" |
| bgcolor="#949494" |
| bgcolor="#B3B3B3" |
| bgcolor="#CFCFCF" |
| bgcolor="#BFBFBF" |
| bgcolor="#BBBBBB" |
| bgcolor="#C0C0C0" |
| bgcolor="#CACACA" |
| bgcolor="#CCCCCC" |
| bgcolor="#CBCBCB" |
| bgcolor="#C3C3C3" |
| bgcolor="#C4C4C4" |
| bgcolor="#C5C5C5" |
| bgcolor="#B3B3B3" |
| bgcolor="#BCBCBC" |
| bgcolor="#D4D4D4" |
| bgcolor="#E2E2E2" |
| bgcolor="#D9D9D9" |
| bgcolor="#D0D0D0" |
| bgcolor="#CCCCCC" |
| bgcolor="#C5C5C5" |
| bgcolor="#B2B2B2" |
| bgcolor="#848484" |
| bgcolor="#969696" |
| bgcolor="#CBCBCB" |
| bgcolor="#C3C3C3" |
| bgcolor="#D2D2D2" |
| bgcolor="#D1D1D1" |
| bgcolor="#E9E9E9" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#D4D4D4" |
| bgcolor="#C8C8C8" |
| bgcolor="#ADADAD" |
| bgcolor="#8D8D8D" |
| bgcolor="#A5A5A5" |
| bgcolor="#D7D7D7" |
| bgcolor="#DBDBDB" |
| bgcolor="#D8D8D8" |
| bgcolor="#D0D0D0" |
| bgcolor="#CFCFCF" |
| bgcolor="#CBCBCB" |
| bgcolor="#C9C9C9" |
| bgcolor="#CACACA" |
| bgcolor="#CFCFCF" |
| colspan="2" bgcolor="#D2D2D2" |
| bgcolor="#B9B9B9" |
| bgcolor="#BFBFBF" |
| bgcolor="#CFCFCF" |
| bgcolor="#D3D3D3" |
| bgcolor="#C9C9C9" |
| bgcolor="#C8C8C8" |
| bgcolor="#D0D0D0" |
| bgcolor="#D1D1D1" |
| bgcolor="#A8A8A8" |
| bgcolor="#9C9C9C" |
| bgcolor="#A5A5A5" |
| bgcolor="#929292" |
| bgcolor="#909090" |
| bgcolor="#9F9F9F" |
| bgcolor="#AEAEAE" |
| bgcolor="#E9E9E9" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#D1D1D1" |
| bgcolor="#C7C7C7" |
| bgcolor="#AFAFAF" |
| bgcolor="#909090" |
| bgcolor="#8D8D8D" |
| bgcolor="#BDBDBD" |
| bgcolor="#C6C6C6" |
| bgcolor="#CACACA" |
| bgcolor="#C5C5C5" |
| bgcolor="#BBBBBB" |
| bgcolor="#BABABA" |
| bgcolor="#C7C7C7" |
| bgcolor="#D1D1D1" |
| bgcolor="#CFCFCF" |
| bgcolor="#CBCBCB" |
| bgcolor="#CCCCCC" |
| bgcolor="#AFAFAF" |
| bgcolor="#B8B8B8" |
| bgcolor="#D0D0D0" |
| bgcolor="#DFDFDF" |
| bgcolor="#DADADA" |
| bgcolor="#D2D2D2" |
| bgcolor="#CACACA" |
| bgcolor="#BCBCBC" |
| bgcolor="#A8A8A8" |
| bgcolor="#949494" |
| bgcolor="#979797" |
| bgcolor="#9C9C9C" |
| bgcolor="#C2C2C2" |
| bgcolor="#D3D3D3" |
| bgcolor="#BEBEBE" |
| bgcolor="#DBDBDB" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#D6D6D6" |
| bgcolor="#C4C4C4" |
| bgcolor="#B0B0B0" |
| bgcolor="#9C9C9C" |
| bgcolor="#828282" |
| bgcolor="#ADADAD" |
| bgcolor="#ABABAB" |
| bgcolor="#A5A5A5" |
| bgcolor="#B7B7B7" |
| bgcolor="#BABABA" |
| bgcolor="#C9C9C9" |
| bgcolor="#D6D6D6" |
| bgcolor="#CDCDCD" |
| colspan="2" bgcolor="#BBBBBB" |
| bgcolor="#CBCBCB" |
| bgcolor="#C4C4C4" |
| bgcolor="#C2C2C2" |
| bgcolor="#CFCFCF" |
| bgcolor="#DADADA" |
| bgcolor="#D9D9D9" |
| bgcolor="#D7D7D7" |
| bgcolor="#CFCFCF" |
| bgcolor="#C0C0C0" |
| bgcolor="#999999" |
| bgcolor="#9E9E9E" |
| bgcolor="#ACACAC" |
| bgcolor="#B4B4B4" |
| bgcolor="#DDDDDD" |
| bgcolor="#E3E3E3" |
| bgcolor="#C4C4C4" |
| bgcolor="#EBEBEB" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#EAEAEA" |
| bgcolor="#C5C5C5" |
| bgcolor="#A8A8A8" |
| bgcolor="#979797" |
| bgcolor="#7E7E7E" |
| colspan="2" bgcolor="#B4B4B4" |
| bgcolor="#A3A3A3" |
| bgcolor="#BEBEBE" |
| bgcolor="#CACACA" |
| bgcolor="#D8D8D8" |
| bgcolor="#DBDBDB" |
| bgcolor="#CCCCCC" |
| bgcolor="#BABABA" |
| bgcolor="#B5B5B5" |
| bgcolor="#BBBBBB" |
| bgcolor="#B5B5B5" |
| bgcolor="#B0B0B0" |
| bgcolor="#B8B8B8" |
| colspan="2" bgcolor="#C1C1C1" |
| bgcolor="#C4C4C4" |
| bgcolor="#C3C3C3" |
| bgcolor="#B8B8B8" |
| bgcolor="#A0A0A0" |
| bgcolor="#B9B9B9" |
| bgcolor="#C9C9C9" |
| bgcolor="#C1C1C1" |
| bgcolor="#D9D9D9" |
| bgcolor="#D4D4D4" |
| bgcolor="#BFBFBF" |
| bgcolor="#FEFEFE" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#D5D5D5" |
| bgcolor="#B1B1B1" |
| bgcolor="#8F8F8F" |
| bgcolor="#797979" |
| bgcolor="#B9B9B9" |
| bgcolor="#CFCFCF" |
| bgcolor="#C6C6C6" |
| bgcolor="#C8C8C8" |
| bgcolor="#CBCBCB" |
| colspan="2" bgcolor="#C8C8C8" |
| bgcolor="#D3D3D3" |
| bgcolor="#D9D9D9" |
| bgcolor="#C4C4C4" |
| bgcolor="#A5A5A5" |
| bgcolor="#9B9B9B" |
| bgcolor="#A6A6A6" |
| bgcolor="#C2C2C2" |
| bgcolor="#D9D9D9" |
| bgcolor="#DDDDDD" |
| bgcolor="#DCDCDC" |
| bgcolor="#D8D8D8" |
| bgcolor="#CBCBCB" |
| bgcolor="#C5C5C5" |
| bgcolor="#CFCFCF" |
| bgcolor="#CECECE" |
| bgcolor="#C0C0C0" |
| bgcolor="#DBDBDB" |
| bgcolor="#D8D8D8" |
| bgcolor="#BEBEBE" |
| bgcolor="#F7F7F7" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#F0F0F0" |
| bgcolor="#DFDFDF" |
| bgcolor="#A2A2A2" |
| bgcolor="#8A8A8A" |
| bgcolor="#B1B1B1" |
| bgcolor="#CACACA" |
| bgcolor="#C2C2C2" |
| bgcolor="#B4B4B4" |
| bgcolor="#C0C0C0" |
| bgcolor="#C3C3C3" |
| bgcolor="#C0C0C0" |
| bgcolor="#D0D0D0" |
| bgcolor="#E3E3E3" |
| bgcolor="#D4D4D4" |
| bgcolor="#B2B2B2" |
| bgcolor="#767676" |
| bgcolor="#898989" |
| bgcolor="#B0B0B0" |
| bgcolor="#CECECE" |
| bgcolor="#D5D5D5" |
| colspan="2" bgcolor="#D9D9D9" |
| bgcolor="#D1D1D1" |
| bgcolor="#D7D7D7" |
| bgcolor="#D8D8D8" |
| bgcolor="#D9D9D9" |
| bgcolor="#CBCBCB" |
| bgcolor="#E0E0E0" |
| bgcolor="#DEDEDE" |
| bgcolor="#C5C5C5" |
| bgcolor="#F5F5F5" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#A9A9A9" |
| bgcolor="#9E9E9E" |
| bgcolor="#ADADAD" |
| bgcolor="#BCBCBC" |
| bgcolor="#A9A9A9" |
| bgcolor="#ABABAB" |
| bgcolor="#C3C3C3" |
| bgcolor="#D2D2D2" |
| bgcolor="#CFCFCF" |
| bgcolor="#D1D1D1" |
| bgcolor="#D9D9D9" |
| bgcolor="#D5D5D5" |
| bgcolor="#C6C6C6" |
| bgcolor="#919191" |
| bgcolor="#9C9C9C" |
| bgcolor="#B9B9B9" |
| bgcolor="#D1D1D1" |
| bgcolor="#D7D7D7" |
| bgcolor="#DFDFDF" |
| bgcolor="#E7E7E7" |
| bgcolor="#E3E3E3" |
| colspan="2" bgcolor="#D8D8D8" |
| bgcolor="#E6E6E6" |
| bgcolor="#DADADA" |
| bgcolor="#DEDEDE" |
| bgcolor="#DCDCDC" |
| bgcolor="#CECECE" |
| bgcolor="#FCFCFC" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| bgcolor="#8F8F8F" |
| bgcolor="#9D9D9D" |
| bgcolor="#B1B1B1" |
| bgcolor="#C6C6C6" |
| bgcolor="#AFAFAF" |
| bgcolor="#C4C4C4" |
| bgcolor="#CECECE" |
| bgcolor="#D7D7D7" |
| bgcolor="#DCDCDC" |
| bgcolor="#DEDEDE" |
| bgcolor="#DCDCDC" |
| bgcolor="#D0D0D0" |
| bgcolor="#C2C2C2" |
| bgcolor="#A7A7A7" |
| bgcolor="#AEAEAE" |
| bgcolor="#C5C5C5" |
| bgcolor="#D8D8D8" |
| bgcolor="#DBDBDB" |
| bgcolor="#DDDDDD" |
| bgcolor="#DEDEDE" |
| bgcolor="#D5D5D5" |
| bgcolor="#E1E1E1" |
| bgcolor="#D4D4D4" |
| bgcolor="#E1E1E1" |
| bgcolor="#DADADA" |
| bgcolor="#DEDEDE" |
| bgcolor="#E3E3E3" |
| bgcolor="#D7D7D7" |
| bgcolor="#FAFAFA" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#EBEBEB" |
| bgcolor="#8C8C8C" |
| bgcolor="#828282" |
| bgcolor="#BDBDBD" |
| bgcolor="#D1D1D1" |
| bgcolor="#D0D0D0" |
| bgcolor="#D4D4D4" |
| bgcolor="#D9D9D9" |
| bgcolor="#DBDBDB" |
| bgcolor="#D7D7D7" |
| bgcolor="#D4D4D4" |
| bgcolor="#D2D2D2" |
| bgcolor="#CACACA" |
| bgcolor="#C0C0C0" |
| bgcolor="#9F9F9F" |
| bgcolor="#C5C5C5" |
| bgcolor="#A9A9A9" |
| bgcolor="#E2E2E2" |
| bgcolor="#D8D8D8" |
| bgcolor="#DDDDDD" |
| colspan="2" bgcolor="#DADADA" |
| bgcolor="#D5D5D5" |
| bgcolor="#DFDFDF" |
| bgcolor="#E4E4E4" |
| bgcolor="#E0E0E0" |
| bgcolor="#EAEAEA" |
| bgcolor="#DDDDDD" |
| bgcolor="#D1D1D1" |
| bgcolor="#FCFCFC" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FCFCFC" |
| bgcolor="#E8E8E8" |
| bgcolor="#838383" |
| bgcolor="#949494" |
| bgcolor="#C8C8C8" |
| bgcolor="#D9D9D9" |
| colspan="2" bgcolor="#D5D5D5" |
| bgcolor="#DADADA" |
| bgcolor="#DCDCDC" |
| bgcolor="#D9D9D9" |
| bgcolor="#D7D7D7" |
| bgcolor="#D6D6D6" |
| bgcolor="#D1D1D1" |
| bgcolor="#C9C9C9" |
| bgcolor="#A3A3A3" |
| bgcolor="#C9C9C9" |
| bgcolor="#B2B2B2" |
| colspan="2" bgcolor="#D8D8D8" |
| bgcolor="#DADADA" |
| bgcolor="#DBDBDB" |
| bgcolor="#D6D6D6" |
| bgcolor="#D7D7D7" |
| bgcolor="#DADADA" |
| bgcolor="#D9D9D9" |
| bgcolor="#D2D2D2" |
| bgcolor="#DDDDDD" |
| bgcolor="#D6D6D6" |
| bgcolor="#CFCFCF" |
| bgcolor="#F9F9F9" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#E9E9E9" |
| bgcolor="#777777" |
| bgcolor="#ADADAD" |
| bgcolor="#D0D0D0" |
| bgcolor="#DCDCDC" |
| bgcolor="#D7D7D7" |
| bgcolor="#D4D4D4" |
| bgcolor="#D8D8D8" |
| bgcolor="#DADADA" |
| bgcolor="#D8D8D8" |
| colspan="2" bgcolor="#D7D7D7" |
| bgcolor="#D4D4D4" |
| bgcolor="#D0D0D0" |
| bgcolor="#A6A6A6" |
| bgcolor="#CDCDCD" |
| bgcolor="#BFBFBF" |
| bgcolor="#C9C9C9" |
| bgcolor="#D9D9D9" |
| bgcolor="#D7D7D7" |
| bgcolor="#DCDCDC" |
| bgcolor="#D1D1D1" |
| bgcolor="#D5D5D5" |
| bgcolor="#D3D3D3" |
| bgcolor="#D2D2D2" |
| bgcolor="#CDCDCD" |
| bgcolor="#D9D9D9" |
| bgcolor="#D6D6D6" |
| bgcolor="#CECECE" |
| bgcolor="#EFEFEF" |
| colspan="6" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F0F0F0" |
| bgcolor="#707070" |
| bgcolor="#BDBDBD" |
| bgcolor="#D0D0D0" |
| bgcolor="#D8D8D8" |
| bgcolor="#D3D3D3" |
| bgcolor="#D2D2D2" |
| bgcolor="#D4D4D4" |
| bgcolor="#D6D6D6" |
| bgcolor="#D4D4D4" |
| bgcolor="#D3D3D3" |
| bgcolor="#D2D2D2" |
| bgcolor="#D1D1D1" |
| bgcolor="#D0D0D0" |
| bgcolor="#A6A6A6" |
| bgcolor="#CFCFCF" |
| bgcolor="#C9C9C9" |
| bgcolor="#BBBBBB" |
| bgcolor="#DADADA" |
| bgcolor="#D7D7D7" |
| bgcolor="#DEDEDE" |
| colspan="2" bgcolor="#CFCFCF" |
| bgcolor="#CDCDCD" |
| bgcolor="#D4D4D4" |
| bgcolor="#D7D7D7" |
| bgcolor="#E3E3E3" |
| bgcolor="#DFDFDF" |
| bgcolor="#CFCFCF" |
| bgcolor="#E2E2E2" |
| colspan="6" bgcolor="#FFFFFF" |
|}
</div>
|}
</div>
<div style="position:fixed; width=20000; height=2000; left:76%; top:10%; overflow:visible;">
{| align="center" cellpadding="0" cellspacing="2" padding="10px" style="background: white; margin:25px; text-align:center; font-size:255%;"
|<div class="jpg">
{|
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F7F7F7" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F3F3F3" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#E4E4E4" |
| bgcolor="#DADADA" |
| bgcolor="#C4C4C4" |
| colspan="2" bgcolor="#9F9F9F" |
| bgcolor="#C0C0C0" |
| bgcolor="#D3D3D3" |
| bgcolor="#EFEFEF" |
| bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F4F4F4" |
| colspan="10" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| colspan="4" bgcolor="#FFFFFF" |
| bgcolor="#ECECEC" |
| bgcolor="#C1C1C1" |
| bgcolor="#868686" |
| bgcolor="#606060" |
| bgcolor="#565656" |
| bgcolor="#4D4D4D" |
| bgcolor="#575757" |
| bgcolor="#6C6C6C" |
| bgcolor="#717171" |
| bgcolor="#B1B1B1" |
| bgcolor="#E6E6E6" |
| bgcolor="#FAFAFA" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| colspan="10" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#BFBFBF" |
| bgcolor="#747474" |
| bgcolor="#404040" |
| bgcolor="#313131" |
| bgcolor="#3F3F3F" |
| bgcolor="#3B3B3B" |
| bgcolor="#393939" |
| bgcolor="#4A4A4A" |
| bgcolor="#545454" |
| bgcolor="#717171" |
| bgcolor="#B0B0B0" |
| bgcolor="#E8E8E8" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| colspan="10" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#D8D8D8" |
| bgcolor="#868686" |
| bgcolor="#454545" |
| bgcolor="#262626" |
| bgcolor="#373737" |
| bgcolor="#5E5E5E" |
| bgcolor="#5A5A5A" |
| bgcolor="#4A4A4A" |
| bgcolor="#515151" |
| bgcolor="#5C5C5C" |
| bgcolor="#585858" |
| bgcolor="#828282" |
| bgcolor="#C4C4C4" |
| bgcolor="#F7F7F7" |
| colspan="2" bgcolor="#FDFDFD" |
| colspan="11" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#F5F5F5" |
| bgcolor="#B3B3B3" |
| bgcolor="#616161" |
| bgcolor="#565656" |
| bgcolor="#333333" |
| bgcolor="#434343" |
| bgcolor="#777777" |
| bgcolor="#898989" |
| bgcolor="#7D7D7D" |
| bgcolor="#6B6B6B" |
| bgcolor="#575757" |
| bgcolor="#5B5B5B" |
| bgcolor="#626262" |
| bgcolor="#999999" |
| bgcolor="#DEDEDE" |
| colspan="13" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FCFCFC" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#E6E6E6" |
| bgcolor="#969696" |
| bgcolor="#5C5C5C" |
| bgcolor="#616161" |
| bgcolor="#565656" |
| bgcolor="#797979" |
| bgcolor="#B1B1B1" |
| bgcolor="#C5C5C5" |
| bgcolor="#BABABA" |
| bgcolor="#999999" |
| bgcolor="#6F6F6F" |
| bgcolor="#646464" |
| bgcolor="#575757" |
| bgcolor="#7A7A7A" |
| bgcolor="#BEBEBE" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| bgcolor="#D3D3D3" |
| bgcolor="#7E7E7E" |
| bgcolor="#676767" |
| bgcolor="#4E4E4E" |
| bgcolor="#6F6F6F" |
| bgcolor="#AFAFAF" |
| bgcolor="#DBDBDB" |
| bgcolor="#DCDCDC" |
| bgcolor="#D2D2D2" |
| bgcolor="#BCBCBC" |
| bgcolor="#969696" |
| bgcolor="#717171" |
| bgcolor="#626262" |
| bgcolor="#6D6D6D" |
| bgcolor="#989898" |
| bgcolor="#EFEFEF" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="11" bgcolor="#FFFFFF" |
| bgcolor="#F7F7F7" |
| bgcolor="#FAFAFA" |
| bgcolor="#C2C2C2" |
| bgcolor="#6C6C6C" |
| bgcolor="#6F6F6F" |
| bgcolor="#5D5D5D" |
| bgcolor="#878787" |
| bgcolor="#C3C3C3" |
| bgcolor="#DBDBDB" |
| bgcolor="#D3D3D3" |
| bgcolor="#D7D7D7" |
| bgcolor="#D2D2D2" |
| bgcolor="#B4B4B4" |
| bgcolor="#7D7D7D" |
| bgcolor="#747474" |
| bgcolor="#6B6B6B" |
| bgcolor="#7A7A7A" |
| bgcolor="#D8D8D8" |
| bgcolor="#F7F7F7" |
| colspan="11" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#B3B3B3" |
| bgcolor="#757575" |
| bgcolor="#6E6E6E" |
| bgcolor="#656565" |
| bgcolor="#919191" |
| bgcolor="#CBCBCB" |
| bgcolor="#D3D3D3" |
| bgcolor="#D2D2D2" |
| bgcolor="#DCDCDC" |
| bgcolor="#C7C7C7" |
| bgcolor="#B1B1B1" |
| bgcolor="#868686" |
| bgcolor="#777777" |
| bgcolor="#707070" |
| bgcolor="#7D7D7D" |
| bgcolor="#ACACAC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#B2B2B2" |
| bgcolor="#767676" |
| bgcolor="#6F6F6F" |
| bgcolor="#686868" |
| bgcolor="#939393" |
| bgcolor="#BEBEBE" |
| bgcolor="#CFCFCF" |
| bgcolor="#DCDCDC" |
| bgcolor="#BFBFBF" |
| bgcolor="#767676" |
| bgcolor="#5C5C5C" |
| bgcolor="#7B7B7B" |
| bgcolor="#737373" |
| bgcolor="#757575" |
| bgcolor="#7C7C7C" |
| bgcolor="#939393" |
| bgcolor="#E8E8E8" |
| colspan="11" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F4F4F4" |
| bgcolor="#B0B0B0" |
| bgcolor="#767676" |
| bgcolor="#727272" |
| bgcolor="#717171" |
| bgcolor="#7B7B7B" |
| bgcolor="#787878" |
| bgcolor="#818181" |
| bgcolor="#B2B2B2" |
| bgcolor="#B6B6B6" |
| bgcolor="#949494" |
| bgcolor="#A8A8A8" |
| bgcolor="#A4A4A4" |
| bgcolor="#868686" |
| bgcolor="#777777" |
| bgcolor="#787878" |
| bgcolor="#868686" |
| bgcolor="#DFDFDF" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F2F2F2" |
| bgcolor="#AFAFAF" |
| bgcolor="#777777" |
| bgcolor="#747474" |
| colspan="2" bgcolor="#727272" |
| bgcolor="#777777" |
| bgcolor="#818181" |
| bgcolor="#A8A8A8" |
| bgcolor="#BDBDBD" |
| bgcolor="#B8B8B8" |
| bgcolor="#D1D1D1" |
| bgcolor="#CECECE" |
| bgcolor="#9E9E9E" |
| bgcolor="#7C7C7C" |
| bgcolor="#777777" |
| bgcolor="#7C7C7C" |
| bgcolor="#D5D5D5" |
| bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F1F1F1" |
| bgcolor="#AEAEAE" |
| bgcolor="#777777" |
| bgcolor="#767676" |
| bgcolor="#717171" |
| bgcolor="#7C7C7C" |
| bgcolor="#ADADAD" |
| bgcolor="#BCBCBC" |
| bgcolor="#B2B2B2" |
| bgcolor="#BEBEBE" |
| bgcolor="#BFBFBF" |
| bgcolor="#BABABA" |
| bgcolor="#C8C8C8" |
| bgcolor="#A6A6A6" |
| bgcolor="#818181" |
| bgcolor="#767676" |
| bgcolor="#6B6B6B" |
| bgcolor="#BFBFBF" |
| colspan="11" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F0F0F0" |
| bgcolor="#ADADAD" |
| colspan="2" bgcolor="#767676" |
| bgcolor="#787878" |
| bgcolor="#7F7F7F" |
| bgcolor="#BCBCBC" |
| bgcolor="#C9C9C9" |
| bgcolor="#ABABAB" |
| bgcolor="#BDBDBD" |
| bgcolor="#D4D4D4" |
| bgcolor="#D1D1D1" |
| bgcolor="#C9C9C9" |
| bgcolor="#ADADAD" |
| bgcolor="#7B7B7B" |
| bgcolor="#6F6F6F" |
| bgcolor="#6B6B6B" |
| bgcolor="#BABABA" |
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F1F1F1" |
| bgcolor="#ADADAD" |
| colspan="2" bgcolor="#767676" |
| bgcolor="#7A7A7A" |
| bgcolor="#7F7F7F" |
| bgcolor="#B4B4B4" |
| bgcolor="#C9C9C9" |
| bgcolor="#B7B7B7" |
| bgcolor="#B5B5B5" |
| bgcolor="#B8B8B8" |
| bgcolor="#BDBDBD" |
| bgcolor="#C9C9C9" |
| bgcolor="#B7B7B7" |
| bgcolor="#7A7A7A" |
| bgcolor="#6D6D6D" |
| bgcolor="#727272" |
| bgcolor="#B7B7B7" |
| bgcolor="#F3F3F3" |
| bgcolor="#F8F8F8" |
| colspan="9" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F2F2F2" |
| bgcolor="#ADADAD" |
| bgcolor="#767676" |
| bgcolor="#757575" |
| bgcolor="#777777" |
| bgcolor="#797979" |
| bgcolor="#9D9D9D" |
| bgcolor="#B9B9B9" |
| bgcolor="#BEBEBE" |
| bgcolor="#A8A8A8" |
| bgcolor="#929292" |
| bgcolor="#A5A5A5" |
| bgcolor="#ADADAD" |
| bgcolor="#B7B7B7" |
| bgcolor="#868686" |
| bgcolor="#727272" |
| bgcolor="#6A6A6A" |
| bgcolor="#A4A4A4" |
| bgcolor="#ECECEC" |
| colspan="10" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#F5F5F5" |
| bgcolor="#F4F4F4" |
| bgcolor="#B8B8B8" |
| bgcolor="#767676" |
| bgcolor="#6C6C6C" |
| bgcolor="#6D6D6D" |
| bgcolor="#7B7B7B" |
| bgcolor="#7C7C7C" |
| bgcolor="#AFAFAF" |
| bgcolor="#B7B7B7" |
| bgcolor="#989898" |
| bgcolor="#B7B7B7" |
| bgcolor="#C4C4C4" |
| bgcolor="#C3C3C3" |
| bgcolor="#ACACAC" |
| bgcolor="#7D7D7D" |
| bgcolor="#777777" |
| bgcolor="#6E6E6E" |
| bgcolor="#969696" |
| bgcolor="#F6F6F6" |
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| colspan="4" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#F9F9F9" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#AEAEAE" |
| bgcolor="#707070" |
| bgcolor="#767676" |
| bgcolor="#797979" |
| bgcolor="#696969" |
| bgcolor="#404040" |
| bgcolor="#6C6C6C" |
| bgcolor="#A6A6A6" |
| bgcolor="#B6B6B6" |
| colspan="2" bgcolor="#D3D3D3" |
| bgcolor="#B2B2B2" |
| bgcolor="#A5A5A5" |
| bgcolor="#7F7F7F" |
| bgcolor="#7D7D7D" |
| bgcolor="#797979" |
| bgcolor="#969696" |
| bgcolor="#ECECEC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#F0F0F0" |
| bgcolor="#F6F6F6" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="10" bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#B7B7B7" |
| bgcolor="#747474" |
| bgcolor="#6A6A6A" |
| bgcolor="#7B7B7B" |
| bgcolor="#727272" |
| bgcolor="#303030" |
| bgcolor="#353535" |
| bgcolor="#727272" |
| bgcolor="#969696" |
| bgcolor="#B7B7B7" |
| bgcolor="#BDBDBD" |
| bgcolor="#C5C5C5" |
| bgcolor="#BDBDBD" |
| bgcolor="#909090" |
| bgcolor="#7D7D7D" |
| bgcolor="#6F6F6F" |
| bgcolor="#7F7F7F" |
| bgcolor="#D4D4D4" |
| bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#F8F8F8" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#E8E8E8" |
| bgcolor="#B0B0B0" |
| bgcolor="#7E7E7E" |
| bgcolor="#717171" |
| bgcolor="#696969" |
| bgcolor="#7B7B7B" |
| bgcolor="#424242" |
| bgcolor="#2F2F2F" |
| bgcolor="#656565" |
| bgcolor="#939393" |
| bgcolor="#B5B5B5" |
| bgcolor="#C6C6C6" |
| bgcolor="#C2C2C2" |
| bgcolor="#BDBDBD" |
| bgcolor="#949494" |
| bgcolor="#7B7B7B" |
| bgcolor="#6B6B6B" |
| bgcolor="#727272" |
| bgcolor="#BDBDBD" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| bgcolor="#EDEDED" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#F4F4F4" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FBFBFB" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F7F7F7" |
| bgcolor="#C2C2C2" |
| bgcolor="#868686" |
| bgcolor="#696969" |
| bgcolor="#6B6B6B" |
| bgcolor="#777777" |
| bgcolor="#3F3F3F" |
| bgcolor="#282828" |
| bgcolor="#6B6B6B" |
| bgcolor="#AAAAAA" |
| bgcolor="#C4C4C4" |
| bgcolor="#CECECE" |
| bgcolor="#D1D1D1" |
| bgcolor="#C1C1C1" |
| bgcolor="#9A9A9A" |
| bgcolor="#858585" |
| bgcolor="#737373" |
| bgcolor="#636363" |
| bgcolor="#777777" |
| bgcolor="#939393" |
| bgcolor="#E5E5E5" |
| colspan="5" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#EBEBEB" |
| bgcolor="#B0B0B0" |
| bgcolor="#7C7C7C" |
| bgcolor="#656565" |
| bgcolor="#737373" |
| bgcolor="#717171" |
| bgcolor="#3F3F3F" |
| bgcolor="#242424" |
| bgcolor="#5A5A5A" |
| bgcolor="#9B9B9B" |
| bgcolor="#B9B9B9" |
| bgcolor="#C7C7C7" |
| bgcolor="#DDDDDD" |
| bgcolor="#BABABA" |
| bgcolor="#959595" |
| bgcolor="#828282" |
| bgcolor="#717171" |
| bgcolor="#545454" |
| bgcolor="#343434" |
| bgcolor="#1D1D1D" |
| bgcolor="#626262" |
| bgcolor="#BABABA" |
| bgcolor="#F9F9F9" |
| bgcolor="#FBFBFB" |
| bgcolor="#F7F7F7" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
|-
| colspan="8" bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#BBBBBB" |
| bgcolor="#737373" |
| bgcolor="#5E5E5E" |
| bgcolor="#707070" |
| bgcolor="#7D7D7D" |
| bgcolor="#6D6D6D" |
| bgcolor="#696969" |
| bgcolor="#4B4B4B" |
| bgcolor="#2B2B2B" |
| bgcolor="#3B3B3B" |
| bgcolor="#636363" |
| bgcolor="#7C7C7C" |
| bgcolor="#8F8F8F" |
| bgcolor="#787878" |
| bgcolor="#666666" |
| bgcolor="#6E6E6E" |
| bgcolor="#757575" |
| bgcolor="#696969" |
| bgcolor="#575757" |
| bgcolor="#323232" |
| bgcolor="#080808" |
| colspan="2" bgcolor="#0A0A0A" |
| bgcolor="#373737" |
| bgcolor="#9A9A9A" |
| bgcolor="#EDEDED" |
| bgcolor="#FCFCFC" |
| bgcolor="#F6F6F6" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="9" bgcolor="#FFFFFF" |
| bgcolor="#F4F4F4" |
| bgcolor="#9E9E9E" |
| bgcolor="#272727" |
| bgcolor="#070707" |
| bgcolor="#4F4F4F" |
| bgcolor="#7D7D7D" |
| bgcolor="#666666" |
| bgcolor="#787878" |
| bgcolor="#656565" |
| bgcolor="#484848" |
| bgcolor="#1F1F1F" |
| colspan="2" bgcolor="#0C0C0C" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#161616" |
| bgcolor="#595959" |
| bgcolor="#797979" |
| bgcolor="#656565" |
| bgcolor="#515151" |
| bgcolor="#2C2C2C" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#232323" |
| bgcolor="#929292" |
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
| bgcolor="#F3F3F3" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F3F3F3" |
| bgcolor="#E2E2E2" |
| bgcolor="#2E2E2E" |
| bgcolor="#020202" |
| bgcolor="#151515" |
| bgcolor="#525252" |
| colspan="2" bgcolor="#6D6D6D" |
| bgcolor="#707070" |
| bgcolor="#606060" |
| bgcolor="#3E3E3E" |
| bgcolor="#111111" |
| bgcolor="#0A0A0A" |
| bgcolor="#111111" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#101010" |
| bgcolor="#1A1A1A" |
| bgcolor="#4E4E4E" |
| bgcolor="#777777" |
| bgcolor="#656565" |
| bgcolor="#3F3F3F" |
| bgcolor="#242424" |
| bgcolor="#0F0F0F" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#1E1E1E" |
| bgcolor="#929292" |
| colspan="3" bgcolor="#FFFFFF" |
|-
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
| bgcolor="#919191" |
| bgcolor="#131313" |
| bgcolor="#000000" |
| bgcolor="#1C1C1C" |
| bgcolor="#585858" |
| bgcolor="#747474" |
| bgcolor="#727272" |
| bgcolor="#6F6F6F" |
| bgcolor="#616161" |
| bgcolor="#323232" |
| bgcolor="#0A0A0A" |
| bgcolor="#070707" |
| bgcolor="#0F0F0F" |
| bgcolor="#101010" |
| bgcolor="#0B0B0B" |
| bgcolor="#0D0D0D" |
| bgcolor="#121212" |
| bgcolor="#494949" |
| bgcolor="#727272" |
| bgcolor="#585858" |
| bgcolor="#383838" |
| bgcolor="#272727" |
| bgcolor="#0D0D0D" |
| bgcolor="#050505" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#393939" |
| bgcolor="#ABABAB" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#DCDCDC" |
| bgcolor="#282828" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#383838" |
| bgcolor="#676767" |
| bgcolor="#777777" |
| bgcolor="#6B6B6B" |
| bgcolor="#6E6E6E" |
| bgcolor="#636363" |
| bgcolor="#202020" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#1D1D1D" |
| bgcolor="#161616" |
| bgcolor="#0B0B0B" |
| bgcolor="#090909" |
| bgcolor="#454545" |
| bgcolor="#6D6D6D" |
| bgcolor="#4A4A4A" |
| bgcolor="#333333" |
| bgcolor="#2D2D2D" |
| bgcolor="#0D0D0D" |
| bgcolor="#060606" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#060606" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#5D5D5D" |
| bgcolor="#EDEDED" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#F9F9F9" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#919191" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#131313" |
| bgcolor="#4E4E4E" |
| bgcolor="#6D6D6D" |
| bgcolor="#767676" |
| colspan="2" bgcolor="#686868" |
| bgcolor="#5F5F5F" |
| bgcolor="#131313" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#070707" |
| bgcolor="#2D2D2D" |
| bgcolor="#252525" |
| bgcolor="#090909" |
| bgcolor="#040404" |
| bgcolor="#454545" |
| bgcolor="#6B6B6B" |
| bgcolor="#414141" |
| bgcolor="#323232" |
| bgcolor="#353535" |
| bgcolor="#0E0E0E" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#040404" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#343434" |
| bgcolor="#C7C7C7" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#F7F7F7" |
| bgcolor="#D3D3D3" |
| bgcolor="#383838" |
| bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#2C2C2C" |
| bgcolor="#515151" |
| bgcolor="#676767" |
| bgcolor="#747474" |
| bgcolor="#6E6E6E" |
| bgcolor="#646464" |
| bgcolor="#5B5B5B" |
| bgcolor="#111111" |
| bgcolor="#000000" |
| bgcolor="#090909" |
| bgcolor="#0E0E0E" |
| bgcolor="#333333" |
| bgcolor="#2C2C2C" |
| bgcolor="#070707" |
| bgcolor="#030303" |
| bgcolor="#424242" |
| bgcolor="#646464" |
| bgcolor="#3C3C3C" |
| bgcolor="#343434" |
| bgcolor="#383838" |
| bgcolor="#0F0F0F" |
| bgcolor="#000000" |
| bgcolor="#080808" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#1A1A1A" |
| bgcolor="#AFAFAF" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#F8F8F8" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F2F2F2" |
| bgcolor="#9C9C9C" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#424242" |
| bgcolor="#595959" |
| bgcolor="#656565" |
| bgcolor="#6E6E6E" |
| bgcolor="#696969" |
| bgcolor="#6B6B6B" |
| bgcolor="#5A5A5A" |
| bgcolor="#181818" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#040404" |
| bgcolor="#161616" |
| bgcolor="#101010" |
| bgcolor="#060606" |
| bgcolor="#070707" |
| bgcolor="#3C3C3C" |
| bgcolor="#575757" |
| bgcolor="#393939" |
| bgcolor="#363636" |
| bgcolor="#383838" |
| bgcolor="#111111" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#090909" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#131313" |
| bgcolor="#BDBDBD" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FAFAFA" |
| bgcolor="#F7F7F7" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#B5B5B5" |
| bgcolor="#434343" |
| bgcolor="#151515" |
| bgcolor="#090909" |
| bgcolor="#505050" |
| bgcolor="#626262" |
| bgcolor="#636363" |
| bgcolor="#676767" |
| bgcolor="#5F5F5F" |
| bgcolor="#6E6E6E" |
| bgcolor="#535353" |
| bgcolor="#1E1E1E" |
| colspan="5" bgcolor="#000000" |
| bgcolor="#0D0D0D" |
| bgcolor="#121212" |
| bgcolor="#373737" |
| bgcolor="#4A4A4A" |
| bgcolor="#393939" |
| bgcolor="#3A3A3A" |
| bgcolor="#393939" |
| bgcolor="#191919" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#0A0A0A" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#131313" |
| bgcolor="#BABABA" |
| bgcolor="#FEFEFE" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#F7F7F7" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#F7F7F7" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#D7D7D7" |
| bgcolor="#505050" |
| bgcolor="#232323" |
| bgcolor="#505050" |
| bgcolor="#5B5B5B" |
| bgcolor="#595959" |
| bgcolor="#656565" |
| bgcolor="#626262" |
| bgcolor="#656565" |
| bgcolor="#464646" |
| bgcolor="#1D1D1D" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#0A0A0A" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#151515" |
| bgcolor="#1C1C1C" |
| bgcolor="#373737" |
| bgcolor="#444444" |
| bgcolor="#3B3B3B" |
| bgcolor="#3F3F3F" |
| bgcolor="#3C3C3C" |
| bgcolor="#222222" |
| bgcolor="#000000" |
| bgcolor="#090909" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#080808" |
| bgcolor="#0A0A0A" |
| bgcolor="#949494" |
| bgcolor="#FCFCFC" |
|-
| bgcolor="#FCFCFC" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FBFBFB" |
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| bgcolor="#F8F8F8" |
| bgcolor="#B8B8B8" |
| bgcolor="#898989" |
| bgcolor="#575757" |
| bgcolor="#707070" |
| bgcolor="#535353" |
| bgcolor="#575757" |
| bgcolor="#4A4A4A" |
| bgcolor="#595959" |
| bgcolor="#383838" |
| bgcolor="#131313" |
| bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| colspan="2" bgcolor="#010101" |
| bgcolor="#0B0B0B" |
| bgcolor="#222222" |
| colspan="2" bgcolor="#414141" |
| bgcolor="#2F2F2F" |
| bgcolor="#373737" |
| bgcolor="#3C3C3C" |
| bgcolor="#252525" |
| bgcolor="#0B0B0B" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#515151" |
| bgcolor="#EFEFEF" |
|-
| bgcolor="#FCFCFC" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FCFCFC" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#B1B1B1" |
| bgcolor="#9A9A9A" |
| bgcolor="#737373" |
| bgcolor="#6E6E6E" |
| bgcolor="#4F4F4F" |
| bgcolor="#575757" |
| bgcolor="#373737" |
| bgcolor="#4E4E4E" |
| bgcolor="#313131" |
| bgcolor="#101010" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#0C0C0C" |
| bgcolor="#101010" |
| bgcolor="#202020" |
| bgcolor="#2D2D2D" |
| bgcolor="#363636" |
| bgcolor="#484848" |
| bgcolor="#404040" |
| bgcolor="#1B1B1B" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#0B0B0B" |
| bgcolor="#191919" |
| bgcolor="#212121" |
| bgcolor="#3F3F3F" |
| bgcolor="#909090" |
| bgcolor="#F5F5F5" |
|-
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F1F1F1" |
| bgcolor="#ACACAC" |
| bgcolor="#A6A6A6" |
| bgcolor="#868686" |
| bgcolor="#656565" |
| bgcolor="#454545" |
| bgcolor="#515151" |
| bgcolor="#232323" |
| bgcolor="#3C3C3C" |
| bgcolor="#242424" |
| bgcolor="#0A0A0A" |
| colspan="5" bgcolor="#000000" |
| bgcolor="#070707" |
| bgcolor="#000000" |
| bgcolor="#070707" |
| bgcolor="#191919" |
| bgcolor="#313131" |
| bgcolor="#444444" |
| bgcolor="#373737" |
| bgcolor="#121212" |
| bgcolor="#1B1B1B" |
| bgcolor="#515151" |
| bgcolor="#6D6D6D" |
| bgcolor="#7E7E7E" |
| bgcolor="#888888" |
| bgcolor="#8C8C8C" |
| bgcolor="#BDBDBD" |
| bgcolor="#F5F5F5" |
| bgcolor="#FDFDFD" |
|-
| colspan="3" bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FCFCFC" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#E2E2E2" |
| bgcolor="#ADADAD" |
| bgcolor="#A3A3A3" |
| bgcolor="#818181" |
| bgcolor="#5C5C5C" |
| bgcolor="#3C3C3C" |
| bgcolor="#3E3E3E" |
| bgcolor="#191919" |
| bgcolor="#282828" |
| bgcolor="#161616" |
| bgcolor="#040404" |
| colspan="7" bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#111111" |
| bgcolor="#1C1C1C" |
| bgcolor="#232323" |
| bgcolor="#1D1D1D" |
| bgcolor="#101010" |
| bgcolor="#5C5C5C" |
| bgcolor="#B1B1B1" |
| bgcolor="#CACACA" |
| bgcolor="#D3D3D3" |
| bgcolor="#C4C4C4" |
| bgcolor="#B8B8B8" |
| bgcolor="#EAEAEA" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FCFCFC" |
| colspan="4" bgcolor="#FDFDFD" |
| bgcolor="#CACACA" |
| bgcolor="#B2B2B2" |
| bgcolor="#9D9D9D" |
| bgcolor="#787878" |
| bgcolor="#5F5F5F" |
| bgcolor="#373737" |
| bgcolor="#242424" |
| bgcolor="#131313" |
| bgcolor="#171717" |
| bgcolor="#0A0A0A" |
| colspan="7" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#070707" |
| bgcolor="#0A0A0A" |
| bgcolor="#090909" |
| bgcolor="#040404" |
| bgcolor="#070707" |
| bgcolor="#101010" |
| bgcolor="#747474" |
| bgcolor="#C7C7C7" |
| bgcolor="#CDCDCD" |
| bgcolor="#C3C3C3" |
| bgcolor="#ACACAC" |
| bgcolor="#AEAEAE" |
| bgcolor="#F3F3F3" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#FCFCFC" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#FBFBFB" |
| bgcolor="#F9F9F9" |
| colspan="2" bgcolor="#B5B5B5" |
| bgcolor="#A3A3A3" |
| bgcolor="#7F7F7F" |
| bgcolor="#5E5E5E" |
| bgcolor="#303030" |
| bgcolor="#111111" |
| bgcolor="#090909" |
| bgcolor="#0B0B0B" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="4" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#040404" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#161616" |
| bgcolor="#808080" |
| colspan="2" bgcolor="#C4C4C4" |
| bgcolor="#B4B4B4" |
| bgcolor="#A6A6A6" |
| bgcolor="#C0C0C0" |
| colspan="3" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#F9F9F9" |
| bgcolor="#F5F5F5" |
| bgcolor="#B3B3B3" |
| bgcolor="#B2B2B2" |
| bgcolor="#AEAEAE" |
| bgcolor="#8A8A8A" |
| bgcolor="#484848" |
| bgcolor="#1C1C1C" |
| bgcolor="#0B0B0B" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#020202" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#252525" |
| bgcolor="#9F9F9F" |
| bgcolor="#CFCFCF" |
| bgcolor="#CECECE" |
| bgcolor="#B8B8B8" |
| bgcolor="#ADADAD" |
| bgcolor="#CECECE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F1F1F1" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#F7F7F7" |
| bgcolor="#F2F2F2" |
| bgcolor="#BBBBBB" |
| bgcolor="#AEAEAE" |
| bgcolor="#B4B4B4" |
| bgcolor="#8F8F8F" |
| bgcolor="#2C2C2C" |
| bgcolor="#080808" |
| bgcolor="#0D0D0D" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| colspan="2" bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| colspan="2" bgcolor="#010101" |
| bgcolor="#050505" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#343434" |
| bgcolor="#A3A3A3" |
| colspan="2" bgcolor="#C4C4C4" |
| bgcolor="#AFAFAF" |
| bgcolor="#B0B0B0" |
| bgcolor="#E1E1E1" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#F4F4F4" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#FDFDFD" |
| bgcolor="#DBDBDB" |
| bgcolor="#B4B4B4" |
| bgcolor="#C4C4C4" |
| bgcolor="#ADADAD" |
| bgcolor="#A3A3A3" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#0C0C0C" |
| colspan="11" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#5E5E5E" |
| bgcolor="#ADADAD" |
| bgcolor="#C8C8C8" |
| bgcolor="#CACACA" |
| bgcolor="#A2A2A2" |
| bgcolor="#BEBEBE" |
| bgcolor="#F9F9F9" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FCFCFC" |
| bgcolor="#FDFDFD" |
| bgcolor="#F6F6F6" |
| bgcolor="#D2D2D2" |
| bgcolor="#B4B4B4" |
| bgcolor="#BDBDBD" |
| bgcolor="#B8B8B8" |
| bgcolor="#777777" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#080808" |
| bgcolor="#010101" |
| colspan="9" bgcolor="#000000" |
| colspan="2" bgcolor="#020202" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#767676" |
| bgcolor="#B7B7B7" |
| bgcolor="#C8C8C8" |
| bgcolor="#C5C5C5" |
| bgcolor="#A9A9A9" |
| bgcolor="#CBCBCB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FAFAFA" |
| bgcolor="#FDFDFD" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#E9E9E9" |
| bgcolor="#C3C3C3" |
| bgcolor="#AFAFAF" |
| bgcolor="#B8B8B8" |
| bgcolor="#BBBBBB" |
| bgcolor="#444444" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#060606" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#121212" |
| bgcolor="#979797" |
| bgcolor="#C3C3C3" |
| bgcolor="#C7C7C7" |
| bgcolor="#BEBEBE" |
| bgcolor="#B4B4B4" |
| bgcolor="#DDDDDD" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F5F5F5" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
| bgcolor="#D8D8D8" |
| bgcolor="#B3B3B3" |
| bgcolor="#ABABAB" |
| bgcolor="#BBBBBB" |
| bgcolor="#A0A0A0" |
| bgcolor="#242424" |
| bgcolor="#090909" |
| colspan="11" bgcolor="#000000" |
| colspan="2" bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#000000" |
| bgcolor="#262626" |
| bgcolor="#AFAFAF" |
| bgcolor="#C9C9C9" |
| bgcolor="#C7C7C7" |
| bgcolor="#BABABA" |
| bgcolor="#C1C1C1" |
| bgcolor="#ECECEC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#F5F5F5" |
| bgcolor="#C6C6C6" |
| bgcolor="#ABABAB" |
| bgcolor="#B1B1B1" |
| bgcolor="#B7B7B7" |
| bgcolor="#686868" |
| bgcolor="#111111" |
| bgcolor="#070707" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| colspan="13" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#010101" |
| bgcolor="#404040" |
| bgcolor="#B9B9B9" |
| bgcolor="#C9C9C9" |
| bgcolor="#C8C8C8" |
| bgcolor="#BABABA" |
| bgcolor="#CCCCCC" |
| bgcolor="#F5F5F5" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#DFDFDF" |
| bgcolor="#B7B7B7" |
| bgcolor="#ADADAD" |
| bgcolor="#B7B7B7" |
| bgcolor="#969696" |
| bgcolor="#2E2E2E" |
| bgcolor="#020202" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#090909" |
| colspan="11" bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#0F0F0F" |
| bgcolor="#646464" |
| bgcolor="#BDBDBD" |
| bgcolor="#C8C8C8" |
| bgcolor="#CACACA" |
| bgcolor="#BABABA" |
| bgcolor="#D3D3D3" |
| bgcolor="#FAFAFA" |
| bgcolor="#FBFBFB" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| colspan="2" bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#F7F7F7" |
| bgcolor="#C6C6C6" |
| bgcolor="#AEAEAE" |
| bgcolor="#B8B8B8" |
| bgcolor="#AEAEAE" |
| bgcolor="#575757" |
| bgcolor="#0C0C0C" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#030303" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#080808" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#222222" |
| bgcolor="#8B8B8B" |
| bgcolor="#C2C2C2" |
| bgcolor="#C9C9C9" |
| bgcolor="#CDCDCD" |
| bgcolor="#B8B8B8" |
| bgcolor="#D5D5D5" |
| colspan="2" bgcolor="#FDFDFD" |
| colspan="3" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#F4F4F4" |
| bgcolor="#B6B6B6" |
| bgcolor="#A9A9A9" |
| bgcolor="#C1C1C1" |
| bgcolor="#9E9E9E" |
| bgcolor="#212121" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#0A0A0A" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#000000" |
| bgcolor="#0C0C0C" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#303030" |
| bgcolor="#A6A6A6" |
| bgcolor="#C6C6C6" |
| bgcolor="#CCCCCC" |
| bgcolor="#CFCFCF" |
| bgcolor="#B6B6B6" |
| bgcolor="#D4D4D4" |
| colspan="3" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#EFEFEF" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#D6D6D6" |
| bgcolor="#ADADAD" |
| bgcolor="#C9C9C9" |
| bgcolor="#B3B3B3" |
| bgcolor="#333333" |
| bgcolor="#101010" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#060606" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#060606" |
| colspan="8" bgcolor="#010101" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#070707" |
| bgcolor="#000000" |
| bgcolor="#595959" |
| bgcolor="#ABABAB" |
| bgcolor="#D1D1D1" |
| colspan="2" bgcolor="#C7C7C7" |
| bgcolor="#B6B6B6" |
| bgcolor="#D3D3D3" |
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#F0F0F0" |
| bgcolor="#B8B8B8" |
| bgcolor="#B3B3B3" |
| bgcolor="#C3C3C3" |
| bgcolor="#7F7F7F" |
| bgcolor="#191919" |
| bgcolor="#050505" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#060606" |
| colspan="9" bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#0C0C0C" |
| bgcolor="#292929" |
| bgcolor="#8B8B8B" |
| bgcolor="#BABABA" |
| bgcolor="#BFBFBF" |
| bgcolor="#C8C8C8" |
| bgcolor="#CACACA" |
| bgcolor="#B7B7B7" |
| bgcolor="#D0D0D0" |
| bgcolor="#F9F9F9" |
| colspan="2" bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#F5F5F5" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| bgcolor="#F0F0F0" |
| bgcolor="#B1B1B1" |
| bgcolor="#C0C0C0" |
| bgcolor="#B2B2B2" |
| bgcolor="#474747" |
| bgcolor="#010101" |
| colspan="6" bgcolor="#000000" |
| bgcolor="#040404" |
| colspan="8" bgcolor="#010101" |
| bgcolor="#020202" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#202020" |
| bgcolor="#888888" |
| bgcolor="#B5B5B5" |
| bgcolor="#C5C5C5" |
| bgcolor="#C8C8C8" |
| bgcolor="#CDCDCD" |
| bgcolor="#B8B8B8" |
| bgcolor="#CBCBCB" |
| bgcolor="#F5F5F5" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FBFBFB" |
| bgcolor="#F5F5F5" |
| bgcolor="#E1E1E1" |
| bgcolor="#B1B1B1" |
| bgcolor="#BEBEBE" |
| bgcolor="#959595" |
| bgcolor="#2C2C2C" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#040404" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| colspan="2" bgcolor="#010101" |
| bgcolor="#000000" |
| colspan="8" bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#090909" |
| bgcolor="#060606" |
| bgcolor="#000000" |
| bgcolor="#131313" |
| bgcolor="#7E7E7E" |
| bgcolor="#ABABAB" |
| bgcolor="#CDCDCD" |
| bgcolor="#C8C8C8" |
| bgcolor="#CECECE" |
| bgcolor="#B9B9B9" |
| bgcolor="#C9C9C9" |
| bgcolor="#F2F2F2" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FDFDFD" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#F1F1F1" |
| bgcolor="#FCFCFC" |
| bgcolor="#C2C2C2" |
| bgcolor="#AFAFAF" |
| bgcolor="#B9B9B9" |
| bgcolor="#7B7B7B" |
| bgcolor="#1A1A1A" |
| bgcolor="#010101" |
| bgcolor="#040404" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| colspan="8" bgcolor="#010101" |
| colspan="4" bgcolor="#000000" |
| bgcolor="#3D3D3D" |
| bgcolor="#ABABAB" |
| bgcolor="#B0B0B0" |
| bgcolor="#C1C1C1" |
| bgcolor="#C7C7C7" |
| bgcolor="#CDCDCD" |
| bgcolor="#B8B8B8" |
| bgcolor="#CCCCCC" |
| bgcolor="#F5F5F5" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FDFDFD" |
| bgcolor="#B4B4B4" |
| bgcolor="#B9B9B9" |
| bgcolor="#B8B8B8" |
| bgcolor="#676767" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#050505" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| colspan="8" bgcolor="#010101" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#5B5B5B" |
| bgcolor="#C6C6C6" |
| bgcolor="#AFAFAF" |
| bgcolor="#BEBEBE" |
| bgcolor="#C6C6C6" |
| bgcolor="#C8C8C8" |
| bgcolor="#B7B7B7" |
| bgcolor="#D2D2D2" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FBFBFB" |
| bgcolor="#FCFCFC" |
| bgcolor="#BABABA" |
| bgcolor="#8F8F8F" |
| bgcolor="#9E9E9E" |
| bgcolor="#8C8C8C" |
| bgcolor="#4A4A4A" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="3" bgcolor="#000000" |
| colspan="2" bgcolor="#030303" |
| colspan="10" bgcolor="#010101" |
| colspan="2" bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#5F5F5F" |
| bgcolor="#C2C2C2" |
| bgcolor="#A5A5A5" |
| colspan="2" bgcolor="#C5C5C5" |
| bgcolor="#C3C3C3" |
| bgcolor="#B6B6B6" |
| bgcolor="#DADADA" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#ECECEC" |
| bgcolor="#535353" |
| bgcolor="#4A4A4A" |
| bgcolor="#5B5B5B" |
| bgcolor="#414141" |
| bgcolor="#282828" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="2" bgcolor="#060606" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="8" bgcolor="#010101" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#090909" |
| bgcolor="#6F6F6F" |
| bgcolor="#CECECE" |
| bgcolor="#A2A2A2" |
| bgcolor="#C2C2C2" |
| bgcolor="#C5C5C5" |
| bgcolor="#C0C0C0" |
| bgcolor="#B5B5B5" |
| bgcolor="#DFDFDF" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#FFFFFF" |
| bgcolor="#B7B7B7" |
| bgcolor="#4C4C4C" |
| bgcolor="#5E5E5E" |
| bgcolor="#4B4B4B" |
| bgcolor="#0D0D0D" |
| bgcolor="#0C0C0C" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#090909" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#020202" |
| bgcolor="#050505" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#020202" |
| bgcolor="#010101" |
| bgcolor="#878787" |
| bgcolor="#D9D9D9" |
| bgcolor="#A3A3A3" |
| bgcolor="#C3C3C3" |
| bgcolor="#C8C8C8" |
| bgcolor="#AAAAAA" |
| bgcolor="#BEBEBE" |
| bgcolor="#F9F9F9" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#E5E5E5" |
| bgcolor="#8E8E8E" |
| bgcolor="#494949" |
| bgcolor="#555555" |
| bgcolor="#373737" |
| bgcolor="#222222" |
| bgcolor="#141414" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#080808" |
| bgcolor="#060606" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="5" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#060606" |
| bgcolor="#030303" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#080808" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#040404" |
| bgcolor="#6B6B6B" |
| bgcolor="#CCCCCC" |
| bgcolor="#AFAFAF" |
| bgcolor="#B5B5B5" |
| bgcolor="#BBBBBB" |
| bgcolor="#A9A9A9" |
| bgcolor="#BFBFBF" |
| bgcolor="#F6F6F6" |
| bgcolor="#F8F8F8" |
| colspan="4" bgcolor="#FFFFFF" |
|-
| bgcolor="#FAFAFA" |
| bgcolor="#B0B0B0" |
| bgcolor="#8F8F8F" |
| bgcolor="#707070" |
| bgcolor="#4C4C4C" |
| bgcolor="#585858" |
| bgcolor="#3E3E3E" |
| bgcolor="#0E0E0E" |
| colspan="2" bgcolor="#050505" |
| bgcolor="#090909" |
| bgcolor="#060606" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#090909" |
| bgcolor="#040404" |
| colspan="4" bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#050505" |
| bgcolor="#010101" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#060606" |
| bgcolor="#6F6F6F" |
| bgcolor="#C6C6C6" |
| bgcolor="#ADADAD" |
| bgcolor="#BBBBBB" |
| bgcolor="#C2C2C2" |
| bgcolor="#B8B8B8" |
| bgcolor="#CBCBCB" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| colspan="4" bgcolor="#FFFFFF" |
|-
| bgcolor="#B1B1B1" |
| bgcolor="#999999" |
| bgcolor="#BDBDBD" |
| bgcolor="#AAAAAA" |
| bgcolor="#969696" |
| bgcolor="#5B5B5B" |
| bgcolor="#515151" |
| bgcolor="#4B4B4B" |
| bgcolor="#242424" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#161616" |
| bgcolor="#0C0C0C" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#070707" |
| bgcolor="#000000" |
| bgcolor="#060606" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#060606" |
| bgcolor="#000000" |
| bgcolor="#222222" |
| bgcolor="#111111" |
| bgcolor="#0F0F0F" |
| bgcolor="#828282" |
| bgcolor="#A4A4A4" |
| bgcolor="#6D6D6D" |
| bgcolor="#A3A3A3" |
| bgcolor="#B2B2B2" |
| bgcolor="#A3A3A3" |
| bgcolor="#B6B6B6" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FBFBFB" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#6D6D6D" |
| bgcolor="#2A2A2A" |
| bgcolor="#353535" |
| bgcolor="#595959" |
| bgcolor="#B5B5B5" |
| bgcolor="#3C3C3C" |
| bgcolor="#393939" |
| bgcolor="#535353" |
| bgcolor="#484848" |
| bgcolor="#0C0C0C" |
| colspan="2" bgcolor="#000000" |
| colspan="2" bgcolor="#020202" |
| bgcolor="#0B0B0B" |
| bgcolor="#0C0C0C" |
| bgcolor="#0D0D0D" |
| bgcolor="#070707" |
| bgcolor="#1B1B1B" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#0D0D0D" |
| bgcolor="#181818" |
| bgcolor="#313131" |
| bgcolor="#1B1B1B" |
| bgcolor="#161616" |
| bgcolor="#5F5F5F" |
| bgcolor="#515151" |
| bgcolor="#151515" |
| bgcolor="#535353" |
| bgcolor="#666666" |
| bgcolor="#4D4D4D" |
| bgcolor="#6A6A6A" |
| bgcolor="#E5E5E5" |
| bgcolor="#FFFFFF" |
| bgcolor="#FAFAFA" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#A5A5A5" |
| bgcolor="#505050" |
| bgcolor="#272727" |
| bgcolor="#2F2F2F" |
| bgcolor="#C2C2C2" |
| bgcolor="#4F4F4F" |
| bgcolor="#282828" |
| bgcolor="#161616" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#202020" |
| bgcolor="#3C3C3C" |
| bgcolor="#4A4A4A" |
| bgcolor="#3B3B3B" |
| bgcolor="#1D1D1D" |
| bgcolor="#131313" |
| bgcolor="#0F0F0F" |
| bgcolor="#333333" |
| bgcolor="#0B0B0B" |
| bgcolor="#0F0F0F" |
| bgcolor="#060606" |
| bgcolor="#050505" |
| bgcolor="#0B0B0B" |
| bgcolor="#141414" |
| bgcolor="#060606" |
| bgcolor="#070707" |
| bgcolor="#0F0F0F" |
| bgcolor="#1C1C1C" |
| bgcolor="#0E0E0E" |
| bgcolor="#000000" |
| bgcolor="#161616" |
| bgcolor="#1F1F1F" |
| bgcolor="#040404" |
| bgcolor="#2A2A2A" |
| bgcolor="#CACACA" |
| bgcolor="#FFFFFF" |
| bgcolor="#F7F7F7" |
| bgcolor="#FDFDFD" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#CECECE" |
| bgcolor="#B9B9B9" |
| bgcolor="#C3C3C3" |
| bgcolor="#9C9C9C" |
| bgcolor="#D2D2D2" |
| bgcolor="#606060" |
| bgcolor="#141414" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#040404" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#1E1E1E" |
| bgcolor="#4A4A4A" |
| bgcolor="#616161" |
| bgcolor="#6A6A6A" |
| bgcolor="#1D1D1D" |
| bgcolor="#151515" |
| bgcolor="#3D3D3D" |
| bgcolor="#0C0C0C" |
| bgcolor="#131313" |
| bgcolor="#080808" |
| bgcolor="#020202" |
| bgcolor="#040404" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="2" bgcolor="#060606" |
| bgcolor="#020202" |
| bgcolor="#0B0B0B" |
| bgcolor="#0C0C0C" |
| bgcolor="#000000" |
| bgcolor="#1E1E1E" |
| bgcolor="#C5C5C5" |
| bgcolor="#FFFFFF" |
| bgcolor="#F8F8F8" |
| colspan="3" bgcolor="#FFFFFF" |
|-
| bgcolor="#DBDBDB" |
| bgcolor="#9A9A9A" |
| bgcolor="#B3B3B3" |
| bgcolor="#9F9F9F" |
| bgcolor="#ABABAB" |
| bgcolor="#4B4B4B" |
| bgcolor="#000000" |
| bgcolor="#0A0A0A" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#151515" |
| bgcolor="#1D1D1D" |
| bgcolor="#2A2A2A" |
| bgcolor="#464646" |
| bgcolor="#272727" |
| bgcolor="#171717" |
| bgcolor="#3A3A3A" |
| bgcolor="#020202" |
| bgcolor="#0D0D0D" |
| bgcolor="#050505" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#101010" |
| bgcolor="#050505" |
| bgcolor="#000000" |
| bgcolor="#191919" |
| bgcolor="#161616" |
| bgcolor="#000000" |
| bgcolor="#080808" |
| bgcolor="#111111" |
| bgcolor="#060606" |
| bgcolor="#292929" |
| bgcolor="#CACACA" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#DADADA" |
| bgcolor="#9E9E9E" |
| colspan="2" bgcolor="#A9A9A9" |
| bgcolor="#828282" |
| bgcolor="#2A2A2A" |
| bgcolor="#050505" |
| colspan="9" bgcolor="#000000" |
| bgcolor="#0B0B0B" |
| bgcolor="#0A0A0A" |
| bgcolor="#080808" |
| bgcolor="#050505" |
| bgcolor="#030303" |
| bgcolor="#020202" |
| colspan="2" bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#0B0B0B" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#353535" |
| bgcolor="#2B2B2B" |
| bgcolor="#0F0F0F" |
| bgcolor="#0E0E0E" |
| bgcolor="#060606" |
| bgcolor="#000000" |
| bgcolor="#464646" |
| bgcolor="#EBEBEB" |
| bgcolor="#FAFAFA" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#D2D2D2" |
| bgcolor="#A5A5A5" |
| bgcolor="#ABABAB" |
| bgcolor="#9F9F9F" |
| bgcolor="#5E5E5E" |
| bgcolor="#161616" |
| bgcolor="#020202" |
| colspan="9" bgcolor="#000000" |
| bgcolor="#070707" |
| bgcolor="#060606" |
| bgcolor="#040404" |
| bgcolor="#030303" |
| bgcolor="#020202" |
| colspan="3" bgcolor="#010101" |
| bgcolor="#0A0A0A" |
| bgcolor="#040404" |
| bgcolor="#000000" |
| bgcolor="#080808" |
| bgcolor="#0F0F0F" |
| bgcolor="#1C1C1C" |
| bgcolor="#070707" |
| bgcolor="#1A1A1A" |
| bgcolor="#0D0D0D" |
| bgcolor="#171717" |
| bgcolor="#7A7A7A" |
| colspan="2" bgcolor="#FFFFFF" |
| colspan="2" bgcolor="#FCFCFC" |
| colspan="2" bgcolor="#FFFFFF" |
|-
| bgcolor="#C4C4C4" |
| bgcolor="#9E9E9E" |
| bgcolor="#959595" |
| bgcolor="#838383" |
| bgcolor="#2A2A2A" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#050505" |
| colspan="8" bgcolor="#000000" |
| colspan="2" bgcolor="#020202" |
| bgcolor="#010101" |
| colspan="3" bgcolor="#000000" |
| colspan="3" bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#0C0C0C" |
| bgcolor="#3C3C3C" |
| bgcolor="#454545" |
| bgcolor="#191919" |
| bgcolor="#181818" |
| bgcolor="#131313" |
| bgcolor="#2A2A2A" |
| bgcolor="#8B8B8B" |
| bgcolor="#F6F6F6" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#CCCCCC" |
| bgcolor="#A0A0A0" |
| bgcolor="#8A8A8A" |
| bgcolor="#888888" |
| bgcolor="#2A2A2A" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="8" bgcolor="#000000" |
| colspan="2" bgcolor="#020202" |
| bgcolor="#010101" |
| colspan="6" bgcolor="#000000" |
| bgcolor="#030303" |
| bgcolor="#090909" |
| bgcolor="#202020" |
| bgcolor="#969696" |
| bgcolor="#838383" |
| bgcolor="#454545" |
| bgcolor="#1B1B1B" |
| bgcolor="#373737" |
| bgcolor="#545454" |
| bgcolor="#A3A3A3" |
| bgcolor="#E8E8E8" |
| colspan="2" bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
|-
| bgcolor="#EAEAEA" |
| bgcolor="#B3B3B3" |
| bgcolor="#8E8E8E" |
| bgcolor="#9F9F9F" |
| bgcolor="#4F4F4F" |
| bgcolor="#101010" |
| bgcolor="#010101" |
| colspan="9" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#040404" |
| bgcolor="#030303" |
| bgcolor="#010101" |
| colspan="4" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#181818" |
| bgcolor="#717171" |
| bgcolor="#BABABA" |
| bgcolor="#AEAEAE" |
| bgcolor="#9E9E9E" |
| bgcolor="#7B7B7B" |
| bgcolor="#8A8A8A" |
| bgcolor="#B3B3B3" |
| bgcolor="#E6E6E6" |
| colspan="2" bgcolor="#FAFAFA" |
| bgcolor="#F6F6F6" |
| bgcolor="#FEFEFE" |
| bgcolor="#FFFFFF" |
| bgcolor="#FEFEFE" |
|-
| bgcolor="#F9F9F9" |
| bgcolor="#BDBDBD" |
| bgcolor="#828282" |
| bgcolor="#8A8A8A" |
| bgcolor="#515151" |
| bgcolor="#080808" |
| bgcolor="#010101" |
| bgcolor="#040404" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#050505" |
| bgcolor="#040404" |
| bgcolor="#020202" |
| bgcolor="#010101" |
| colspan="5" bgcolor="#000000" |
| bgcolor="#3F3F3F" |
| bgcolor="#BABABA" |
| bgcolor="#767676" |
| bgcolor="#7A7A7A" |
| bgcolor="#959595" |
| bgcolor="#999999" |
| bgcolor="#D0D0D0" |
| bgcolor="#F5F5F5" |
| colspan="2" bgcolor="#FFFFFF" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#FBFBFB" |
| bgcolor="#FCFCFC" |
|-
| bgcolor="#F6F6F6" |
| bgcolor="#D4D4D4" |
| bgcolor="#9A9A9A" |
| bgcolor="#898989" |
| bgcolor="#5B5B5B" |
| bgcolor="#010101" |
| bgcolor="#020202" |
| bgcolor="#0A0A0A" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#030303" |
| bgcolor="#020202" |
| colspan="5" bgcolor="#010101" |
| bgcolor="#040404" |
| bgcolor="#141414" |
| bgcolor="#797979" |
| bgcolor="#858585" |
| bgcolor="#111111" |
| bgcolor="#121212" |
| bgcolor="#1D1D1D" |
| bgcolor="#393939" |
| bgcolor="#D3D3D3" |
| bgcolor="#FAFAFA" |
| bgcolor="#F1F1F1" |
| bgcolor="#F9F9F9" |
| bgcolor="#FBFBFB" |
| bgcolor="#FFFFFF" |
| bgcolor="#F1F1F1" |
| bgcolor="#F5F5F5" |
| bgcolor="#FAFAFA" |
|-
| bgcolor="#F8F8F8" |
| bgcolor="#FFFFFF" |
| bgcolor="#DDDDDD" |
| bgcolor="#BFBFBF" |
| bgcolor="#8C8C8C" |
| bgcolor="#141414" |
| bgcolor="#020202" |
| colspan="9" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="4" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#020202" |
| colspan="2" bgcolor="#030303" |
| bgcolor="#383838" |
| bgcolor="#A3A3A3" |
| bgcolor="#202020" |
| bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#000000" |
| bgcolor="#242424" |
| bgcolor="#B4B4B4" |
| colspan="2" bgcolor="#F3F3F3" |
| bgcolor="#FFFFFF" |
| bgcolor="#F3F3F3" |
| bgcolor="#FFFFFF" |
| bgcolor="#EEEEEE" |
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
|-
| colspan="2" bgcolor="#FCFCFC" |
| bgcolor="#F2F2F2" |
| bgcolor="#FEFEFE" |
| bgcolor="#DBDBDB" |
| bgcolor="#0F0F0F" |
| bgcolor="#050505" |
| bgcolor="#000000" |
| colspan="8" bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#0A0A0A" |
| bgcolor="#030303" |
| bgcolor="#000000" |
| bgcolor="#0F0F0F" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#080808" |
| bgcolor="#222222" |
| bgcolor="#292929" |
| bgcolor="#101010" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#060606" |
| bgcolor="#040404" |
| bgcolor="#7C7C7C" |
| bgcolor="#F6F6F6" |
| bgcolor="#FCFCFC" |
| bgcolor="#F8F8F8" |
| bgcolor="#FCFCFC" |
| bgcolor="#FFFFFF" |
| bgcolor="#F6F6F6" |
| bgcolor="#F5F5F5" |
| bgcolor="#F7F7F7" |
|-
| bgcolor="#FDFDFD" |
| bgcolor="#FEFEFE" |
| bgcolor="#F6F6F6" |
| bgcolor="#FFFFFF" |
| bgcolor="#E1E1E1" |
| bgcolor="#161616" |
| bgcolor="#070707" |
| colspan="9" bgcolor="#010101" |
| bgcolor="#040404" |
| bgcolor="#060606" |
| bgcolor="#5A5A5A" |
| bgcolor="#2D2D2D" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#0D0D0D" |
| bgcolor="#111111" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#666666" |
| bgcolor="#E6E6E6" |
| bgcolor="#F2F2F2" |
| bgcolor="#F0F0F0" |
| bgcolor="#F3F3F3" |
| bgcolor="#FAFAFA" |
| bgcolor="#F9F9F9" |
| bgcolor="#FEFEFE" |
| bgcolor="#F5F5F5" |
|-
| bgcolor="#FCFCFC" |
| bgcolor="#FEFEFE" |
| bgcolor="#F9F9F9" |
| bgcolor="#FFFFFF" |
| bgcolor="#E7E7E7" |
| bgcolor="#1F1F1F" |
| bgcolor="#060606" |
| colspan="9" bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#898989" |
| bgcolor="#727272" |
| bgcolor="#080808" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#5A5A5A" |
| bgcolor="#E1E1E1" |
| bgcolor="#F3F3F3" |
| colspan="2" bgcolor="#F2F2F2" |
| bgcolor="#F6F6F6" |
| bgcolor="#F5F5F5" |
| bgcolor="#FCFCFC" |
| bgcolor="#F4F4F4" |
|-
| bgcolor="#F9F9F9" |
| bgcolor="#FCFCFC" |
| bgcolor="#F9F9F9" |
| bgcolor="#FEFEFE" |
| bgcolor="#ECECEC" |
| bgcolor="#282828" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| colspan="8" bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#717171" |
| bgcolor="#BDBDBD" |
| bgcolor="#0F0F0F" |
| bgcolor="#0A0A0A" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#565656" |
| bgcolor="#DFDFDF" |
| bgcolor="#F4F4F4" |
| colspan="3" bgcolor="#F6F6F6" |
| bgcolor="#F1F1F1" |
| bgcolor="#F4F4F4" |
| bgcolor="#F6F6F6" |
|-
| bgcolor="#F8F8F8" |
| bgcolor="#FCFCFC" |
| bgcolor="#FAFAFA" |
| bgcolor="#FBFBFB" |
| bgcolor="#F2F2F2" |
| bgcolor="#323232" |
| colspan="2" bgcolor="#000000" |
| colspan="8" bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#535353" |
| bgcolor="#EDEDED" |
| bgcolor="#353535" |
| bgcolor="#080808" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#5D5D5D" |
| bgcolor="#DFDFDF" |
| bgcolor="#EFEFEF" |
| bgcolor="#F0F0F0" |
| bgcolor="#F4F4F4" |
| bgcolor="#F7F7F7" |
| bgcolor="#F3F3F3" |
| bgcolor="#F5F5F5" |
| bgcolor="#F6F6F6" |
|-
| bgcolor="#FAFAFA" |
| bgcolor="#FEFEFE" |
| bgcolor="#FDFDFD" |
| bgcolor="#F9F9F9" |
| bgcolor="#F8F8F8" |
| bgcolor="#3D3D3D" |
| bgcolor="#010101" |
| bgcolor="#040404" |
| colspan="9" bgcolor="#010101" |
| bgcolor="#040404" |
| bgcolor="#555555" |
| bgcolor="#F5F5F5" |
| bgcolor="#7A7A7A" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="4" bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="3" bgcolor="#000000" |
| bgcolor="#040404" |
| bgcolor="#6D6D6D" |
| bgcolor="#EBEBEB" |
| bgcolor="#F4F4F4" |
| bgcolor="#EEEEEE" |
| bgcolor="#F0F0F0" |
| bgcolor="#F5F5F5" |
| bgcolor="#F2F2F2" |
| bgcolor="#F6F6F6" |
| bgcolor="#F3F3F3" |
|-
| bgcolor="#FAFAFA" |
| colspan="2" bgcolor="#FDFDFD" |
| bgcolor="#F5F5F5" |
| bgcolor="#FAFAFA" |
| bgcolor="#434343" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| colspan="8" bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#626262" |
| bgcolor="#EFEFEF" |
| bgcolor="#C6C6C6" |
| bgcolor="#191919" |
| bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#030303" |
| colspan="2" bgcolor="#010101" |
| bgcolor="#040404" |
| bgcolor="#050505" |
| bgcolor="#030303" |
| bgcolor="#5C5C5C" |
| bgcolor="#E2E2E2" |
| bgcolor="#F4F4F4" |
| colspan="2" bgcolor="#F3F3F3" |
| bgcolor="#F4F4F4" |
| bgcolor="#F0F0F0" |
| bgcolor="#F4F4F4" |
| bgcolor="#F3F3F3" |
|-
| bgcolor="#F7F7F7" |
| bgcolor="#FBFBFB" |
| bgcolor="#FAFAFA" |
| bgcolor="#F0F0F0" |
| bgcolor="#F8F8F8" |
| bgcolor="#434343" |
| bgcolor="#000000" |
| bgcolor="#030303" |
| colspan="8" bgcolor="#010101" |
| colspan="2" bgcolor="#020202" |
| bgcolor="#666666" |
| bgcolor="#F2F2F2" |
| bgcolor="#F9F9F9" |
| bgcolor="#525252" |
| bgcolor="#070707" |
| bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#030303" |
| bgcolor="#010101" |
| colspan="2" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#020202" |
| bgcolor="#000000" |
| bgcolor="#2A2A2A" |
| bgcolor="#C0C0C0" |
| bgcolor="#E6E6E6" |
| bgcolor="#F3F3F3" |
| colspan="2" bgcolor="#F6F6F6" |
| bgcolor="#F0F0F0" |
| bgcolor="#F4F4F4" |
| bgcolor="#F5F5F5" |
|-
| bgcolor="#F1F1F1" |
| bgcolor="#FFFFFF" |
| bgcolor="#F9F9F9" |
| bgcolor="#F7F7F7" |
| bgcolor="#F9F9F9" |
| bgcolor="#222222" |
| bgcolor="#000000" |
| bgcolor="#050505" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#050505" |
| bgcolor="#000000" |
| bgcolor="#808080" |
| bgcolor="#EFEFEF" |
| bgcolor="#F3F3F3" |
| bgcolor="#BABABA" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#020202" |
| bgcolor="#0F0F0F" |
| bgcolor="#848484" |
| bgcolor="#F5F5F5" |
| bgcolor="#EBEBEB" |
| bgcolor="#F1F1F1" |
| bgcolor="#F7F7F7" |
| bgcolor="#F6F6F6" |
| bgcolor="#F3F3F3" |
| bgcolor="#F6F6F6" |
|-
| bgcolor="#F2F2F2" |
| bgcolor="#FEFEFE" |
| bgcolor="#F3F3F3" |
| bgcolor="#F5F5F5" |
| bgcolor="#F9F9F9" |
| bgcolor="#424242" |
| bgcolor="#000000" |
| bgcolor="#020202" |
| colspan="8" bgcolor="#000000" |
| bgcolor="#020202" |
| bgcolor="#050505" |
| bgcolor="#848484" |
| bgcolor="#F1F1F1" |
| bgcolor="#F5F5F5" |
| bgcolor="#D1D1D1" |
| bgcolor="#242424" |
| bgcolor="#040404" |
| colspan="6" bgcolor="#000000" |
| bgcolor="#010101" |
| colspan="2" bgcolor="#020202" |
| bgcolor="#404040" |
| bgcolor="#E0E0E0" |
| bgcolor="#F7F7F7" |
| bgcolor="#EEEEEE" |
| bgcolor="#FBFBFB" |
| bgcolor="#F3F3F3" |
| bgcolor="#F1F1F1" |
| bgcolor="#F6F6F6" |
|-
| bgcolor="#F6F6F6" |
| bgcolor="#F8F8F8" |
| bgcolor="#EFEFEF" |
| bgcolor="#F6F6F6" |
| bgcolor="#FBFBFB" |
| bgcolor="#727272" |
| bgcolor="#020202" |
| bgcolor="#010101" |
| colspan="9" bgcolor="#000000" |
| bgcolor="#0C0C0C" |
| bgcolor="#838383" |
| bgcolor="#F2F2F2" |
| bgcolor="#F4F4F4" |
| bgcolor="#EAEAEA" |
| bgcolor="#585858" |
| bgcolor="#040404" |
| colspan="6" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#020202" |
| bgcolor="#010101" |
| bgcolor="#000000" |
| bgcolor="#C2C2C2" |
| bgcolor="#FDFDFD" |
| bgcolor="#EAEAEA" |
| bgcolor="#FBFBFB" |
| colspan="2" bgcolor="#F3F3F3" |
| bgcolor="#F6F6F6" |
|-
| bgcolor="#F9F9F9" |
| bgcolor="#F8F8F8" |
| bgcolor="#F3F3F3" |
| bgcolor="#FBFBFB" |
| bgcolor="#FAFAFA" |
| bgcolor="#9A9A9A" |
| bgcolor="#030303" |
| bgcolor="#020202" |
| colspan="9" bgcolor="#000000" |
| bgcolor="#070707" |
| bgcolor="#777777" |
| bgcolor="#F2F2F2" |
| bgcolor="#F0F0F0" |
| bgcolor="#F4F4F4" |
| bgcolor="#7A7A7A" |
| bgcolor="#010101" |
| colspan="6" bgcolor="#000000" |
| bgcolor="#010101" |
| bgcolor="#020202" |
| bgcolor="#0A0A0A" |
| bgcolor="#000000" |
| bgcolor="#A8A8A8" |
| bgcolor="#F7F7F7" |
| bgcolor="#EBEBEB" |
| bgcolor="#F4F4F4" |
| colspan="3" bgcolor="#F7F7F7" |
|}
</div>
|}
</div>
<div style="position:fixed; left:0%; top:0%; overflow:visible;">
{| align="center" cellpadding="0" cellspacing="0" padding="0px" style="background: white; margin:25px; text-align:center; font-size:125%;"
| <font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br><font color="red">Avril Lavigne </font><br>
|}
</div>
<div style="position:fixed; width=20000; height=2000; left:70%; top:70%; overflow:visible;">
{| align="center" cellpadding="0" cellspacing="2" padding="10px" style="background: #FFFF00; margin:25px; border:4px #000000 solid; text-align:center; font-size:125%;"
| <font color="Black">'''Avril Lavigne is the Best!'''</font>
|}
</div>
<div style="position:fixed; width=20000; height=2000; left:11%; top:3%; overflow:visible;">
{| align="center" cellpadding="0" cellspacing="2" padding="10px" style="background: white; margin:25px; text-align:center; font-size:255%;"
|<font color="Black">From Avril Lavigne-apeadia, the Best Damn Encyclopedia</font>
|}
</div>
<includeonly>
<div style="position:fixed; width=20000; height=2000; left:15%; top:40%; overflow:visible;">
{| align="center" cellpadding="5" cellspacing="5" padding="10px" style="margin:25px; text-align:center; font-size:375%;"
|<font color="Blue">AVRIL LAVIGNE ROKZ MY SOCKZ!</font>
|}
</div>
<div style="position:fixed; width=20000; height=2000; left:10%; top:90%; overflow:visible;">
{| align="center" cellpadding="0" cellspacing="2" padding="10px" style="background: white; margin:25px; text-align:center; font-size:175%;"
|<font color="red">Brought to you by The Avril Troll</font>
|}
</div>
</includeonly>
5r699oog4jct7jn3yj372cvvi1i8owy
14969
14968
2008-10-10T18:05:27Z
Darklama
2894
Reverted edits by [[Special:Contributions/Vikysobs|Vikysobs]] ([[User talk:Vikysobs|Talk]]) to last version by [[User:Diagramma Della Verita|Diagramma Della Verita]]
14969
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
[[ms:Templat:MukaDepan]]
lx5gxnb1hyuf0y2you7cg3ty7osizm8
14970
14969
2008-10-10T18:10:59Z
Darklama
2894
Protected "[[Template:BookCat]]": High-impact page ([edit=sysop] (indefinite) [move=sysop] (indefinite))
14969
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
[[ms:Templat:MukaDepan]]
lx5gxnb1hyuf0y2you7cg3ty7osizm8
14971
14970
2008-11-22T02:49:17Z
Mike.lifeguard
117
fix per talk
14971
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
[[ms:Templat:MukaDepan]]
11wk4tooawslbppnkwt3mtn1rwakwzz
14972
14971
2009-01-10T19:43:32Z
Mike.lifeguard
117
wrap noinclude
14972
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page its added to.</noinclude>
<noinclude>
[[ms:Templat:MukaDepan]]
</noinclude>
k1kidzh8hgzry96u9rd8ddeoqjx6420
14973
14972
2009-06-20T16:30:12Z
Adrignola
502
Fixed grammar in description.
14973
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page it's added to.</noinclude>
<noinclude>
[[ms:Templat:MukaDepan]]
</noinclude>
92saasxxyhijq0o50xj00suw6k077rl
14974
14973
2009-06-20T18:27:06Z
Adrignola
502
+category
14974
wikitext
text/x-wiki
<includeonly>{{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}</includeonly><noinclude>
Sorts a book by book title or by chapter name depending on what page it's added to.
[[Category:Catalogue templates]]</noinclude>
noro6gw2nhzs1jnymb103yp5pz6puxf
14975
14974
2009-06-20T20:29:21Z
Adrignola
502
Combining code from {{BookTemplateCat}}
14975
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}|Template=[[Category:{{BOOKNAME}}/Templates|{{FULLCHAPTERNAME}}]]|Category=[[Category:{{BOOKNAME}}|{{FULLCHAPTERNAME}}]] [[Category:Book-specific templates|{{PAGENAME}}]]|#default={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}} }}
</includeonly><noinclude>
This template does the following, based on the page it's added to:
*Places subpages of a book in the book's category (<tt>Category:{{tlx|FULLBOOKNAME}}</tt>) and sorts them by chapter name.
*Places a book's templates in the template category ({{nowrap|<tt>Category:{{tlx|BOOKNAME}}/Templates</tt>}}). ''This only works if a book's templates begin with'' {{nowrap|Template:{{tlx|FULLBOOKNAME}}/}}.
*Places a book's template category in the book's category and {{nowrap|[[:Category:Book-specific templates]]}}.
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates]]</noinclude>
mfu7ov0mtstde821v2vptn1d16sss75
14976
14975
2009-06-20T20:56:23Z
Adrignola
502
Removed extra line break in code.
14976
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}|Template=[[Category:{{BOOKNAME}}/Templates|{{FULLCHAPTERNAME}}]]|Category=[[Category:{{BOOKNAME}}|{{FULLCHAPTERNAME}}]] [[Category:Book-specific templates|{{PAGENAME}}]]|#default={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}} }}</includeonly><noinclude>
This template does the following, based on the page it's added to:
*Places subpages of a book in the book's category (<tt>Category:{{tlx|FULLBOOKNAME}}</tt>) and sorts them by chapter name.
*Places a book's templates in the template category ({{nowrap|<tt>Category:{{tlx|BOOKNAME}}/Templates</tt>}}). ''This only works if a book's templates begin with'' {{nowrap|Template:{{tlx|FULLBOOKNAME}}/}}.
*Places a book's template category in the book's category and {{nowrap|[[:Category:Book-specific templates]]}}.
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates]]</noinclude>
n85psx25trjoo20s7797tv6jmjqt0c2
14977
14976
2009-06-23T23:16:08Z
Adrignola
502
Updated with contents of [[User:Pi zero/BookCat]] for additional functionality.
14977
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}|Template={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{BOOKNAME}}/Templates|{{{1| }}}]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{FULLCHAPTERNAME}}}}}]]}}|Category={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{#titleparts:{{PAGENAME}}||-1}}]]{{#ifeq:"{{FULLCHAPTERNAME}}"|"Templates"| [[Category:Book-specific templates|{{PAGENAME}}]]}}}}|#default={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}} }}</includeonly><noinclude>
This template does the following, based on the page it's added to:
*Places subpages of a book in the book's category (<tt>Category:{{tlx|FULLBOOKNAME}}</tt>) and sorts them by chapter name.
*Places a book's templates in the template category ({{nowrap|<tt>Category:{{tlx|BOOKNAME}}/Templates</tt>}}). ''This only works if a book's templates begin with'' {{nowrap|<tt>Template:{{tlx|FULLBOOKNAME}}</tt>}} .
*Places a book's template category in the book's category and {{nowrap|[[:Category:Book-specific templates]]}}.
*Places any other of a book's categories (that starts with <tt>Category:{{tlx|FULLBOOKNAME}}/</tt> ) in its parent, sorted by its last name. For example, {{nowrap|<tt>Category:My Book/Images</tt>}} would go in {{nowrap|<tt>Category:My Book</tt>}} with sort key <tt>Images</tt>.
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates]]</noinclude>
6okt2qv6jg20vgjsbauiqcmb68smm1b
14978
14977
2009-06-23T23:56:57Z
Adrignola
502
Updated description.
14978
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}|Template={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{BOOKNAME}}/Templates|{{{1| }}}]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{FULLCHAPTERNAME}}}}}]]}}|Category={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{#titleparts:{{PAGENAME}}||-1}}]]{{#ifeq:"{{FULLCHAPTERNAME}}"|"Templates"| [[Category:Book-specific templates|{{PAGENAME}}]]}}}}|#default={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}} }}</includeonly><noinclude>
This template does the following, based on the page it's added to:
*Places subpages of a book in the book's category (<tt>Category:{{tlx|FULLBOOKNAME}}</tt>) and sorts them by chapter name.
*Places a book's templates in the template category ({{nowrap|<tt>Category:{{tlx|BOOKNAME}}/Templates</tt>}}). ''This only works if a book's templates begin with'' {{nowrap|<tt>Template:{{tlx|FULLBOOKNAME}}</tt>}} .
*Places a book's template category in the book's category and {{nowrap|[[:Category:Book-specific templates]]}}.
*Places any other category in its parent, sorted by its last name. The parent has the same name except removing every from the last slash on; and the last name is the part that was removed after that last slash. For example, {{nowrap|<tt>Category:My Book/Images</tt>}} would go in {{nowrap|<tt>Category:My Book</tt>}} with sort key <tt>Images</tt>.
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates]]</noinclude>
2qgvckm70hpyu87ctwurhrlei836rid
14979
14978
2009-06-24T23:23:53Z
Adrignola
502
Changing #default to a Wikijunior fall-through/main namespace match.
14979
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}|Template={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{BOOKNAME}}/Templates|{{{1| }}}]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{FULLCHAPTERNAME}}}}}]]}}|Category={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{#titleparts:{{PAGENAME}}||-1}}]]{{#ifeq:"{{FULLCHAPTERNAME}}"|"Templates"| [[Category:Book-specific templates|{{PAGENAME}}]]}}}}|Wikijunior| ={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}} }}</includeonly><noinclude>
This template does the following, based on the page it's added to:
*Places subpages of a book in the book's category (<tt>Category:{{tlx|FULLBOOKNAME}}</tt>) and sorts them by chapter name.
*Places a book's templates in the template category ({{nowrap|<tt>Category:{{tlx|BOOKNAME}}/Templates</tt>}}). ''This only works if a book's templates begin with'' {{nowrap|<tt>Template:{{tlx|FULLBOOKNAME}}</tt>}} .
*Places a book's template category in the book's category and {{nowrap|[[:Category:Book-specific templates]]}}.
*Places any other category in its parent, sorted by its last name. The parent has the same name except removing every from the last slash on; and the last name is the part that was removed after that last slash. For example, {{nowrap|<tt>Category:My Book/Images</tt>}} would go in {{nowrap|<tt>Category:My Book</tt>}} with sort key <tt>Images</tt>.
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates]]</noinclude>
6yl710ugersu90q5pl9exbrwnclfzsq
14980
14979
2009-06-25T00:59:55Z
Adrignola
502
Changing to a test if talk page or not to permit use in other namespaces, should it be possible or desired.
14980
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{FULLPAGENAME}}|{{TALKPAGENAME}}||{{#switch:{{NAMESPACE}}|Template={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{BOOKNAME}}/Templates|{{{1| }}}]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{FULLCHAPTERNAME}}}}}]]}}|Category={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{#titleparts:{{PAGENAME}}||-1}}]]{{#ifeq:"{{FULLCHAPTERNAME}}"|"Templates"| [[Category:Book-specific templates|{{PAGENAME}}]]}}}}|#default={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}}}}}</includeonly><noinclude>
This template does the following, based on the page it's added to:
*Places subpages of a book in the book's category (<tt>Category:{{tlx|FULLBOOKNAME}}</tt>) and sorts them by chapter name.
*Places a book's templates in the template category ({{nowrap|<tt>Category:{{tlx|BOOKNAME}}/Templates</tt>}}). ''This only works if a book's templates begin with'' {{nowrap|<tt>Template:{{tlx|FULLBOOKNAME}}</tt>}} .
*Places a book's template category in the book's category and {{nowrap|[[:Category:Book-specific templates]]}}.
*Places any other category in its parent, sorted by its last name. The parent has the same name except removing every from the last slash on; and the last name is the part that was removed after that last slash. For example, {{nowrap|<tt>Category:My Book/Images</tt>}} would go in {{nowrap|<tt>Category:My Book</tt>}} with sort key <tt>Images</tt>.
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates]]</noinclude>
kob5re31xy7oxado4akj10nbnxtnftl
14981
14980
2009-06-27T04:05:36Z
Adrignola
502
Fixed sort key
14981
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{FULLPAGENAME}}|{{TALKPAGENAME}}||{{#switch:{{NAMESPACE}}|Template={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{BOOKNAME}}/Templates|{{{1| }}}]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{FULLCHAPTERNAME}}}}}]]}}|Category={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{#titleparts:{{PAGENAME}}||-1}}]]{{#ifeq:"{{FULLCHAPTERNAME}}"|"Templates"| [[Category:Book-specific templates|{{PAGENAME}}]]}}}}|#default={{#ifeq:"{{FULLCHAPTERNAME}}"|"{{FULLBOOKNAME}}"|[[Category:{{FULLBOOKNAME}}|{{{1| }}}]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{FULLCHAPTERNAME}}}}}]]}}}}}}</includeonly><noinclude>
This template does the following, based on the page it's added to:
*Places subpages of a book in the book's category (<tt>Category:{{tlx|FULLBOOKNAME}}</tt>) and sorts them by chapter name.
*Places a book's templates in the template category ({{nowrap|<tt>Category:{{tlx|BOOKNAME}}/Templates</tt>}}). ''This only works if a book's templates begin with'' {{nowrap|<tt>Template:{{tlx|FULLBOOKNAME}}</tt>}} .
*Places a book's template category in the book's category and {{nowrap|[[:Category:Book-specific templates]]}}.
*Places any other category in its parent, sorted by its last name. The parent has the same name except removing every from the last slash on; and the last name is the part that was removed after that last slash. For example, {{nowrap|<tt>Category:My Book/Images</tt>}} would go in {{nowrap|<tt>Category:My Book</tt>}} with sort key <tt>Images</tt>.
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates|{{PAGENAME}}]]</noinclude>
d8djgl13n5dpv0tvf1jgdonm9qqao1n
14982
14981
2009-07-05T02:22:19Z
Adrignola
502
Updates by [[User:Pi zero|Pi zero]]
14982
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{FULLPAGENAME}}|{{TALKPAGENAME}}||{{#switch:{{NAMESPACE}}|Template={{#ifeq:{{{template-filing|}}}|deep|[[Category:{{BOOKNAME}}/Templates{{#if:{{#titleparts:{{PAGENAME}}||3}}|/{{#titleparts:{{PAGENAME}}|-1|2}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}|Category={{#ifeq:{{FULLCHAPTERNAME}}|{{FULLBOOKNAME}}||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{{1|{{#titleparts:{{PAGENAME}}||-1}}}}} ]]{{#ifeq:{{FULLCHAPTERNAME}}|Templates| [[Category:Book-specific templates|{{{1|{{PAGENAME}}}}} ]]}}}}|#default={{#ifeq:{{{filing|}}}|deep|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}}}}}</includeonly><noinclude>
This template puts the page on which it's used (<code><nowiki>{{FULLPAGENAME}}</nowiki></code>) into appropriate categories, based on certain page-naming and page-categorization conventions.
When used without parameters, it
*places subpages of a book in the book's category ({{nowrap|<code>Category:{{tlx|ROOTBOOKNAME}}</code>}}) and sorts them by chapter name.
*places a book's templates in the book's template category ({{nowrap|<code>Category:{{tlx|ROOTBOOKNAME}}/Templates</code>}}). ''This only works if a book's templates begin with'' {{nowrap|<code>Template:{{tlx|ROOTBOOKNAME}}</code>}} .
*places a book's template category in the book's category and in {{nowrap|<code>[[:Category:Book-specific templates]]</code>}} .
*places any other category in its parent, sorted by the category's last name. The parent has the same name except removing everything from the last slash on; and the last name is the part that was removed after that last slash. For example, {{nowrap|<code>Category:My Book/Images</code>}} would go in {{nowrap|<code>Category:My Book</code>}} with sort key <code>Images</code> .
Optional parameter {{nowrap|<code><nowiki>filing=deep</nowiki></code>}} changes the behavior on book pages, so that a book page with more than one slash in its name is placed in a subcategory of the category where its parent page would be placed, sorted by the page's last name. For example, using {{nowrap|<code><nowiki>{{BookCat|filing=deep}}</nowiki></code>}} on page {{nowrap|<code>My Book/Maps/Asia</code>}} would put that page in {{nowrap|<code>Category:My Book/Maps</code>}} with sort key <code>Asia</code> .
Optional parameter {{nowrap|<code><nowiki>template-filing=deep</nowiki></code>}} changes the behavior on template pages to deep filing (so {{nowrap|<code>Template:My book/Maps/Asia</code>}} would go in {{nowrap|<code>Category:My book/Templates/Maps</code>}}).
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates|{{PAGENAME}}]]</noinclude>
iq4i22gxuoyi5wpprujpk6vq4xkh68c
14983
14982
2010-04-17T16:03:33Z
Adrignola
502
pt interwiki
14983
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{FULLPAGENAME}}|{{TALKPAGENAME}}||{{#switch:{{NAMESPACE}}|Template={{#ifeq:{{{template-filing|}}}|deep|[[Category:{{BOOKNAME}}/Templates{{#if:{{#titleparts:{{PAGENAME}}||3}}|/{{#titleparts:{{PAGENAME}}|-1|2}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}|Category={{#ifeq:{{FULLCHAPTERNAME}}|{{FULLBOOKNAME}}||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{{1|{{#titleparts:{{PAGENAME}}||-1}}}}} ]]{{#ifeq:{{FULLCHAPTERNAME}}|Templates| [[Category:Book-specific templates|{{{1|{{PAGENAME}}}}} ]]}}}}|#default={{#ifeq:{{{filing|}}}|deep|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}}}}}</includeonly><noinclude>
This template puts the page on which it's used (<code><nowiki>{{FULLPAGENAME}}</nowiki></code>) into appropriate categories, based on certain page-naming and page-categorization conventions.
When used without parameters, it
*places subpages of a book in the book's category ({{nowrap|<code>Category:{{tlx|ROOTBOOKNAME}}</code>}}) and sorts them by chapter name.
*places a book's templates in the book's template category ({{nowrap|<code>Category:{{tlx|ROOTBOOKNAME}}/Templates</code>}}). ''This only works if a book's templates begin with'' {{nowrap|<code>Template:{{tlx|ROOTBOOKNAME}}</code>}} .
*places a book's template category in the book's category and in {{nowrap|<code>[[:Category:Book-specific templates]]</code>}} .
*places any other category in its parent, sorted by the category's last name. The parent has the same name except removing everything from the last slash on; and the last name is the part that was removed after that last slash. For example, {{nowrap|<code>Category:My Book/Images</code>}} would go in {{nowrap|<code>Category:My Book</code>}} with sort key <code>Images</code> .
Optional parameter {{nowrap|<code><nowiki>filing=deep</nowiki></code>}} changes the behavior on book pages, so that a book page with more than one slash in its name is placed in a subcategory of the category where its parent page would be placed, sorted by the page's last name. For example, using {{nowrap|<code><nowiki>{{BookCat|filing=deep}}</nowiki></code>}} on page {{nowrap|<code>My Book/Maps/Asia</code>}} would put that page in {{nowrap|<code>Category:My Book/Maps</code>}} with sort key <code>Asia</code> .
Optional parameter {{nowrap|<code><nowiki>template-filing=deep</nowiki></code>}} changes the behavior on template pages to deep filing (so {{nowrap|<code>Template:My book/Maps/Asia</code>}} would go in {{nowrap|<code>Category:My book/Templates/Maps</code>}}).
See [[Using Wikibooks/Subjects, Categories, and Classifications#Deep filing (advanced)]] for more information.
[[Category:Catalogue templates|{{PAGENAME}}]]
[[pt:Template:AutoCat]]
</noinclude>
cfcqxlg8h9el09fgja90k04i2w8lmfs
14984
14983
2010-04-21T19:32:19Z
Adrignola
502
using {{documentation}}
14984
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{FULLPAGENAME}}|{{TALKPAGENAME}}||{{#switch:{{NAMESPACE}}|Template={{#ifeq:{{{template-filing|}}}|deep|[[Category:{{BOOKNAME}}/Templates{{#if:{{#titleparts:{{PAGENAME}}||3}}|/{{#titleparts:{{PAGENAME}}|-1|2}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}|Category={{#ifeq:{{FULLCHAPTERNAME}}|{{FULLBOOKNAME}}||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{{1|{{#titleparts:{{PAGENAME}}||-1}}}}} ]]{{#ifeq:{{FULLCHAPTERNAME}}|Templates| [[Category:Book-specific templates|{{{1|{{PAGENAME}}}}} ]]}}}}|#default={{#ifeq:{{{filing|}}}|deep|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}}}}}</includeonly><noinclude>{{documentation}}</noinclude>
t994yx1g7eqjrevy0t32v6w1lend0jh
14985
14984
2010-12-17T02:00:36Z
Darklama
2894
simplified slightly, allow filing=deep to be used for templates too, and added spacing to make reading easier
14985
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}=
|Template={{#ifeq:{{{filing|{{{template-filing|}}}}}}|deep
|[[Category:{{BOOKNAME}}/Templates{{#if: {{#titleparts:{{PAGENAME}}||3}} | /{{#titleparts:{{PAGENAME}}|-1|2}} }}|{{{1|{{SUBPAGENAME}}}}}]]
|[[Category:{{BOOKNAME}}/Templates|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]
}}
|Category={{#ifeq: {{FULLCHAPTERNAME}} | {{FULLBOOKNAME}}
|
|[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{{1|{{#titleparts:{{PAGENAME}}||-1}}}}}]]
{{#ifeq: {{FULLCHAPTERNAME}} | Templates | [[Category:Book-specific templates|{{{1|{{PAGENAME}}}}} ]] }}
}}
|#default={{#ifeq:{{{filing|}}}|deep
|[[Category:{{#if: {{CHAPTERNAME}} | {{#titleparts:{{FULLPAGENAME}}|-1}} | {{FULLPAGENAME}} }}|{{{1|{{SUBPAGENAME}}}}}]]
|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}}]]
}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
8mrwxiw3wbe7h4rgh9rcg7a91ctbbts
14986
14985
2010-12-17T03:04:56Z
Pi zero
2546
Undo revision 2005113 by [[Special:Contributions/Darklama|Darklama]] ([[User talk:Darklama|talk]]) - that edit broke the template; let's test really thoroughly before messing with this
14986
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{FULLPAGENAME}}|{{TALKPAGENAME}}||{{#switch:{{NAMESPACE}}|Template={{#ifeq:{{{template-filing|}}}|deep|[[Category:{{BOOKNAME}}/Templates{{#if:{{#titleparts:{{PAGENAME}}||3}}|/{{#titleparts:{{PAGENAME}}|-1|2}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{BOOKNAME}}/Templates|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}|Category={{#ifeq:{{FULLCHAPTERNAME}}|{{FULLBOOKNAME}}||[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{{1|{{#titleparts:{{PAGENAME}}||-1}}}}} ]]{{#ifeq:{{FULLCHAPTERNAME}}|Templates| [[Category:Book-specific templates|{{{1|{{PAGENAME}}}}} ]]}}}}|#default={{#ifeq:{{{filing|}}}|deep|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]]|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]}}}}}}</includeonly><noinclude>{{documentation}}</noinclude>
t994yx1g7eqjrevy0t32v6w1lend0jh
14987
14986
2010-12-17T20:40:49Z
Pi zero
2546
populate [[:Category:Pages with deep filing]]; also, simplified slightly and added whitespace to make it easier to read, similarly to Darklama's edit
14987
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}=
|Template={{#ifeq: {{{template-filing|}}} | deep
|[[Category:{{BOOKNAME}}/Templates{{#if:{{#titleparts:{{PAGENAME}}||3}}|/{{#titleparts:{{PAGENAME}}|-1|2}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]][[Category:Pages with deep filing]]
|[[Category:{{BOOKNAME}}/Templates|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]
}}
|Category={{#ifeq: {{FULLCHAPTERNAME}} | {{FULLBOOKNAME}}
|
|[[Category:{{#titleparts:{{PAGENAME}}|-1}}|{{{1|{{#titleparts:{{PAGENAME}}||-1}}}}} ]]
{{#ifeq: {{FULLCHAPTERNAME}} | Templates
| [[Category:Book-specific templates|{{{1|{{PAGENAME}}}}} ]]
}}
}}
|#default={{#ifeq: {{{filing|}}} | deep
|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]][[Category:Pages with deep filing]]
|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]
}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
mjwb94g3rjkwis2kjfa4oi4jmuwcu56
14988
14987
2016-10-31T19:30:27Z
Pi zero
2546
logically separate
14988
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}={{BookCat/talk}}
|Template={{BookCat/template|1={{{1|}}}|template-filing={{{template-filing|}}}}}
|Category={{BookCat/category|1={{{1|}}}}}
|#default={{BookCat/default |1={{{1|}}}|filing={{{filing|}}}}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
oz9fnkhharnd70nr8sh00w0dvc9tmhm
14989
14988
2016-10-31T20:35:05Z
Pi zero
2546
subject
14989
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}={{BookCat/talk}}
|Subject={{BookCat/subject}}
|Template={{BookCat/template|1={{{1|}}}|template-filing={{{template-filing|}}}}}
|Category={{BookCat/category|1={{{1|}}}}}
|#default={{BookCat/default |1={{{1|}}}|filing={{{filing|}}}}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
qw7g6y9t8zls97izaqlrmbu1bly14fq
14990
14989
2016-12-10T20:33:47Z
Pi zero
2546
user
14990
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}={{BookCat/talk}}
|Subject= {{BookCat/subject}}
|Template={{BookCat/template|1={{{1|}}}|template-filing={{{template-filing|}}}}}
|Category={{BookCat/category|1={{{1|}}}}}
|User= {{BookCat/user |1={{{1|}}}|filing={{{filing|}}}}}
|#default={{BookCat/default |1={{{1|}}}|filing={{{filing|}}}}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
kbk18j5p7ofp0euvpn1x3mcg9821bmt
14991
14990
2017-12-19T10:08:36Z
JackPotte
1965
Hardfix for [[Category:Book:Wikibooks:Userboxes]]
14991
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}={{BookCat/talk}}
|Category ={{BookCat/category|1={{{1|}}}}}
|Subject ={{BookCat/subject}}
|Template ={{BookCat/template|1={{{1|}}}|template-filing={{{template-filing|}}}}}
|User ={{BookCat/user |1={{{1|}}}|filing={{{filing|}}}}}
|Wikibooks ={{BookCat/category|1={{{1|}}}}}
|#default={{BookCat/default |1={{{1|}}}|filing={{{filing|}}}}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
nah4r8djle2wxw21ktxq98fyzqaolf6
14992
14991
2018-01-28T13:15:45Z
Pi zero
2546
who uses that parameter?
14992
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}={{BookCat/talk}}
|Category ={{BookCat/category|1={{{1|}}}}}
|Subject ={{BookCat/subject}}
|Template ={{BookCat/template|1={{{1|}}}|template-filing={{{template-filing|}}}}}
|User ={{BookCat/user |1={{{1|}}}|filing={{{filing|}}}}}
|Wikibooks ={{BookCat/category|1={{{1|}}}}}
|#default={{BookCat/default |1={{{1|}}}|filing={{{filing|}}}}}
}}{{#ifeq:{{{1|nobody expects the Spanish Inquisition}}}|nobody expects the Spanish Inquisition||[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
tv3thr9n0y0v2xpvqwic7a9r5vyftp7
14993
14992
2018-01-29T14:26:15Z
Pi zero
2546
upgrade (see talk)
14993
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|shiftLeft|BookCat/core|1
|namespace={{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}}
|pagename ={{#if:{{{1|}}}|{{PAGENAME:{{{1}}}}}|{{PAGENAME}}}}
|sortkey ={{{sort|{{{sortkey}}}}}}
}}{{#ifeq:{{{1|}}} |[[Category:Pages passing page name to BookCat]]}}<!--
-->{{#ifeq:{{{sort|{{{sortkey}}}}}}|[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
dq75qtf0vynuf1pnns9d4qb5jzz1zoe
14994
14993
2018-01-29T14:58:23Z
Pi zero
2546
fullpagename
14994
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|shiftLeft|BookCat/core|1
|namespace={{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}}
|pagename ={{#if:{{{1|}}}|{{PAGENAME:{{{1}}}}}|{{PAGENAME}}}}
|fullpagename ={{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
|sortkey ={{{sort|{{{sortkey}}}}}}
}}{{#ifeq:{{{1|}}} |[[Category:Pages passing page name to BookCat]]}}<!--
-->{{#ifeq:{{{sort|{{{sortkey}}}}}}|[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
bvdd4f49d2ckr3175eqtbhct63iiq2a
14995
14994
2018-01-29T15:50:05Z
Pi zero
2546
fix
14995
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|shiftLeft|BookCat/core|1
|namespace={{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}}
|pagename ={{#if:{{{1|}}}|{{PAGENAME:{{{1}}}}}|{{PAGENAME}}}}
|fullpagename ={{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
|sortkey ={{{sort|{{{sortkey}}}}}}
}}{{#if:{{{1|}}} |[[Category:Pages passing page name to BookCat]]}}<!--
-->{{#if:{{{sort|{{{sortkey}}}}}}|[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
a2utzsunn0nphrbtathmbqrkmzcls31
14996
14995
2018-01-29T16:07:46Z
Pi zero
2546
fix
14996
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|shiftLeft|BookCat/core|1
|namespace={{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}}
|pagename ={{#if:{{{1|}}}|{{PAGENAME:{{{1}}}}}|{{PAGENAME}}}}
|fullpagename ={{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
|sortkey ={{{sort|{{{sortkey}}}}}}
}}{{#if:{{{1|}}} |[[Category:Pages passing page name to BookCat]]}}<!--
-->{{#if:{{{sort|{{{sortkey|}}}}}}|[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
q4r4eun68ym64tvq680wvepgjl8085m
14997
14996
2018-01-29T17:36:22Z
Pi zero
2546
rv upgrade (see talk)
14997
wikitext
text/x-wiki
<includeonly>{{#switch:{{NAMESPACE}}
|{{TALKSPACE}}={{BookCat/talk}}
|Category ={{BookCat/category|1={{{1|}}}}}
|Subject ={{BookCat/subject}}
|Template ={{BookCat/template|1={{{1|}}}|template-filing={{{template-filing|}}}}}
|User ={{BookCat/user |1={{{1|}}}|filing={{{filing|}}}}}
|Wikibooks ={{BookCat/category|1={{{1|}}}}}
|#default={{BookCat/default |1={{{1|}}}|filing={{{filing|}}}}}
}}{{#ifeq:{{{1|nobody expects the Spanish Inquisition}}}|nobody expects the Spanish Inquisition||[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
tv3thr9n0y0v2xpvqwic7a9r5vyftp7
14998
14997
2018-01-29T17:39:26Z
Pi zero
2546
reinstate upgrade
14998
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|shiftLeft|BookCat/core|1
|namespace ={{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}}
|pagename ={{#if:{{{1|}}}|{{PAGENAME:{{{1}}}}}|{{PAGENAME}}}}
|fullpagename={{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
|sortkey ={{{sort|{{{sortkey}}}}}}
}}{{#if:{{{1|}}} |[[Category:Pages passing page name to BookCat]]}}<!--
-->{{#if:{{{sort|{{{sortkey|}}}}}}|[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
7h09orai2n9u8gfsssqdizpkfo0b0lw
14999
11344
2026-08-01T17:29:26Z
QueerEcofeminist
1879
[[:en:Template:BookCat]] पासून ४२ आवर्तने आयात केलीत
11343
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|shiftLeft|BookCat/core|1
|namespace ={{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}}
|pagename ={{#if:{{{1|}}}|{{PAGENAME:{{{1}}}}}|{{PAGENAME}}}}
|fullpagename={{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
|sortkey ={{{sort|{{{sortkey|}}}}}}
}}{{#if:{{{1|}}} |[[Category:Pages passing page name to BookCat]]}}<!--
-->{{#if:{{{sort|{{{sortkey|}}}}}}|[[Category:Pages passing sort key to BookCat]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
nw1barqxaok3ax2jtswg2fq40n07xkm
साचा:BookCat/core
10
3612
15000
2018-01-29T04:50:24Z
Pi zero
2546
create
15000
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|override|BookCat/{{#switch:{{{namespace}}}
|{{TALKSPACE:{{{namespace}}}:}}=talk
|Category =category
|Subject =subject
|Template =template
|User =user
|Wikibooks=category
|#default =default
}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
9e3ax74znvbw52an6zjvdy1cveyym1c
15001
15000
2018-01-29T04:51:17Z
Pi zero
2546
Protected "[[Template:BookCat/core]]": High-impact page: Matching protection on parent ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
15000
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|override|BookCat/{{#switch:{{{namespace}}}
|{{TALKSPACE:{{{namespace}}}:}}=talk
|Category =category
|Subject =subject
|Template =template
|User =user
|Wikibooks=category
|#default =default
}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
9e3ax74znvbw52an6zjvdy1cveyym1c
15002
15001
2018-01-29T14:19:37Z
Pi zero
2546
tweak
15002
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|override|BookCat/{{#switch:{{{namespace}}}
|{{TALKSPACE:{{{namespace}}}:{{{pagename}}}}}=talk
|Category =category
|Subject =subject
|Template =template
|User =user
|Wikibooks=category
|#default =default
}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
dez0v0539bxleghiinfebr79wtmreej
15003
11346
2026-08-01T17:29:26Z
QueerEcofeminist
1879
[[:en:Template:BookCat/core]] पासून ३ आवर्तने आयात केलीत
11345
wikitext
text/x-wiki
<includeonly>{{#invoke:TScope|override|BookCat/{{#switch:{{{namespace}}}
|{{TALKSPACE:{{{namespace}}}:{{{pagename}}}}}=talk
|Category =category
|Subject =subject
|Template =template
|User =user
|Wikibooks=category
|={{evalx|
(let (x (get-arg 2))
(if (equal? (get-substring x 1 11) "Department:")
"department"
(if (equal? (get-substring x 1 6) "Shelf:")
"shelf"
"default")))
|{{ucfirst:{{{pagename}}}}}}}
|#default =default
}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
8tn25ac4mqo1m1z6kwtwsnkadjnnq8d
उकडलेली अंडी
0
4156
14338
2026-08-01T16:34:34Z
QueerEcofeminist
1879
भर
14338
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = ३० मिनिटे
| difficulty = 3 <!-- Should if provided contain a number between 1 and 5 -->
| image =
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''उकडलेली अंडी''' हा अतिशय सोपा आणि पौष्टिक नाष्टाचा पदार्थ आहे. त्यात आपल्या गरजेनुसार आणि आवडीनुसार मीठ, बारीक कापलेला कांदा आणि कोथिंबीर भुरभुरता येते.
==साहित्य ==
* कोंबडीची अंडी
* मीठ
* चाट मसाला
* कोथिंबीर
* कांदा
==कृती ==
==नोंद ==
4gjuxdhkr78s13zfpsd0oa373j9b2pw
14339
14338
2026-08-01T16:36:14Z
QueerEcofeminist
1879
भर
14339
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = ३० मिनिटे
| difficulty = 3 <!-- Should if provided contain a number between 1 and 5 -->
| image =
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''उकडलेली अंडी''' हा अतिशय सोपा आणि पौष्टिक नाष्टाचा पदार्थ आहे. त्यात आपल्या गरजेनुसार आणि आवडीनुसार मीठ, बारीक कापलेला कांदा आणि कोथिंबीर भुरभुरता येते.
==साहित्य ==
* कोंबडीची अंडी
* मीठ
* चाट मसाला
* कोथिंबीर
* कांदा
==कृती ==
* अंडी धुवून उकडून घ्यावीत, साधारण पूर्ण उकडण्यास १५ ते २० उकडावे लागते.
* त्यात उकडताना मीठ घालता येते किंवा नंतर सुद्धा वरुन घालता येते.
==नोंद ==
7yo6ow3yey6v84axog1lami2oolukpb
14340
14339
2026-08-01T16:38:23Z
QueerEcofeminist
1879
bhar
14340
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = २० मिनिटे
| difficulty = 1 <!-- Should if provided contain a number between 1 and 5 -->
| image =[[file:Bioled eggs.jpg|300px]]
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''उकडलेली अंडी''' हा अतिशय सोपा आणि पौष्टिक नाष्टाचा पदार्थ आहे. त्यात आपल्या गरजेनुसार आणि आवडीनुसार मीठ, बारीक कापलेला कांदा आणि कोथिंबीर भुरभुरता येते.
==साहित्य ==
* कोंबडीची अंडी
* मीठ
* चाट मसाला
* कोथिंबीर
* कांदा
==कृती ==
* अंडी धुवून उकडून घ्यावीत, साधारण पूर्ण उकडण्यास १५ ते २० उकडावे लागते.
* त्यात उकडताना मीठ घालता येते किंवा नंतर सुद्धा वरुन घालता येते.
==नोंद ==
gafxcdan1vog7auk07b86k5k9jvltt0
14341
14340
2026-08-01T16:41:38Z
QueerEcofeminist
1879
भर
14341
wikitext
text/x-wiki
{{recipe summary
| category =
| servings =
| time = २० मिनिटे
| difficulty = 1 <!-- Should if provided contain a number between 1 and 5 -->
| image =[[file:Bioled eggs.jpg|300px]]
| energy = <!-- Should if provided contain the number of calories and cal (can include kJ)-->
| note =
}}
'''उकडलेली अंडी''' हा अतिशय सोपा आणि पौष्टिक नाष्टाचा पदार्थ आहे. त्यात आपल्या गरजेनुसार आणि आवडीनुसार मीठ, बारीक कापलेला कांदा आणि कोथिंबीर भुरभुरता येते.
==साहित्य ==
* कोंबडीची अंडी
* मीठ
* चाट मसाला
* कोथिंबीर
* कांदा
==कृती ==
* अंडी धुवून उकडून घ्यावीत, साधारण पूर्ण उकडण्यास १५ ते २० मिनिटे उकडावे लागते.
* त्यात उकडताना मीठ घालता येते किंवा नंतर सुद्धा वरुन घालता येते.
* आपल्या आवश्यकते नुसार १५ मिनिटे किंवा २० मिनिटे उकडून
* त्या नंतर ती थंड पाण्यात २ / ३ मिनिटे बुडवून ठेवावीत म्हणजे ती सोलून घेणे सोपे होते.
* पटकन सोलण्यासाठी ती दोन्ही हातामध्ये अलगद धरून चोळून घेतल्यास साल मोडते आणि ते चटकन वेगळे करता येते.
==नोंद ==
nki8nqszajylvq8om3ec4twfw3rrzar
वर्ग:पराठे
14
4157
14346
2026-08-01T17:12:16Z
QueerEcofeminist
1879
+
14346
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1
14347
14346
2026-08-01T17:12:36Z
QueerEcofeminist
1879
added [[Category:पोळी]] using [[Help:Gadget-HotCat|HotCat]]
14347
wikitext
text/x-wiki
[[वर्ग:पोळी]]
rz8biqj5f2a579v0n76faje8941idal
मिडियाविकी:Gadget-wikidialog.js
8
4158
14532
2015-01-03T19:32:27Z
Pi zero
2546
create
14532
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
location = s;
}
).fail( function() { alert('action target check failed: ' + action); } );
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)]+)&/) == 0) {
b = s.match(/^label=([\w\s-\/\:\(\)]+)&(.*)/);
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
g5byrrkcilsdh54opq1rfq4zlgxq1yu
14533
14532
2015-01-30T12:30:09Z
Pi zero
2546
more punctuation in button labels
14533
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
location = s;
}
).fail( function() { alert('action target check failed: ' + action); } );
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;]+)&/) == 0) {
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;]+)&(.*)/);
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
0clscalll7t38611zbcuyt7gr15hvok
14534
14533
2015-03-03T15:14:11Z
Pi zero
2546
more punctuation in button labels
14534
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
location = s;
}
).fail( function() { alert('action target check failed: ' + action); } );
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
at117ai2e6qmruhjbuqxyz96i0ow9of
14535
14534
2015-06-06T19:07:48Z
Pi zero
2546
rescript
14535
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
location = s;
}
).fail( function() { alert('action target check failed: ' + action); } );
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
qiapj5zscm5fvu0q7aw7rpll0aaribg
14536
14535
2015-07-14T12:32:41Z
Pi zero
2546
disable buttons while processing click
14536
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
s8fvj0oef41g0m5iovlo5ynz5m9372q
14537
14536
2015-07-20T00:09:27Z
Pi zero
2546
version
14537
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.1x (2015-07-19)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
3nav97ib6fy1dbcc93g6akcv1pygfng
14538
14537
2015-07-20T00:10:29Z
Pi zero
2546
adjust
14538
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.1 (2015-07-19)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
8pwwbq3xbcwe1198qil594hx1hkfk03
14539
14538
2015-07-29T20:11:25Z
Pi zero
2546
0.2 action-sequences
14539
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.2 (2015-07-29)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 4; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
tue8xaou88byxjsz8zgjawwchi5k10t
14540
14539
2015-07-30T10:47:17Z
Pi zero
2546
0.3 sequence bound
14540
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.3 (2015-07-30)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage[id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage[id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage[id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
sadotyvkcb76zciokubspvtxbzt2jvv
14541
14540
2015-08-07T23:46:03Z
Pi zero
2546
0.4 first stage of internal rename (store under both old and new names)
14541
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.4 (2015-08-07)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage[id + ':incoming'] = s; sessionStorage['wikidialog:' + id + ':incoming'] = s;
sessionStorage[id + ':prevurl'] = location.href; sessionStorage['wikidialog:' + id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) { sessionStorage[id + ':unauth'] = wikidialogButtonData.unauth; sessionStorage['wikidialog:' + id + id + ':unauth'] = wikidialogButtonData.unauth; }
else { sessionStorage[id + ':unauth'] = mw.config.get('wgPageName'); sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName'); }
if ('origin' in wikidialogButtonData) { sessionStorage[id + ':origin'] = wikidialogButtonData.origin; sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin; }
if ('proxy' in wikidialogButtonData) { sessionStorage[id + ':proxy'] = wikidialogButtonData.proxy; sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy; }
sessionStorage[id + ':params'] = ''; sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage[id + ':params'] += d[0] + ','; sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage[id + ':in:' + d[0]] = d[1]; sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
9fiy4i5s66xt7d0ugxdlmfkwmz21qv3
14542
14541
2015-08-08T15:20:10Z
Pi zero
2546
0.5 third-and-final stage of internal rename (don't store old names)
14542
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.5 (2015-08-08)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
sessionStorage['wikidialog:' + id + ':prevurl'] = location.href; // provided for rollback
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
qh5jaxen1ely47wgbwpvktx0ee8yqc7
14543
14542
2015-11-06T23:54:41Z
Pi zero
2546
0.6 rollback
14543
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.6 (2015-11-06)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
pni96m7q84hh6fp8j9knofezv4ow033
14544
14543
2015-11-21T00:58:43Z
Pi zero
2546
0.7 hide local fields
14544
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.7 (2015-11-21)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if (($(this).is('.wikidialog-hidden')) || (thingIds[idx].search(/local/) == 11)) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if (($(this).is('.wikidialog-hidden')) || (thingIds[idx].search(/local/) == 11)) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
if (i.search(/local/) == 11) result.css('display','none');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
e = $(e).addClass('wikidialog-select').attr('id',i);
if (i.search(/local/) == 11) e.css('display','none');
return e;
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
olryzybs6fb8wrt0fy5swiyel1tvs0j
14545
14544
2015-11-22T22:10:23Z
Pi zero
2546
revert to 0.6
14545
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.6 (2015-11-06)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('input')).attr('type','button').addClass(this.className).val(b).attr('title',a).data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
pni96m7q84hh6fp8j9knofezv4ow033
14546
14545
2016-01-07T20:06:53Z
Pi zero
2546
0.7 button italic/bold
14546
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.7 (2016-01-07)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function handleButton(event) {
var target = $(event.target);
var wikidialogButtonData = target.data('wikidialogButtonData');
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
if ($(this).is('.wikidialog-italic-label')) { b = '<i>' + b + '</i>'; }
if ($(this).is('.wikidialog-bold-label' )) { b = '<b>' + b + '</b>'; }
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
}
}
return $(document.createElement('button')).attr('type','button').addClass(this.className).html(b).attr('title',a)
.data('wikidialogButtonData',wikidialogButtonData).click(handleButton);
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
j6lzsj8vnrtn3my3fuppy5tybquikzj
14547
14546
2016-02-12T18:36:35Z
Pi zero
2546
0.8 bug fix, some browsers ; button mouseover upgrade
14547
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.8 (2016-02-12)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function makeButtonHandler(wikidialogButtonData) {
// for some browsers, event target may be a copy lacking the data
return function (event) {
var target = $(event.target);
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}; // end return function () ...
} // end function makeButtonHandler
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
if ($(this).is('.wikidialog-italic-label')) { b = '<i>' + b + '</i>'; }
if ($(this).is('.wikidialog-bold-label' )) { b = '<b>' + b + '</b>'; }
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
a += ((j == 0) ? ' < ' : ' , ') + s[j].substring(0,s[j].search(/[\:&]/));
}
}
return $(document.createElement('button')).attr('type','button').addClass(this.className).html(b).attr('title',a)
.data('wikidialogButtonData',wikidialogButtonData).click(makeButtonHandler(wikidialogButtonData));
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
o5oleulskj199ooikauokzi09j2ph3d
14548
14547
2016-02-12T20:58:57Z
Pi zero
2546
tweak comment wording
14548
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.8 (2016-02-12)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function makeButtonHandler(wikidialogButtonData) {
// in some browsers, event target may be a copy lacking the data
return function (event) {
var target = $(event.target);
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}; // end return function () ...
} // end function makeButtonHandler
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
if ($(this).is('.wikidialog-italic-label')) { b = '<i>' + b + '</i>'; }
if ($(this).is('.wikidialog-bold-label' )) { b = '<b>' + b + '</b>'; }
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
a += ((j == 0) ? ' < ' : ' , ') + s[j].substring(0,s[j].search(/[\:&]/));
}
}
return $(document.createElement('button')).attr('type','button').addClass(this.className).html(b).attr('title',a)
.data('wikidialogButtonData',wikidialogButtonData).click(makeButtonHandler(wikidialogButtonData));
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
08qwue8wsvg19q6a1ef6rryi5lptltr
14549
14548
2016-11-19T01:46:40Z
Pi zero
2546
17 revisions imported from [[:n:MediaWiki:Gadget-wikidialog.js]]: dialog required support
14548
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.8 (2016-02-12)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function makeButtonHandler(wikidialogButtonData) {
// in some browsers, event target may be a copy lacking the data
return function (event) {
var target = $(event.target);
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}; // end return function () ...
} // end function makeButtonHandler
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
if ($(this).is('.wikidialog-italic-label')) { b = '<i>' + b + '</i>'; }
if ($(this).is('.wikidialog-bold-label' )) { b = '<b>' + b + '</b>'; }
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
a += ((j == 0) ? ' < ' : ' , ') + s[j].substring(0,s[j].search(/[\:&]/));
}
}
return $(document.createElement('button')).attr('type','button').addClass(this.className).html(b).attr('title',a)
.data('wikidialogButtonData',wikidialogButtonData).click(makeButtonHandler(wikidialogButtonData));
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
08qwue8wsvg19q6a1ef6rryi5lptltr
14550
14549
2016-12-13T15:36:56Z
Pi zero
2546
0.9 make sure page is loaded first
14550
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
$(function () {
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.9 (2016-12-13)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function makeButtonHandler(wikidialogButtonData) {
// in some browsers, event target may be a copy lacking the data
return function (event) {
var target = $(event.target);
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}; // end return function () ...
} // end function makeButtonHandler
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
if ($(this).is('.wikidialog-italic-label')) { b = '<i>' + b + '</i>'; }
if ($(this).is('.wikidialog-bold-label' )) { b = '<b>' + b + '</b>'; }
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
a += ((j == 0) ? ' < ' : ' , ') + s[j].substring(0,s[j].search(/[\:&]/));
}
}
return $(document.createElement('button')).attr('type','button').addClass(this.className).html(b).attr('title',a)
.data('wikidialogButtonData',wikidialogButtonData).click(makeButtonHandler(wikidialogButtonData));
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
});
kf5ar2w4iv1b1d2gw7349hg8jos51ty
14551
14550
2016-12-13T15:46:23Z
Pi zero
2546
1 revision imported from [[:n:MediaWiki:Gadget-wikidialog.js]]: update
14550
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
$(function () {
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.9 (2016-12-13)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function makeButtonHandler(wikidialogButtonData) {
// in some browsers, event target may be a copy lacking the data
return function (event) {
var target = $(event.target);
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}; // end return function () ...
} // end function makeButtonHandler
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
if ($(this).is('.wikidialog-italic-label')) { b = '<i>' + b + '</i>'; }
if ($(this).is('.wikidialog-bold-label' )) { b = '<b>' + b + '</b>'; }
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
a += ((j == 0) ? ' < ' : ' , ') + s[j].substring(0,s[j].search(/[\:&]/));
}
}
return $(document.createElement('button')).attr('type','button').addClass(this.className).html(b).attr('title',a)
.data('wikidialogButtonData',wikidialogButtonData).click(makeButtonHandler(wikidialogButtonData));
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
});
kf5ar2w4iv1b1d2gw7349hg8jos51ty
14552
14551
2026-08-01T17:23:35Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-wikidialog.js]] पासून २० आवर्तने आयात केलीत
14550
javascript
text/javascript
/* This script provides a function to set up dialog fields and buttons based on markup generated by [[:Category:dialog formatting templates|dialog formatting templates]].
Any javascript page importing this page should also contain a commented link to it, for [[Special:WhatLinksHere/{{FULLPAGENAME}}]].
For instructions, see the [[{{TALKPAGENAME}}|talk page]]. [[Category:Dialog javascript pages]] */
$(function () {
if (! window.wikidialog) window.wikidialog = {};
if (! window.wikidialog.show) {
//
// version
//
window.wikidialog.gadgetVersion = function() { return '0.9 (2016-12-13)'; }
//
window.wikidialog.show = function () {
//
// [[Template:Dialog/text|text]]
//
var things = $('span.wikidialog-text');
var thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ''; }
var s = $(this).text(); // .substring(0,1024); // BOUND TEXT CONTENT SIZE
var d = '';
if ( s.search(/^size=(\d*)&/) == 0) {
d = s.match(/^size=(\d*)&(.*)/);
s = d[2];
d = d[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += ' ' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('input')).attr('type','text').addClass('wikidialog-text').attr('id',thingIds[idx]).val(s).attr('size',d);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/textarea|textarea]]
//
things = $('span.wikidialog-textarea');
thingIds = things.map(function () { return $(this).attr('id'); });
things.replaceWith(function (idx) {
if ((idx > 0) && (thingIds[idx] == thingIds[idx - 1])) { return ' '; }
var s = $(this).text(); // .substring(0,131072); // BOUND TEXTAREA CONTENT SIZE
var c = '';
if ( s.search(/^cols=(\d*)&/) == 0) {
c = s.match(/^cols=(\d*)&(.*)/);
s = c[2];
c = c[1];
}
var r = '';
if ( s.search(/^rows=(\d*)&/) == 0) {
r = s.match(/^rows=(\d*)&(.*)/);
s = r[2];
r = r[1];
}
for (var j = idx + 1; j < thingIds.length; j++) {
if (thingIds[idx] == thingIds[j]) {
s += '\n' + $(things[j]).text();
} else break;
}
var e = $(document.createElement('textarea')).addClass('wikidialog-textarea').attr('id',thingIds[idx]).attr('cols',c).attr('rows',r).val(s);
if ($(this).is('.wikidialog-hidden')) e.css('display','none');
return e;
});
//
// [[Template:Dialog/checkbox|checkbox]]
//
$('span.wikidialog-checkbox').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text(); // .substring(0,32); // BOUND CHECKBOX CONTENT SIZE
var result = $(document.createElement('input')).attr('type','checkbox').addClass('wikidialog-checkbox').attr('id',i);
if (s.length > 8) result.attr('checked','yes');
return result;
});
//
// [[Template:Dialog/select|select]]
//
$('span.wikidialog-select').replaceWith(function () {
var i = $(this).attr('id');
var s = $(this).text().split('&'); // .substring(0,8192).split('&'); // BOUND SELECT CONTENT SIZE
var e = document.createElement('select');
for (var k=1; (k < s.length); k += 2) if (s[k-1]) {
e.appendChild(new Option(s[k-1],s[k],false,false));
}
return $(e).addClass('wikidialog-select').attr('id',i);
});
//
// [[Template:Dialog/button|button]]
//
$('span.wikidialog-button').replaceWith(function () {
function getWikidialogID() {
var s = location.search.match(/[\?&]wikidialogid=(\d+)/);
return (s && s.length && (s.length > 1)) ? Number(s[1]) : 0;
}
function getRollbackUrl(url, id) {
var s = url.match(/[\?&]wikidialogid=(\d+)/);
if (s && s.length && (s.length > 0)) {
// url is stable
return url;
}
s = sessionStorage.wikidialogUnstableUrl;
if (s && (url == s)) {
// url is unstable and known dialog-active
// expect it to have had id one less than next-id
s = ('wikidialogid=' + (id - 1));
} else {
// url is unstable and might be dialog-active or not
s = 'wikidialogrolledback=x';
}
return (url + ((url.search(/\?/) > 0) ? '&' : '?') + s);
}
function makeButtonHandler(wikidialogButtonData) {
// in some browsers, event target may be a copy lacking the data
return function (event) {
var target = $(event.target);
var action = wikidialogButtonData.action;
if (action.substring(0,5).toLowerCase() == 'user:') {
var ug = mw.config.get('wgUserGroups');
if (!ug || ug.join(' ').indexOf("sysop") === -1) {
alert('action requires admin privs: ' + action);
return;
}
} else {
action = mw.config.get('wgSiteName') + ':Dialog/' + action;
}
// action must be fully protected
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',true);
$.getJSON(
mw.util.wikiScript('api'),
{
format: 'json',
action: 'query',
prop: 'info',
inprop: 'protection',
titles: action
}
).done(
function(data) {
var s = '';
if (data.query && data.query.pages)
for (var p in data.query.pages) {
if ("missing" in data.query.pages[p]) s = 'page not found';
else if ('invalid' in data.query.pages[p]) s = 'page name invalid';
else if ('protection' in data.query.pages[p]) {
if (data.query.pages[p].protection[0] && data.query.pages[p].protection[1]) {
if (('level' in data.query.pages[p].protection[0]) &&
('level' in data.query.pages[p].protection[1])) {
if ((data.query.pages[p].protection[0].level == 'sysop') &&
(data.query.pages[p].protection[1].level == 'sysop')) {
} else s = 'page unsecured';
} else s = 'page query misfired';
} else s = 'page unsecured';
} else s = 'page query misfired';
}
else s = 'page query failed';
if (s) {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert(s + ': ' + action);
return;
}
// action is now known to be fully protected
// sessionStorage.wikidialogNextID was assured before setting up the button
var id = sessionStorage.wikidialogNextID;
s = mw.util.getUrl(action) + '?wikidialogid=' + id;
sessionStorage.wikidialogNextID++;
sessionStorage['wikidialog:' + id + ':incoming'] = s;
if (! target.hasClass('wikidialog-norollback')) {
sessionStorage['wikidialog:' + id + ':prevurl'] = getRollbackUrl(location.href, Number(id));
}
if ('unauth' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':unauth'] = wikidialogButtonData.unauth;
else sessionStorage['wikidialog:' + id + ':unauth'] = mw.config.get('wgPageName');
if ('origin' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':origin'] = wikidialogButtonData.origin;
if ('proxy' in wikidialogButtonData) sessionStorage['wikidialog:' + id + ':proxy'] = wikidialogButtonData.proxy;
sessionStorage['wikidialog:' + id + ':params'] = '';
for (var j = 0; j < wikidialogButtonData.length; j++) {
var d = wikidialogButtonData[j].match(/[\w-]+/g);
d[1] = (d[1] ? d[1] : d[0]);
d[1] = $('input#wikidialog-' + d[1] + ', textarea#wikidialog-' + d[1] + ', select#wikidialog-' + d[1]);
if (d[1].length == 0) {
} else {
sessionStorage['wikidialog:' + id + ':params'] += d[0] + ',';
var elt = d[1].first();
d[1] = d[1].add(target);
for (var k = 0; k < d[1].length; k++) {
if ($(d[1][k]).hasClass('wikidialog-button')) {
k++;
if (k < d[1].length) elt = $(d[1][k]);
break;
}
}
switch (elt.attr('type')) {
case 'checkbox':
d[1] = (elt[0].checked ? 'yes' : '');
break;
default:
d[1] = elt.val();
break;
}
sessionStorage['wikidialog:' + id + ':in:' + d[0]] = d[1];
}
}
if (target.hasClass('wikidialog-rescript')) {
delete window.wikidialog;
}
sessionStorage.wikidialogSequenceBound = 10; // POINT TO ADJUST max action-sequence length
// also occurs in receive
location = s;
}
).fail(function() {
$('input.wikidialog-button, button.wikidialog-button').attr('disabled',false);
alert('action target check failed: ' + action);
});
}; // end return function () ...
} // end function makeButtonHandler
if (! (sessionStorage)) { // allows handler to assume sessionStorage
return "<font color=red><button requires sessionStorage (not found; perhaps your browser is out of date?)></font>";
}
if (sessionStorage.wikidialogNextID) {} else sessionStorage.wikidialogNextID = '1';
if (Number(sessionStorage.wikidialogNextID) <= getWikidialogID()) {
alert('Warning: session data may be inaccessible\n(dialog ID should be less than stored count:\n dialog ID is ' +
getWikidialogID() + '\n stored count is ' + sessionStorage.wikidialogNextID + ')');
sessionStorage.wikidialogNextID = getWikidialogID() + 1;
}
var s = $(this).text(); // .substring(0,1024); // BOUND BUTTON CONTENT SIZE
var a = '';
if ( s.search(/^action=([\w\s-\/:]+)&/) == 0) {
a = s.match(/^action=([\w\s-\/:]+)&(.*)/);
s = a[2];
a = a[1];
}
var b = '';
if ( s.search(/^label=([\w\s-\/\:\(\)\.\,\;']+)&/) == 0) { // STUFF ALLOWED IN BUTTON LABELS
b = s.match(/^label=([\w\s-\/\:\(\)\.\,\;']+)&(.*)/); // STUFF ALLOWED IN BUTTON LABELS
s = b[2];
b = b[1];
if ($(this).is('.wikidialog-italic-label')) { b = '<i>' + b + '</i>'; }
if ($(this).is('.wikidialog-bold-label' )) { b = '<b>' + b + '</b>'; }
}
var wikidialogButtonData = $(this).data();
if ('wikidialogButtonData' in wikidialogButtonData)
wikidialogButtonData = wikidialogButtonData.wikidialogButtonData;
else wikidialogButtondata = {};
wikidialogButtonData.action = a;
wikidialogButtonData.length = 0;
var s = s.match(/([\w-]+:?[\w-]*)&/g);
if (s != null) {
wikidialogButtonData.length = s.length;
for (var j = 0; j < s.length; j++) {
wikidialogButtonData[j] = s[j].substring(0,s[j].length - 1);
a += ((j == 0) ? ' < ' : ' , ') + s[j].substring(0,s[j].search(/[\:&]/));
}
}
return $(document.createElement('button')).attr('type','button').addClass(this.className).html(b).attr('title',a)
.data('wikidialogButtonData',wikidialogButtonData).click(makeButtonHandler(wikidialogButtonData));
});
//
// [[Template:Dialog/ifsupported|ifsupported]]
//
if (sessionStorage) {
$('.wikidialog-alternative').css('display','none');
$('.wikidialog-dependent').css('display','inline');
}
};
}
window.wikidialog.show();
});
kf5ar2w4iv1b1d2gw7349hg8jos51ty
मिडियाविकी:Gadget-CommentsInLocalTime.js
8
4159
14553
2009-01-22T04:28:43Z
Oren0
3638
Create "Comments in Local Time" gadget from "Localize Comments" script per discussion at [[WP:GP]]
14553
javascript
text/javascript
// _________________________________________________________________________________________
// | |
// | === WARNING: GLOBAL GADGET FILE === |
// | Changes to this page affect many users. |
// | Please discuss changes on the talk page or on [[Wikipedia_talk:Gadget]] before editing. |
// |_________________________________________________________________________________________|
//
// Imported from version 265100813 as of January 19, 2009 from [[User:Gary King/localize comments.js]]
// This script changes timestamps such as those in comments to be relative to the local time. See [[Wikipedia:Comments in Local Time]]
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours())), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + " 1, 2001");
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
0m9omj4a6nku8c1qgt3az39pxf0r8r4
14554
14553
2009-01-25T20:59:57Z
Oren0
3638
replace with import per editprotected request
14554
javascript
text/javascript
// _________________________________________________________________________________________
// | |
// | === WARNING: GLOBAL GADGET FILE === |
// | Changes to this page affect many users. |
// | Please discuss changes on the talk page or on [[Wikipedia_talk:Gadget]] before editing. |
// |_________________________________________________________________________________________|
//
// Imported from [[User:Gary King/localize comments.js]]
// This script changes timestamps such as those in comments to be relative to the local time. See [[Wikipedia:Comments in Local Time]]
importScript('User:Gary King/localize comments.js');
s2yn4skygc8rp5rqb68j8t2v6m77vjf
14555
14554
2009-01-27T00:22:59Z
Nihiltres
3639
Update pointer to script per editprotected on talk by [[User:Gary King|Gary King]]; also add note in header about move
14555
javascript
text/javascript
// _________________________________________________________________________________________
// | |
// | === WARNING: GLOBAL GADGET FILE === |
// | Changes to this page affect many users. |
// | Please discuss changes on the talk page or on [[Wikipedia_talk:Gadget]] before editing. |
// |_________________________________________________________________________________________|
//
// Imported from [[User:Gary King/localize comments.js]] (since moved to [[User:Gary King/comments in local time.js]])
// This script changes timestamps such as those in comments to be relative to the local time. See [[Wikipedia:Comments in Local Time]]
importScript('User:Gary King/comments in local time.js');
2n8v3gadf9e3mqy0y157zeerel38lkq
14556
14555
2010-01-26T15:36:02Z
Adrignola
502
3 revisions from [[:w:MediaWiki:Gadget-CommentsInLocalTime.js]]: new gadget
14555
javascript
text/javascript
// _________________________________________________________________________________________
// | |
// | === WARNING: GLOBAL GADGET FILE === |
// | Changes to this page affect many users. |
// | Please discuss changes on the talk page or on [[Wikipedia_talk:Gadget]] before editing. |
// |_________________________________________________________________________________________|
//
// Imported from [[User:Gary King/localize comments.js]] (since moved to [[User:Gary King/comments in local time.js]])
// This script changes timestamps such as those in comments to be relative to the local time. See [[Wikipedia:Comments in Local Time]]
importScript('User:Gary King/comments in local time.js');
2n8v3gadf9e3mqy0y157zeerel38lkq
14557
2008-02-27T15:33:45Z
Gary King
3640
fixing
14557
javascript
text/javascript
//Localized time/date script
function numToMonth(num) {
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month) {
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function adjustTime(str, hour, minute, day, month, year, offset, s) {
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var timeStr = "";
if (time.getHours()<10) {timeStr += "0";}
timeStr += parseInt(time.getHours()) + ":";
if (time.getMinutes()<10) {timeStr += "0";}
timeStr += parseInt(time.getMinutes());
timeStr += ", ";
timeStr += time.getDate();
timeStr += " ";
timeStr += numToMonth(time.getMonth());
timeStr += " ";
timeStr += time.getFullYear();
timeStr += " (UTC";
var offset = -1*time.getTimezoneOffset()/60;
if (offset >= 0) {timeStr += "+";}
timeStr += offset + ")";
return timeStr;
}
function adjustTime2(str, hour, minute, month, day, year, offset, s) {
return adjustTime(str, hour, minute, day, month, year, offset, s);
}
addOnloadHook(function() {
if (document.title.indexOf("Editing ") == 0) {
return;
}
if (document.location.href.indexOf("action=history") != -1) {
return;
}
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0) {
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
/* if (document.location.href.indexOf("&action=history") != -1) {
var newDoc = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), ([A-Z][a-z]+) (\d{1,2}), (\d{4})/g, adjustTime2);
document.getElementById("bodyContent").innerHTML = newDoc;
}*/
});
a8nsu1sn9acx4k963eic7c1jnryhx9t
14558
14557
2008-02-28T22:15:26Z
Gary King
3640
fixing
14558
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var timeStr = "";
if (time.getHours()<10) {timeStr += "0";}
timeStr += parseInt(time.getHours()) + ":";
if (time.getMinutes()<10) {timeStr += "0";}
timeStr += parseInt(time.getMinutes());
timeStr += ", ";
timeStr += time.getDate();
timeStr += " ";
timeStr += numToMonth(time.getMonth());
timeStr += " ";
timeStr += time.getFullYear();
timeStr += " (UTC";
var offset = -1*time.getTimezoneOffset()/60;
if (offset >= 0) {timeStr += "+";}
timeStr += offset + ")";
return timeStr;
}
function adjustTime2(str, hour, minute, month, day, year, offset, s)
{
return adjustTime(str, hour, minute, day, month, year, offset, s);
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
ibl4acacdvnkm8oj4efalat6zi454a6
14559
14558
2008-02-28T22:20:00Z
Gary King
3640
fixing
14559
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var timeStr = "";
if (time.getHours()<10)
timeStr += "0";
timeStr += parseInt(time.getHours()) + ":";
if (time.getMinutes()<10)
timeStr += "0";
timeStr += parseInt(time.getMinutes());
timeStr += ", ";
timeStr += time.getDate();
timeStr += " ";
timeStr += numToMonth(time.getMonth());
timeStr += " ";
timeStr += time.getFullYear();
timeStr += " (UTC";
var offset = -1*time.getTimezoneOffset()/60;
if (offset >= 0)
timeStr += "+";
timeStr += offset + ")";
return timeStr;
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
evdustshiy264lppuybppwjwnap8lx7
14560
14559
2008-02-28T22:28:29Z
Gary King
3640
fixing
14560
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var timeStr = "";
// Hours
var hours = time.getHours();
var ampm = 'am';
if (hours == 0)
hours = 12;
if (hours > 11)
ampm = 'pm';
if (hours > 12)
hours -= 12;
timeStr += leadng_zero(parseInt(hours)) + ":";
// Minutes
if (time.getMinutes()<10)
timeStr += "0";
timeStr += parseInt(time.getMinutes());
timeStr += ", ";
// Day
timeStr += time.getDate();
timeStr += " ";
// Month
timeStr += numToMonth(time.getMonth());
timeStr += " ";
// Year
timeStr += time.getFullYear();
// Timezone
timeStr += " (UTC";
var offset = -1*time.getTimezoneOffset()/60;
if (offset >= 0)
timeStr += "+";
timeStr += offset + ")";
return timeStr;
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
iiab77vctut3ukrsbf2g99sm3hff3dw
14561
14560
2008-02-28T22:29:28Z
Gary King
3640
fixing
14561
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var timeStr = "";
// Hours
var hours = time.getHours();
var ampm = 'am';
if (hours == 0)
hours = 12;
if (hours > 11)
ampm = 'pm';
if (hours > 12)
hours -= 12;
timeStr += leading_zero(parseInt(hours)) + ":";
// Minutes
if (time.getMinutes()<10)
timeStr += "0";
timeStr += parseInt(time.getMinutes());
timeStr += ", ";
// Day
timeStr += time.getDate();
timeStr += " ";
// Month
timeStr += numToMonth(time.getMonth());
timeStr += " ";
// Year
timeStr += time.getFullYear();
// Timezone
timeStr += " (UTC";
var offset = -1*time.getTimezoneOffset()/60;
if (offset >= 0)
timeStr += "+";
timeStr += offset + ")";
return timeStr;
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
eptp1tvg2edoyl4pkli380hqp9m1smh
14562
14561
2008-02-28T22:34:00Z
Gary King
3640
fixing
14562
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var timeStr = "";
// Hours
var hours = time.getHours();
var ampm = 'am';
if (hours == 0)
hours = 12;
if (hours > 11)
ampm = 'pm';
if (hours > 12)
hours -= 12;
timeStr += parseInt(hours) + ":";
// Minutes
if (time.getMinutes()<10)
timeStr += "0";
timeStr += parseInt(time.getMinutes()) + ' ' + ampm + ', ';
// Day
timeStr += time.getDate() + ' ';
// Month
timeStr += numToMonth(time.getMonth()) + ' ';
// Year
timeStr += time.getFullYear();
// Timezone
timeStr += " (UTC";
var offset = -1*time.getTimezoneOffset()/60;
if (offset >= 0)
timeStr += "+";
timeStr += offset + ")";
return timeStr;
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
gpg7876smbx0v6t9bpmt6lqmzh6vf0v
14563
14562
2008-02-28T22:41:17Z
Gary King
3640
fixing
14563
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = numToMonth(time.getMonth());
var day = time.getDate();
var hour = leading_zero(parseInt(hours));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC-' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
12xsckivtd6cu2pdkgfkjaf3wtzodr6
14564
14563
2008-02-28T22:42:09Z
Gary King
3640
fixing
14564
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = time.getMonth();
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours());
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC-' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
835moh2kkrsj46rvy4w4tg49w1yq473
14565
14564
2008-02-28T22:42:38Z
Gary King
3640
fixing
14565
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = time.getMonth();
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC-' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
822j6hgffeyuweauiyyjxr2vmduw1c8
14566
14565
2008-02-28T22:43:46Z
Gary King
3640
fixing
14566
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = time.getMonth();
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
9h1arbwysp6ttri4laa4lzueihreccr
14567
14566
2008-02-28T22:44:11Z
Gary King
3640
fixing
14567
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth());
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
ttn9ea0ym0ed7vjkcwi55p34kyjnwqb
14568
14567
2008-02-28T22:46:30Z
Gary King
3640
fixing
14568
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = numToMonth(time.getMonth());
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
1shg6aebdlx1xxe7a4fve8545slvzrz
14569
14568
2008-02-28T22:48:33Z
Gary King
3640
fixing
14569
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = time.getMonth() + 1;
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
g87zqmshxl5d1ykqts8pd34ugre4tna
14570
14569
2008-02-28T22:49:03Z
Gary King
3640
fixing
14570
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "Janurary";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
jxnvqhvp8rcdzhkxxfjo9wy4pqz0tvk
14571
14570
2008-02-29T03:13:31Z
Gary King
3640
fixing
14571
javascript
text/javascript
//Localized time/date script
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// 2001-01-01, 12:00 am (UTC-5)
return year + '-' + month + '-' + day + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
jbmg14qynhsgt7y01iqgmo3paqjms1j
14572
14571
2008-02-29T06:46:18Z
Gary King
3640
fixing
14572
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getYear() && month == today.getMonth() && day == today.getDate())
var date = 'today';
else if (year == yesterday.getYear() && month == yesterday.getMonth() && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
rpygwud8i52g7qor9d45clbcvkuyrb4
14573
14572
2008-02-29T06:47:41Z
Gary King
3640
fixing
14573
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getYear() && month == leading_zero(today.getMonth()) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getYear() && month == leading_zero(yesterday.getMonth()) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
14lsaxiykplgawxlmowqfg31dp65ax2
14574
14573
2008-02-29T06:50:00Z
Gary King
3640
fixing
14574
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
spxwjg4wogwi82986xjw7br3tgu604d
14575
14574
2008-02-29T06:50:38Z
Gary King
3640
fixing
14575
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
45ycx727k48s227iicsvuhaukdg9qy9
14576
14575
2008-02-29T06:53:01Z
Gary King
3640
fixing
14576
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
alert('Today is ' + today.getFullYear() + '-' + leading_zero(today.getMonth() + 1) + '-' + today.getDate());
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
kzpxmk2ai9e80hx7u08ym3ztcn0893n
14577
14576
2008-02-29T06:54:59Z
Gary King
3640
fixing
14577
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')' + ' (Yesterday was ' + yesterday.getFullYear() + '-' + leading_zero(yesterday.getMonth() + 1) + '-' + yesterday.getDate() + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
0a7w37z5gaotuscnw6kvuhd124g798x
14578
14577
2008-02-29T07:00:11Z
Gary King
3640
fixing
14578
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')' + ' (' + year == today.getFullYear() + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
96kw5ksch1qvq5j7spkltjtyvli0msn
14579
14578
2008-02-29T07:08:51Z
Gary King
3640
fixing
14579
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')' + ' (' + parseInt(year) == parseInt(today.getFullYear()) + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
ksw9h283zotlxypdihav9c7u67dsod1
14580
14579
2008-02-29T07:10:13Z
Gary King
3640
fixing
14580
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')' + ' (' + parseInt(year) + ')';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
l3gke43iazvndlgik9614vh2kogxq7p
14581
14580
2008-02-29T07:10:39Z
Gary King
3640
fixing
14581
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
7isejvu3alt2awiy6rv9f1ocqllplcz
14582
14581
2008-02-29T07:11:11Z
Gary King
3640
fixing
14582
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == today.getDate())
var date = 'Yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
5llknxvqgyobrphr79th6kf76iddg7i
14583
14582
2008-02-29T07:11:36Z
Gary King
3640
fixing
14583
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
var date = year + '-' + month + '-' + day;
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
2iz1rh2hlcg16lv1crm0onsrmool69n
14584
14583
2008-02-29T07:17:20Z
Gary King
3640
fixing
14584
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + ', ';
}
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
0oscmqw3qhmkqkzhamzhfv367ubdott
14585
14584
2008-02-29T07:18:21Z
Gary King
3640
fixing
14585
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week;
}
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
k4eixjd4ql8gpr5q2v28lr9jzeuxspr
14586
14585
2008-02-29T07:19:28Z
Gary King
3640
fixing
14586
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week;
}
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
ocg4esr79alts54rio13lozxlari4g1
14587
14586
2008-02-29T07:20:02Z
Gary King
3640
fixing
14587
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week;
}
// 2001-01-01, 12:00 am (UTC-5)
return date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
l1jveu475eujk8bz23fvmtqajseq7jo
14588
14587
2008-02-29T07:22:15Z
Gary King
3640
fixing
14588
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week;
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
eg7frtlhgirbrpeq9knfr9ue159bgxy
14589
14588
2008-02-29T07:33:27Z
Gary King
3640
fixing
14589
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
odtmfzp586gxrbrz45emxp5ec9tp4mf
14590
14589
2008-02-29T07:36:45Z
Gary King
3640
fixing
14590
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
var difference_in_seconds = today.getTime() - time.getTime();
var Math.ceil(difference_in_days) = difference_in_seconds / 1000 / 60 / 60 / 24;
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
71mn3xk1rtn7n6hxg8xkh9u8k1ti883
14591
14590
2008-02-29T07:37:32Z
Gary King
3640
fixing
14591
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
axb1gw1mp32rqiofmdjm5rsd0w3q7b3
14592
14591
2008-02-29T07:46:21Z
Gary King
3640
fixing
14592
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHour(0);
today.setMinute(0);
today.setSecond(0);
time.setHour(0);
time.setMinute(0);
time.setSecond(0);
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
kmeq2uq85wvjztiespeystzjufmcr74
14593
14592
2008-02-29T07:47:32Z
Gary King
3640
fixing
14593
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
omu5ue5p6ldguky8elrw3iqkvr4espp
14594
14593
2008-02-29T08:02:03Z
Gary King
3640
fixing
14594
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago + ' (' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds() + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
jaund01d733awtwj52i8mcx1tsrdbga
14595
14594
2008-02-29T08:04:22Z
Gary King
3640
fixing
14595
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago + ' (' + today.getFullYear() + '-' + time.getMonth() + '-' + today.getDate() + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
9av648p11v1ip30r3yi0nbxq3bf46uv
14596
14595
2008-02-29T08:05:03Z
Gary King
3640
fixing
14596
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago + ' (' + time.getFullYear() + '-' + time.getMonth() + '-' + time.getDate() + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
ktopdh594qn3ft1fpcbrbjym4j88msx
14597
14596
2008-02-29T08:05:46Z
Gary King
3640
fixing
14597
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_seconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_seconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago + ' (' + time.getTime() + ': ' + time.getFullYear() + '-' + time.getMonth() + '-' + time.getDate() + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
966iv3cqw1iz9azv7kq2xszk264w96k
14598
14597
2008-02-29T08:07:26Z
Gary King
3640
fixing
14598
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
var yesterday_day = yesterday.getDate();
yesterday.setDate(yesterday_day - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_milliseconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_milliseconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago + ' (' + today.getTime() - time.getTime() + ': ' + time.getFullYear() + '-' + time.getMonth() + '-' + time.getDate() + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
1o6ngv6e8mo153xoau1hc2av6ytx79e
14599
14598
2008-02-29T08:12:31Z
Gary King
3640
fixing
14599
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_milliseconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_milliseconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago + ' (' + today.getTime() - time.getTime() + ': ' + time.getFullYear() + '-' + time.getMonth() + '-' + time.getDate() + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
rlhwplhbg8iseq7xouwnubamrb1pdos
14600
14599
2008-02-29T08:14:46Z
Gary King
3640
fixing
14600
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_milliseconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_milliseconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.ceil(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago + ' (' + today.getTime() + ':' + time.getTime() + ': ' + time.getFullYear() + '-' + time.getMonth() + '-' + time.getDate() + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
cscy8zgk0z2irbfxgsfc60v4uzfa8q2
14601
14600
2008-02-29T08:16:46Z
Gary King
3640
fixing
14601
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_milliseconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_milliseconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.round(difference_in_days);
if (difference_in_days <= 7)
var days_ago = ' (' + difference_in_days + ' days ago)';
else
var days_ago = '';
var date = year + '-' + month + '-' + day + ', ' + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
return '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
7lwtlvboqlekhxtx8p6ajwjtkmp6yqe
14602
14601
2008-02-29T16:12:31Z
Gary King
3640
fixing
14602
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_milliseconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_milliseconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.round(difference_in_days);
var days_ago = ' (' + difference_in_days + ' days ago)';
if (difference_in_days <= 7)
var last = 'last ';
else
var last = '';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = '<span style="font-size: 90%;">' + date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')</span>'
return return_date.replace(' ', ' ');
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
jbmngokclfzccr74ic0aa5fdq6jfk52
14603
14602
2008-02-29T16:13:31Z
Gary King
3640
fixing
14603
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
var difference_in_milliseconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_milliseconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.round(difference_in_days);
var days_ago = ' (' + difference_in_days + ' days ago)';
if (difference_in_days <= 7)
var last = 'last ';
else
var last = '';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
1hbbpi7638yn1fqing4sf04puc94ow5
14604
14603
2008-02-29T16:21:12Z
Gary King
3640
fixing
14604
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var difference_in_milliseconds = today.getTime() - time.getTime();
var difference_in_days = difference_in_milliseconds / 1000 / 60 / 60 / 24;
difference_in_days = Math.round(difference_in_days);
if (difference_in_days <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var days_ago = ' (' + difference_in_days + ' days ago)';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
j3aw7dd1pvi6h0mtbmh04flx3ejnhit
14605
14604
2008-02-29T16:39:47Z
Gary King
3640
fixing
14605
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' years ago';
else
var years_ago = '';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' months ago';
else
var months_ago = '';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' days ago';
else
var days_ago = '';
var days_ago = ' (' + years_ago + months_ago + days_ago + ' days ago)';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
kh6osrs2cusnku2s89kb6ri0e6atdk7
14606
14605
2008-02-29T16:46:11Z
Gary King
3640
fixing
14606
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
else
var years_ago = '';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
else
var months_ago = '';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
else
var days_ago = '';
var days_ago = ' (' + years_ago + months_ago + days_ago + ' days ago)';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
edvqqj85weyo3ro5q351j3dgq6jvl6m
14607
14606
2008-02-29T16:49:17Z
Gary King
3640
fixing
14607
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference[] = years_ago;
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference[] = months_ago;
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference[] = days_ago;
}
var days_ago = ' (' + descriptive_difference.join(', ') + ')';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
3wxp7mgazdsd55cri4kgksg9fw0s11h
14608
14607
2008-02-29T16:51:37Z
Gary King
3640
fixing
14608
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var days_ago = ' (' + descriptive_difference.join(', ') + ')';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
gh0bx6yjv0o4yczxktrfose1x9nip72
14609
14608
2008-02-29T16:55:40Z
Gary King
3640
fixing
14609
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
new_today = new Date(today.getYear(), today.getMonth(), today.getDate());
new_time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = new_today.getTime() - new_time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(new_today.valueOf() - new_time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var days_ago = ' (' + descriptive_difference.join(', ') + ')';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
eayzqyg1d433q7vri18ucqiil6y5m3h
14610
14609
2008-02-29T16:56:03Z
Gary King
3640
fixing
14610
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var days_ago = ' (' + descriptive_difference.join(', ') + ')';
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + days_ago;
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
gh0bx6yjv0o4yczxktrfose1x9nip72
14611
14610
2008-02-29T16:56:54Z
Gary King
3640
fixing
14611
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var date = year + '-' + month + '-' + day + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
rhh3apydqunbtb2ahbwu449l0gdyruv
14612
14611
2008-02-29T16:58:44Z
Gary King
3640
fixing
14612
javascript
text/javascript
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
atf9clh2rw8c1r2kxqoakypy3lotqwr
14613
14612
2008-02-29T17:01:03Z
Gary King
3640
fixing
14613
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(' ', ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
rkypr2k25k1wm46sh9vay5iezue5cwg
14614
14613
2008-02-29T17:05:16Z
Gary King
3640
fixing
14614
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replaceAll(' ', ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
kor7qe3wjleskbonr5kiidywzlz2i08
14615
14614
2008-02-29T17:06:19Z
Gary King
3640
fixing
14615
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;">' + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
k42wzcp98ktv7ku2f7w9ryglpwn7ivo
14616
14615
2008-02-29T17:07:31Z
Gary King
3640
fixing
14616
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var return_date = date + ', ' + hour + ':' + minute + ' ' + ampm + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
azdfmuncvb6iyj472t7zrgnn908vm91
14617
14616
2008-02-29T17:08:39Z
Gary King
3640
fixing
14617
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
if (difference.getYear() - 70 > 0)
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
if (difference.getMonth() > 0)
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
if (difference.getDate() > 0)
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
var descriptive_difference = [years_ago, months_ago, days_ago]
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
famdpm0cxfu45l90k2stoudco61ahpa
14618
14617
2008-02-29T17:12:06Z
Gary King
3640
fixing
14618
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
0ldeblyk225dlow2f809nkt40bbhmoi
14619
14618
2008-03-04T05:30:14Z
Gary King
3640
fixing
14619
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == 00)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
47d3oq67035xfv0d03u6j1wqf0xmwd3
14620
14619
2008-03-04T05:30:57Z
Gary King
3640
fixing
14620
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour < 1)
alert(hour);
if (hour == 0)
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
q6uqvf37rqo1evu9ahlrvu5uae8awvc
14621
14620
2008-03-04T05:31:16Z
Gary King
3640
fixing
14621
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
dr5a3lk5masttlmxseh5xpkxmsiemlx
14622
14621
2008-04-02T16:26:03Z
Gary King
3640
fixing
14622
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
iettweg9k1guvm8zvjdnnt9y49mr4o9
14623
14622
2008-04-02T17:14:23Z
Gary King
3640
fixing
14623
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
g0qkwkkuwvx9z3tj6vk5sid7ojn7pks
14624
14623
2008-04-02T17:29:59Z
Gary King
3640
fixing
14624
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
e9lmx9wl2fti217mejnyfle45pjnstk
14625
14624
2008-04-02T17:30:32Z
Gary King
3640
fixing
14625
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
07pe405o1b5wmvpwa543sxrrp519hpk
14626
14625
2008-04-02T17:31:24Z
Gary King
3640
fixing
14626
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
ffvb22q9vewgndxh7yzvns92ojjnoaa
14627
14626
2008-04-02T17:34:00Z
Gary King
3640
fixing
14627
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>' + '(<span title="' + month + ' / ' + monthToNum(month) + '">debug</span>)';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
ref7x9gyagnxc2t8ow4cm2qgo1mukbv
14628
14627
2008-04-02T17:34:41Z
Gary King
3640
fixing
14628
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + month + ' / ' + monthToNum(month) + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
a28mjofyymd2s9b9u66qi9u0d6j90vu
14629
14628
2008-04-02T17:39:29Z
Gary King
3640
fixing
14629
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
a0qib0icoluhf5navfjiw3u6xqhio04
14630
14629
2008-04-02T17:40:33Z
Gary King
3640
fixing
14630
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
rre0hyv0s8uwa3otwx3qx65j9w3h1w9
14631
14630
2008-04-02T17:48:27Z
Gary King
3640
fixing
14631
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
// + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
rxrfs9fpifb8i2f8ebpwln470owh5aa
14632
14631
2008-04-02T19:08:14Z
Gary King
3640
fixing
14632
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_month + ' / ' + month + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
hfzwongcoe7achg2pa307dtl7vtn6u6
14633
14632
2008-04-02T19:09:27Z
Gary King
3640
fixing
14633
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
rre0hyv0s8uwa3otwx3qx65j9w3h1w9
14634
14633
2008-04-02T19:12:47Z
Gary King
3640
fixing
14634
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
if (old_day == '31' && old_hour < abs(utc_offset))
var day = '30';
else
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
tdpeu9rhcd38vsbsmtsnx80qs7r829y
14635
14634
2008-04-02T19:13:13Z
Gary King
3640
fixing
14635
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
if (old_day == '31' && old_hour < Math.abs(utc_offset))
var day = '30';
else
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
nwwux9gs6zjaglr2jay69v1ccc0kp93
14636
14635
2008-04-02T19:14:22Z
Gary King
3640
fixing
14636
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
var month = monthToNum(old_month);
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
go6gers5vngpmxdwtgl1nq2hqv14grp
14637
14636
2008-04-02T19:14:50Z
Gary King
3640
fixing
14637
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
var month = leading_zero(monthToNum(old_month) + 1);
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
l7992ca7ke79f1mgztka7xjr4xi545f
14638
14637
2008-04-02T19:17:30Z
Gary King
3640
fixing
14638
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
var month = leading_zero(monthToNum(old_month) + 1);
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
5xtwr3d0bnn8s1ut5bmmxxlq644sh4x
14639
14638
2008-04-02T19:17:55Z
Gary King
3640
fixing
14639
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + old_day + ' / ' + day + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
jl4x3nv49hbuwju7gmeqql9i79dkk45
14640
14639
2008-04-02T19:20:54Z
Gary King
3640
fixing
14640
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + ' (<span title="' + utc_offset + '">debug</span>)' + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
j6nymabh4ma45r0zrvi6ndyh5i5hxl8
14641
14640
2008-04-03T22:36:57Z
Gary King
3640
fixing
14641
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
aq1auok9ie6g5vn0rmvxcgqcopc9g0d
14642
14641
2008-04-17T19:50:45Z
Gary King
3640
remove if
14642
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
// if (hour == '00')
// hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
k7w0n5m4ofepkac1kv3f5ekm4wknk0j
14643
14642
2008-04-17T19:51:38Z
Gary King
3640
readd
14643
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
ol4f06sxk9nqv8nct3np1nmirk0vuc9
14644
14643
2008-04-25T06:32:32Z
Gary King
3640
adding non-breaking spaces for the entire string
14644
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
fz3lpvbbdix5uicdwqxr1b29q4gi0zb
14645
14644
2008-04-27T02:42:02Z
Gary King
3640
work for Edit pages as well
14645
javascript
text/javascript
addOnloadHook(function()
{
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0 || document.title.indexOf("Editing ") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
n6rg7b6rflswb0r3953l5dr0ql4skho
14646
14645
2008-04-27T02:42:49Z
Gary King
3640
[[WP:UNDO|Undid]] revision 208447270 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]]) actually, don't do that otherwise people might get confused
14646
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
fz3lpvbbdix5uicdwqxr1b29q4gi0zb
14647
14646
2008-04-30T10:29:15Z
Gary King
3640
switching to using wgCanonicalNamespace
14647
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
// if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
if (wgCanonicalNamespace == 'Talk' || wgCanonicalNamespace == 'Project' || wgCanonicalNamespace == 'User')
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
foy2n23oiedqttl2b49squi827cbvag
14648
14647
2008-04-30T10:42:15Z
Gary King
3640
adding Project_talk
14648
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
// if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
if (wgCanonicalNamespace == 'Project' || wgCanonicalNamespace == 'Project_talk' || wgCanonicalNamespace == 'Talk' || wgCanonicalNamespace == 'User' || wgCanonicalNamespace == 'User_talk')
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
medwtbbu3pddq00se7xvgrrpcg52t5n
14649
14648
2008-04-30T11:53:31Z
Gary King
3640
updating
14649
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0 || document.location.href.indexOf("action=history") != -1)
return;
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
tab7w11xwy7fdts1pebqj9hcrvwzu18
14650
14649
2008-04-30T21:28:34Z
Gary King
3640
edit
14650
javascript
text/javascript
addOnloadHook(function()
{
if (document.location.href.indexOf("action=edit") != -1 || document.location.href.indexOf("action=history") != -1)
return;
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
f6hkdpwccu7spjam0yorui6ndqojw5b
14651
14650
2008-04-30T21:29:30Z
Gary King
3640
disable for logs
14651
javascript
text/javascript
addOnloadHook(function()
{
if (document.location.href.indexOf("action=edit") != -1 || document.location.href.indexOf("action=history") != -1 || document.location.href.indexOf('title=Special:Log') != -1)
return;
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
24qudyc1corqh50o8loglpc2sb9lchs
14652
14651
2008-05-01T18:16:46Z
Gary King
3640
use an array
14652
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('&diff=', 'action=edit', 'action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
acyydpgiedkwoq5uv033itiahstgaz0
14653
14652
2008-05-01T18:18:48Z
Gary King
3640
cl
14653
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('&diff=', 'action=edit', 'action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
document.getElementById("bodyContent").innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
e3zg1vqc9lyumuynzm3zgaia61mginn
14654
14653
2008-05-01T18:41:51Z
Gary King
3640
readding to diff pages
14654
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=edit', 'action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
document.getElementById("bodyContent").innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
1ppyzezlyyxr5nnz3p68yhhi0yjc5er
14655
14654
2008-05-01T19:04:48Z
Gary King
3640
fixing major issue with previews
14655
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=edit', 'action=history', 'title=Special:Log', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
document.getElementById("bodyContent").innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
iw0x6a27yez4yiq2rp7nau930kmleag
14656
14655
2008-05-01T19:39:46Z
Gary King
3640
works for previews
14656
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
document.getElementById(unique_url ? unique_url : 'bodyContent').innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
bdkr8hsz13jnevmbe3897z6a69x6y4p
14657
14656
2008-05-01T19:41:14Z
Gary King
3640
test
14657
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
alert(unique_url);
document.getElementById(unique_url ? unique_url : 'bodyContent').innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
dn2fkp58sevucpvfwt7d9b2m9o8gkgf
14658
14657
2008-05-01T19:43:16Z
Gary King
3640
update
14658
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
document.getElementById(unique_url ? unique_url : 'bodyContent').innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
bdkr8hsz13jnevmbe3897z6a69x6y4p
14659
14658
2008-05-01T19:44:19Z
Gary King
3640
update
14659
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
document.getElementById((unique_url ? unique_url : 'bodyContent')).innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
d6eh6gr2i5dnzqmj8qbt6xzzb7thhq6
14660
14659
2008-05-01T19:44:43Z
Gary King
3640
update
14660
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
document.getElementById('bodyContent').innerHTML = document.getElementById("bodyContent").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
grxrz23aeedfij0ubxuv30gdk2xcjdk
14661
14660
2008-05-01T19:45:09Z
Gary King
3640
update
14661
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
document.getElementById(unique_url ? unique_url : 'bodyContent').innerHTML = document.getElementById(unique_url ? unique_url : 'bodyContent').innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
b6863enmgb0r603rwkcnchvvy7hw6cr
14662
14661
2008-05-02T06:03:19Z
Gary King
3640
using a var, "element_id"
14662
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
f8sd1f34sdlo0thowyyjbyhki1afgn9
14663
14662
2008-05-03T02:00:39Z
Gary King
3640
comment
14663
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
// document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
tizzi9790at7ddzrh5c8aqihet5n6ob
14664
14663
2008-05-03T02:01:23Z
Gary King
3640
cl
14664
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
f8sd1f34sdlo0thowyyjbyhki1afgn9
14665
14664
2008-05-03T02:07:32Z
Gary King
3640
column content
14665
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'column-content';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
bo7fklgh0c474rj5ooye1vb95uevnac
14666
14665
2008-05-03T02:08:05Z
Gary King
3640
[[WP:UNDO|Undid]] revision 209826909 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14666
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
f8sd1f34sdlo0thowyyjbyhki1afgn9
14667
14666
2008-05-03T02:12:07Z
Gary King
3640
[[WP:UNDO|Undid]] revision 209826999 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14667
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'column-content';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
bo7fklgh0c474rj5ooye1vb95uevnac
14668
14667
2008-05-03T02:13:03Z
Gary King
3640
[[WP:UNDO|Undid]] revision 209827561 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14668
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
f8sd1f34sdlo0thowyyjbyhki1afgn9
14669
14668
2008-05-03T02:14:58Z
Gary King
3640
Reverted to revision 208447403 by [[Special:Contributions/Gary King|Gary King]].
14669
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
fz3lpvbbdix5uicdwqxr1b29q4gi0zb
14670
14669
2008-05-03T02:16:20Z
Gary King
3640
Reverted to revision 195739027 by [[Special:Contributions/Gary King|Gary King]].
14670
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, hour, minute, day, month, year, offset, s)
{
var time = new Date();
time.setUTCHours(hour);
time.setUTCMinutes(minute);
time.setUTCDate(day);
time.setUTCMonth(monthToNum(month));
time.setUTCFullYear(year);
var year = time.getFullYear();
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
// 2001-01-01, 12:00 am (UTC-5)
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
// return_date = return_date.replace(/ /g, ' ');
return '<span style="font-size: 90%;">' + return_date + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num==0) {return "January";}
else if (num==1) {return "February";}
else if (num==2) {return "March";}
else if (num==3) {return "April";}
else if (num==4) {return "May";}
else if (num==5) {return "June";}
else if (num==6) {return "July";}
else if (num==7) {return "August";}
else if (num==8) {return "September";}
else if (num==9) {return "October";}
else if (num==10) {return "November";}
else if (num==11) {return "December";}
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
dr5a3lk5masttlmxseh5xpkxmsiemlx
14671
14670
2008-05-03T02:16:43Z
Gary King
3640
revert
14671
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
f8sd1f34sdlo0thowyyjbyhki1afgn9
14672
14671
2008-05-05T23:54:44Z
Gary King
3640
Reverted to revision 209318628 by [[Special:Contributions/Gary King|Gary King]].
14672
javascript
text/javascript
addOnloadHook(function()
{
if (document.location.href.indexOf("action=edit") != -1 || document.location.href.indexOf("action=history") != -1 || document.location.href.indexOf('title=Special:Log') != -1)
return;
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
24qudyc1corqh50o8loglpc2sb9lchs
14673
14672
2008-05-05T23:55:38Z
Gary King
3640
Reverted to revision 203155326 by [[Special:Contributions/Gary King|Gary King]].
14673
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour == '00')
hour = 12;
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time.replace(/ /g, ' ') + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
aq1auok9ie6g5vn0rmvxcgqcopc9g0d
14674
14673
2008-05-05T23:56:30Z
Gary King
3640
Reverted to revision 208447403 by [[Special:Contributions/Gary King|Gary King]].
14674
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
fz3lpvbbdix5uicdwqxr1b29q4gi0zb
14675
14674
2008-05-05T23:57:54Z
Gary King
3640
work for User
14675
javascript
text/javascript
addOnloadHook(function()
{
if (document.title.indexOf("Editing ") == 0)
return;
if (document.location.href.indexOf("action=history") != -1)
return;
if (document.title.indexOf("Talk:") == 0 || document.title.indexOf("talk:") != -1 || document.title.indexOf("Wikipedia:") == 0 || document.title.indexOf("User:") == 0)
{
var newDoc = document.getElementById("column-content").innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
document.getElementById("column-content").innerHTML = newDoc;
}
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
0quhr6fn3hiph8gfezjxu00hojc2ggq
14676
14675
2008-05-05T23:58:18Z
Gary King
3640
revert
14676
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
f8sd1f34sdlo0thowyyjbyhki1afgn9
14677
14676
2008-05-06T00:05:37Z
Gary King
3640
mv
14677
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
bxatol6hj2p9d5iq6gd7khbr9we045g
14678
14677
2008-05-06T00:13:50Z
Gary King
3640
rm span
14678
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date.replace(/ /g, ' ');
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
el9rham8d2pnl2yzwwz4ii2le9r66ll
14679
14678
2008-05-06T00:19:02Z
Gary King
3640
readd span
14679
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'title=Special:Log');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
p96gopc0rphy0pndkaugtlw27randvb
14680
14679
2008-05-10T05:54:18Z
Gary King
3640
disable for ALL Special: pages
14680
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', 'Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
jrqudiodxewco7yx43kb6m04tjcxqzn
14681
14680
2008-05-27T02:19:46Z
Gary King
3640
minor fix for special pages
14681
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', '/Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
d9cerq8trexza7hkfsrwkvodpuf8hjf
14682
14681
2008-05-29T15:22:40Z
Gary King
3640
adding more text to check in the URL
14682
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', '/Special:', 'title=Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
// + ' (<span title="' + utc_offset + '">debug</span>)'
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
function numToMonth(num)
{
if (num == 0)
return 'January';
else if (num == 1)
return 'February';
else if (num == 2)
return 'March';
else if (num == 3)
return 'April';
else if (num == 4)
return 'May';
else if (num == 5)
return 'June';
else if (num == 6)
return 'July';
else if (num == 7)
return 'August';
else if (num == 8)
return 'September';
else if (num == 9)
return 'October';
else if (num == 10)
return 'November';
else if (num == 11)
return 'December';
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
57tn2ia7thcykmk303nop9k0em5dgxu
14683
14682
2008-06-01T03:34:05Z
Gary King
3640
removing code that did nothing
14683
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', '/Special:', 'title=Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour < Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
8a2yoi6g1oj1v8agk1y3jwvwck25wb0
14684
14683
2008-06-01T04:19:18Z
Gary King
3640
fixing condition
14684
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', '/Special:', 'title=Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
// The following is for fringe cases
if (old_day == '31' && old_hour >= Math.abs(utc_offset))
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
// The above is for fringe cases
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
efqzd9jpyazfcqbdwpnl7owx212jl24
14685
14684
2008-06-01T04:23:08Z
Gary King
3640
removing part of a conditional
14685
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', '/Special:', 'title=Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
oi6tizp8ypzx58v914gubi5zjxs9rbh
14686
14685
2008-06-02T03:18:00Z
Gary King
3640
date testing
14686
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', '/Special:', 'title=Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
var d = new Date();
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
var d2 = new Date(); alert(d2.getTime() - d.getTime());
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
2yx5t0afbx7v1zfqrpuk9ib0lxh418h
14687
14686
2008-06-02T03:19:18Z
Gary King
3640
removing
14687
javascript
text/javascript
addOnloadHook(function()
{
var disabled_urls = new Array('action=history', '/Special:', 'title=Special:');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
oi6tizp8ypzx58v914gubi5zjxs9rbh
14688
14687
2008-07-19T07:22:31Z
Gary King
3640
removing from article namespace
14688
javascript
text/javascript
addOnloadHook(function()
{
if (wgNamespaceNumber == 0 or wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
5y5vnrv94nvq17n86igq98evyrogtgb
14689
14688
2008-07-19T07:24:01Z
Gary King
3640
removing article one
14689
javascript
text/javascript
addOnloadHook(function()
{
// wgNamespaceNumber == 0
if (wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
42g5uj4lr4xlam9uqvwxjezrxdjbrh4
14690
14689
2008-07-19T07:26:38Z
Gary King
3640
trying empty string
14690
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' or wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
d152b03a2v9nd8bx7bdaguzg4mekh3s
14691
14690
2008-07-19T07:29:26Z
Gary King
3640
adding article
14691
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == 'Article' or wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
38uxm0tkga77oliqaixnzsxkkdfebis
14692
14691
2008-07-19T07:30:35Z
Gary King
3640
blasted JS
14692
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == 'Article' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
8vpc8hw4p7j536yeeeh3sibgqjj5xtm
14693
14692
2008-07-19T07:32:31Z
Gary King
3640
empty?
14693
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
k9gjc8rq5p1lpy06tvatrssqg4sg17v
14694
14693
2008-08-15T21:11:03Z
Gary King
3640
adding mediawiki
14694
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
5oqkrlz5cpiiz4flkm8gvd9y8zrvhke
14695
14694
2008-08-31T06:25:42Z
Gary King
3640
commenting out code
14695
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(monthToNum(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
/* if (old_day == '31')
{
time.setMonth(monthToNum(old_month));
var month = leading_zero(monthToNum(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{*/
var month = leading_zero(time.getMonth() + 1);
var day = time.getDate();
// }
var hour = leading_zero(parseInt(time.getHours()));
var minute = leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function monthToNum(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
nupxnswi8o5e07rmfziq7xs3v4eu2mq
14696
14695
2008-08-31T20:07:10Z
Gary King
3640
renaming functions
14696
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number
return number
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
/* if (old_day == '31')
{
time.setMonth(convert_month_to_number(old_month));
var month = add_leading_zero(convert_month_to_number(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{*/
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
// }
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
idym5yc2w7qa5u3df0t6w6h8zsuwxub
14697
14696
2008-08-31T20:09:54Z
Gary King
3640
add in some semicolons
14697
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var year = time.getFullYear();
/* if (old_day == '31')
{
time.setMonth(convert_month_to_number(old_month));
var month = add_leading_zero(convert_month_to_number(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{*/
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
// }
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
t5j233suesl1po2dzbt8zynd1lfzvh6
14698
14697
2008-08-31T20:12:12Z
Gary King
3640
comments
14698
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
dbmleai56i72gqc4yvoqeqaabfmp15k
14699
14698
2008-09-01T04:17:52Z
Gary King
3640
try and fix
14699
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
aaddOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date bits to output
var year = time.getFullYear();
if (old_day == '31' && today.getDate() == '1')
{
time.setMonth(convert_month_to_number(old_month));
var month = add_leading_zero(convert_month_to_number(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date bits to output
var year = time.getFullYear();
if (old_day == '31' && today.getDate() == '1')
{
time.setMonth(convert_month_to_number(old_month));
var month = add_leading_zero(convert_month_to_number(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
s5r5q0110xrj2sqr1iolxx37npra1y1
14700
14699
2008-09-01T04:18:37Z
Gary King
3640
[[WP:UNDO|Undid]] revision 235519233 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14700
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
dbmleai56i72gqc4yvoqeqaabfmp15k
14701
14700
2008-09-01T04:19:55Z
Gary King
3640
try and fix
14701
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date bits to output
var year = time.getFullYear();
if (old_day == '31' && today.getDate() == '1')
{
time.setMonth(convert_month_to_number(old_month));
var month = add_leading_zero(convert_month_to_number(old_month) + 1);
time.setDate('30');
var day = '30';
}
else
{
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
7vizt33gsiw876ov9qgv553niwlsj8w
14702
14701
2008-09-01T04:21:08Z
Gary King
3640
remove forced date
14702
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date bits to output
var year = time.getFullYear();
if (old_day == '31' && today.getDate() == '1')
{
time.setMonth(convert_month_to_number(old_month));
var month = add_leading_zero(convert_month_to_number(old_month) + 1);
}
else
{
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
}
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
01g72h3rgjl9y6jjgzhmwn5m97z34vh
14703
14702
2008-09-01T04:22:05Z
Gary King
3640
only keep month in the if
14703
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date bits to output
var year = time.getFullYear();
if (old_day == '31' && today.getDate() == '1')
{
time.setMonth(convert_month_to_number(old_month));
var month = add_leading_zero(convert_month_to_number(old_month) + 1);
}
else
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
d2vpbk0n92b0y5ag52tzo3ej6k4k5fg
14704
14703
2008-09-01T04:23:13Z
Gary King
3640
Reverted to revision 235437626 by [[Special:Contributions/Gary King|Gary King]]; restoring.
14704
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
var today = new Date();
// yesterday
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
dbmleai56i72gqc4yvoqeqaabfmp15k
14705
14704
2008-09-01T04:24:26Z
Gary King
3640
moving today/yesterday up
14705
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
nnrjhr8brxbrd5j4q9gdfuu55jg8mev
14706
14705
2008-09-01T04:54:33Z
Gary King
3640
moving up even more to let everyone benefit
14706
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
s9cf5lgkfsbc0h3k1q4h2pet9zj0cj2
14707
14706
2008-09-01T04:57:58Z
Gary King
3640
fix
14707
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// Calculate as accurately as possible, difference in days and weeks
var difference = new Date(today.valueOf() - time.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years') + ' ago';
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months') + ' ago';
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days') + ' ago';
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
kkvnl5vsmepjqeyn194wi19ftaunhds
14708
14707
2008-11-22T03:20:53Z
Gary King
3640
fixing duplicate "ago"s and future dates
14708
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// The difference between today and the timestamp
var difference = '';
if (today.valueOf() >= time.valueOf())
difference = new Date(today.valueOf() - time.valueOf());
else if
difference = new Date(time.valueOf() - today.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ago)';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
krn9fy8tviu63n9lytpbjhzuwjh893x
14709
14708
2008-11-22T03:22:12Z
Gary King
3640
else
14709
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// The difference between today and the timestamp
var difference = '';
if (today.valueOf() >= time.valueOf())
difference = new Date(today.valueOf() - time.valueOf());
else
difference = new Date(time.valueOf() - today.valueOf());
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ago)';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
92d54n5sx725f0xylz60z7syux7w8mi
14710
14709
2008-11-22T03:25:39Z
Gary King
3640
fix the difference word
14710
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
if (days_ago <= 7)
var last = 'last ';
else
var last = '';
// The difference between today and the timestamp
var difference, difference_word = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
n0m92s9h10lt355eql11opzi7vbfubx
14711
14710
2009-01-15T23:57:59Z
Gary King
3640
removing "last" from future dates
14711
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
// The difference between today and the timestamp
var difference, difference_word = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(days_ago);
}
if (days_ago <= 7 && difference_word == 'ago')
var last = 'last ';
else
var last = '';
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
q6t3kujbil14czygn22fpr0g04ylxkd
14712
14711
2009-01-16T00:01:51Z
Gary King
3640
"new"
14712
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
// The difference between today and the timestamp
var difference, difference_word = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
if (days_ago <= 7 && difference_word == 'ago')
var last = 'last ';
else
var last = '';
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
lb7thpsg1r8uq5y6jzwa9rinocnqff4
14713
14712
2009-01-16T00:06:47Z
Gary King
3640
cleaner
14713
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
t2izien6mofed1l4n2us9wbpimy63o6
14714
14713
2009-01-16T00:20:07Z
Gary King
3640
"this" for future dates
14714
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2006");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
gzwnemiypblm63hm2gn5lfj91wm5ggq
14715
14714
2009-01-16T00:36:32Z
Gary King
3640
use the first year of the millenium
14715
javascript
text/javascript
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
var date = year + '-' + month + '-' + add_leading_zero(day) + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2001");
return tmp.getMonth();
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
kyntselz2f9uw1fcaxxkbkw3nj1ualg
14716
14715
2009-01-16T01:21:36Z
Gary King
3640
add date formatting
14716
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.format) == 'undefined')
LocalizeConfig.format = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.format)
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2001");
return tmp.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
noe4szkthra7qmqg9m1aal4kciranv0
14717
14716
2009-01-16T01:24:45Z
Gary King
3640
dateFormat
14717
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
var unique_url = false;
var wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date();
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear();
var month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours()));
var minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = milliseconds_ago / 1000 / 60 / 60 / 24;
days_ago = Math.round(days_ago);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat)
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2001");
return tmp.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
6t4hzz4mniltnc7elgqycftyr2t8olh
14718
14717
2009-01-16T01:42:46Z
Gary King
3640
shaving off some lines
14718
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours())), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat)
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2001");
return tmp.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
dyotf3lcmbmqfln1m670tunh6cip33f
14719
14718
2009-01-16T01:46:54Z
Gary King
3640
"Tomorrow"
14719
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(yesterday.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours())), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year = tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat)
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2001");
return tmp.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
ie5oxmqt3zb9eo4vql8ztdr9rqcbj7e
14720
14719
2009-01-16T01:47:40Z
Gary King
3640
add missing equals
14720
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(yesterday.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours())), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat)
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var tmp = new Date(month + " 1, 2001");
return tmp.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
glzucz2cm6oj00lmjxh0medmsfx87fu
14721
14720
2009-01-16T01:49:53Z
Gary King
3640
fix tomorrow
14721
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours())), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat)
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + " 1, 2001");
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
i1fr8klmketgl2akxzirksibfqhfl3y
14722
14721
2009-01-19T16:37:18Z
Gary King
3640
lowercase
14722
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = "0" + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = add_leading_zero(parseInt(time.getHours())), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return "<span style='font-size: 90%;' title='" + str + "'>" + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + " 1, 2001");
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
tjylbz291bri1uoos8jru1llu826sec
14723
14553
2009-01-25T20:31:52Z
Gary King
3640
minus symbol, and removing leading zeros for hours
14723
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
6rc3nipw8n2ncc7evdqqpdpl7pkuxaq
14724
14723
2009-01-25T20:43:35Z
Gary King
3640
fix abs
14724
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'ymd';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
957ih1lfh2otrkz9qnqzsxi17fd377v
14725
14554
2009-01-26T20:00:32Z
Gary King
3640
MAJOR: changing default from "ymd" to "dmy" as that's the default used by Wikipedia timestamps
14725
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
1deoy986nnu6dzniy5fkl4khvlq4zia
14726
14725
2009-01-26T20:17:06Z
Gary King
3640
removing small font, wrapping with class
14726
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
84cviea5bzxnxvlq6uqj61j5dynjwss
14727
14726
2009-01-26T20:29:14Z
Gary King
3640
moved [[User:Gary King/localize comments.js]] to [[User:Gary King/comments in local time.js]]
14726
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
84cviea5bzxnxvlq6uqj61j5dynjwss
14728
14555
2009-01-27T21:09:02Z
Gary King
3640
moving time to before date
14728
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + ' (UTC' + utc_offset + ')';
return '<span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
2x49uw8uq8bqbyatr8qgxefnqpjfusu
14729
14728
2009-01-27T21:09:29Z
Gary King
3640
removing extra space
14729
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
8ge7dczp7qdq16gux5u5n42y13lzx3e
14730
14729
2009-01-27T21:14:28Z
Gary King
3640
let's try 90% font size again
14730
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span class="localcomments" style="font-size: 90%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
5p2vxs3wzygx9pavqwnt75x4ooc8nu7
14731
14730
2009-01-27T21:15:14Z
Gary King
3640
default to 95% font size
14731
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span class="localcomments" style="font-size: 95%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
n8edty45lbbvs7aij00cxzqoxusvklu
14732
14731
2009-01-27T21:19:42Z
Gary King
3640
move day of week calculation
14732
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span class="localcomments" style="font-size: 95%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
i1t828tbvcqio3z602413bxtwdxf1xg
14733
14732
2009-01-27T21:20:16Z
Gary King
3640
no good, undoing
14733
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span class="localcomments" style="font-size: 95%;" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
n8edty45lbbvs7aij00cxzqoxusvklu
14734
14733
2009-01-27T21:37:32Z
Gary King
3640
removing fixed size as can't be overruled
14734
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
8ge7dczp7qdq16gux5u5n42y13lzx3e
14735
14734
2009-01-27T21:38:25Z
Gary King
3640
wrapping the 95% outside
14735
javascript
text/javascript
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalizeConfig.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
1dtij0qg9evhw0tac1ysoqqv9klor6v
14736
14735
2009-01-27T21:46:13Z
Gary King
3640
switch to LocalComments
14736
javascript
text/javascript
/*
Deprecated
*/
if (typeof(LocalizeConfig) == 'undefined')
LocalizeConfig = {};
if (typeof(LocalizeConfig.dateFormat) == 'undefined')
LocalizeConfig.dateFormat = 'dmy';
/*
End
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
LocalComments.dateFormat = 'dmy';
if (LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
r7pr096uqjet3yg6e22v1fxern3u3do
14737
14736
2009-01-27T22:06:18Z
Gary King
3640
rm unnecessary code
14737
javascript
text/javascript
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
LocalComments.dateFormat = 'dmy';
if (LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
aha80bo92xd47w27yolvpol733zcfn6
14738
14737
2009-01-27T22:07:32Z
Gary King
3640
add another if
14738
javascript
text/javascript
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
LocalComments.dateFormat = 'dmy';
if (typeof(LocalizeConfig) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
t55xnwb4v05bphp1aewkfmletrnwuyi
14739
14738
2009-01-27T22:08:15Z
Gary King
3640
add another
14739
javascript
text/javascript
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
LocalComments.dateFormat = 'dmy';
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
eieaqiqoccl6g5da47dg1df8ui1pqsx
14740
14739
2009-01-27T22:09:28Z
Gary King
3640
if
14740
javascript
text/javascript
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
addOnloadHook(function()
{
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
6bhz69n86ngvt4xpaggismeoay7tk78
14741
14740
2009-01-27T22:15:40Z
Gary King
3640
move
14741
javascript
text/javascript
addOnloadHook(function()
{
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm, return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
bjtwjrcod72k4mz2tb8k31vg9a7ozsi
14742
14741
2009-01-27T22:22:49Z
Gary King
3640
setting to move date forward
14742
javascript
text/javascript
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
0vltb5qolj7sjdxwvmc5hbs3mkbrwh4
14743
14742
2009-01-27T22:23:02Z
Gary King
3640
add semicolon
14743
javascript
text/javascript
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
219vqjsarzwxdmoe3cnxejhydcwktnt
14744
14743
2009-01-27T22:46:48Z
Gary King
3640
add link to docum
14744
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ', ' + '(UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
8s9oe3a1xupiw3ekd7x4gfeaht2pz2q
14745
14744
2009-01-27T22:48:09Z
Gary King
3640
removing comma
14745
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + '(UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
o88zsqwy61k88v7k6qe8cnhtq2btjgl
14746
14745
2009-01-27T22:48:38Z
Gary King
3640
still need the space though
14746
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%;"><span class="localcomments" title="' + str + '">' + return_date.replace(/ /g, ' ') + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
tg9w8yw0v9gupjbksoyq5qo1gyy2aen
14747
14746
2009-01-27T22:50:36Z
Gary King
3640
nowrap whitespace
14747
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjustTime);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjustTime(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
34rv8tra3yt1p03huzzyzt12sd8yf7r
14748
14747
2009-01-28T17:04:56Z
Gary King
3640
renaming function
14748
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML =
document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
cmsqh7f5h5du3gd7yqr5h5lbl45x49s
14749
14748
2009-01-28T17:32:09Z
Gary King
3640
one line
14749
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
2m1efbi2hr1otu27v8qduzyp2h2kcpp
14750
14749
2009-02-01T00:21:00Z
Gary King
3640
try this
14750
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
/*if (old_day == '31')
time.setUTCDate('30');
else*/
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
/*if (old_day == '31')
var day = time.getDate() + 1;
else*/
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
34usjstzdo88urrvcp5eynfgz6xrrub
14751
14750
2009-02-01T00:25:33Z
Gary King
3640
back
14751
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
2m1efbi2hr1otu27v8qduzyp2h2kcpp
14752
14751
2009-02-01T00:32:14Z
Gary King
3640
try again
14752
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
/*if (old_day == '31')
time.setUTCDate('30');
else*/
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
/*if (old_day == '31')
var day = time.getDate() + 1;
else*/
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
34usjstzdo88urrvcp5eynfgz6xrrub
14753
14752
2009-02-01T00:34:10Z
Gary King
3640
digits?
14753
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == 31)
time.setUTCDate(30);
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == 31)
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
lkvcsxsvvcn5pa043cmwchccy59zmet
14754
14753
2009-02-01T00:38:22Z
Gary King
3640
undo
14754
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(str, old_hour, old_minute, old_day, old_month, old_year, offset, s)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + str + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
2m1efbi2hr1otu27v8qduzyp2h2kcpp
14755
14754
2009-02-01T00:40:22Z
Gary King
3640
minor changes
14755
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
8lvwc9zifn5h1frdftducxjjnb6k63s
14756
14755
2009-02-01T00:43:26Z
Gary King
3640
debug
14756
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset, debug)
{
if (debug)
alert('Debug mode is enabled.');
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
g8ommkncfc2se9g6x6622zcawvzyqul
14757
14756
2009-02-01T00:43:56Z
Gary King
3640
[[WP:UNDO|Undid]] revision 267734825 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14757
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + 'year'.pluralize(difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + 'month'.pluralize(difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + 'day'.pluralize(difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
String.prototype.pluralize = function(count, plural)
{
if (plural == null)
plural = this + 's';
return (count == 1 ? this : plural)
}
8lvwc9zifn5h1frdftducxjjnb6k63s
14758
14757
2009-02-01T01:58:06Z
Gary King
3640
converting pluralize to a function
14758
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11)
ampm = 'pm';
if (hour > 12)
hour -= 12;
if (hour == '00')
hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
nmwg8d0iywupv4unyajullcjeg0ozvi
14759
14758
2009-02-01T02:15:04Z
Gary King
3640
one line
14759
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// fix for when the date is the 31st of the month
if (old_day == '31')
time.setUTCDate('30');
else
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
// fix for when the date is the 31st of the month
if (old_day == '31')
var day = time.getDate() + 1;
else
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
7f99kjjdkmv7cqq0uojvzfz6ab7yktz
14760
14759
2009-02-01T02:56:10Z
Gary King
3640
remove these checks, they are just silly
14760
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// figure out what the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
c0atxhifj041yno4s6rq6wie4dk3ef2
14761
14760
2009-02-01T03:12:01Z
Gary King
3640
comment
14761
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// determine the time offset is
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
nkc2oo57mfs7o81afq5a7zfh53lglbz
14762
14761
2009-02-01T03:12:17Z
Gary King
3640
fix
14762
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCDate(old_day);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
gbmdrddenss3pbr5mpo9am2i9doaxsw
14763
14762
2009-02-01T03:22:49Z
Gary King
3640
switch the order
14763
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// Return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// Calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// The distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// Calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// The difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
8n96eh3vgnnjyt2kx8ephk6fph0pkjv
14764
14763
2009-02-01T03:44:25Z
Gary King
3640
lowercase comments
14764
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
ohblnz73evuhfw3n6buj8ykwbneqfzy
14765
14764
2009-02-16T22:20:33Z
Gary King
3640
rewriting this bad boy to use nodes
14765
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = node.childNodes ? node.childNodes : [];
for (var i = 0, j = children.length; i < j; i++)
replace_text(children[i], search, replace)
}
}
5qgpotyn8zhn716poifvfnm9ql3shhw
14766
14765
2009-02-16T22:23:14Z
Gary King
3640
fix
14766
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = node.childNodes ? node.childNodes : [];
for (var i = 0, j = children.length; i < j; i++)
replace_text(children[i], search, replace)
}
}
haota4b2o5e3no7r9wxlyzkqizuo0pa
14767
14766
2009-02-16T22:27:47Z
Gary King
3640
hm give me some more time
14767
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
document.getElementById(element_id).innerHTML = document.getElementById(element_id).innerHTML.replace(/(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return '<span style="font-size: 95%; white-space: nowrap;"><span class="localcomments" title="' + original_timestamp + '">' + return_date + '</span></span>';
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
ohblnz73evuhfw3n6buj8ykwbneqfzy
14768
14767
2009-02-17T01:17:51Z
Gary King
3640
[[WP:UNDO|Undid]] revision 271210161 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14768
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = node.childNodes ? node.childNodes : [];
for (var i = 0, j = children.length; i < j; i++)
replace_text(children[i], search, replace)
}
}
haota4b2o5e3no7r9wxlyzkqizuo0pa
14769
14768
2009-02-17T01:18:13Z
Gary King
3640
fix with a somewhat hack
14769
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
9jtia4ypxnl1ejr2sqaai7t0vnp92nj
14770
14769
2009-03-21T23:34:16Z
Gary King
3640
wrap that
14770
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
(function () {
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
})();
fvbv14myx6br5bumyolw08rzaqpqjeg
14771
14770
2009-03-21T23:37:37Z
Gary King
3640
bam
14771
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
cjvu3jpew47x6c3yzqm7yz0qnblxw8w
14772
14771
2009-03-21T23:39:52Z
Gary King
3640
test
14772
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
});
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
9jtia4ypxnl1ejr2sqaai7t0vnp92nj
14773
14772
2009-03-21T23:40:18Z
Gary King
3640
[[WP:UNDO|Undid]] revision 278835844 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14773
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
time.setUTCMonth(convert_month_to_number(old_month));
time.setUTCDate(old_day);
time.setUTCFullYear(old_year);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
cjvu3jpew47x6c3yzqm7yz0qnblxw8w
14774
14773
2009-03-30T20:26:52Z
Gary King
3640
fixes
14774
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
oomeajyo9cpkis2ag1b3hvm84tgkvp0
14775
14774
2009-04-02T02:52:38Z
Gary King
3640
question mark
14775
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+?) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
f7azxv3rziy21xa4pz7kswgmwnrtuxc
14776
14775
2009-04-02T03:19:12Z
Gary King
3640
[[WP:UNDO|Undid]] revision 281214290 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14776
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var position = value.search(search);
var match = value.match(search);
if (position != -1)
{
var length = match.toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', match);
second_span.appendChild(document.createTextNode(match.toString().replace(search, replace)));
first_span.appendChild(second_span);
var parent_node = document.createDocumentFragment();
parent_node.appendChild(document.createTextNode(before_match));
parent_node.appendChild(first_span);
parent_node.appendChild(document.createTextNode(after_match));
node.parentNode.replaceChild(parent_node, node);
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
oomeajyo9cpkis2ag1b3hvm84tgkvp0
14777
14776
2009-04-02T16:19:07Z
Gary King
3640
fixing when there is more than one timestamp in the same node
14777
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
var day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'), day_of_the_week = day_names[time.getDay()];
// the distance in days from today and last Monday?
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
// calculate time difference
var milliseconds_ago = today.getTime() - time.getTime(), days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
// the difference between today and the timestamp
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
value = node.nodeValue;
matches = value.match(search);
if (matches != null)
{
node_parent_node = node.parentNode;
old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
length = matches[match].toString().length;
before_match = value.substring(0, position);
var after_match = value.substring(position + length);
first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
n4txhutfgpiiavaayyze2xf9iyayat3
14778
14777
2009-04-02T17:21:22Z
Gary King
3640
allow to disable descriptive date
14778
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = 'Today';
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = 'Yesterday';
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = 'Tomorrow';
else
{
// calculate day of week
day_names = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
milliseconds_ago = today.getTime() - time.getTime();
days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = 'ago';
if (days_ago <= 7)
last = 'last ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = 'from now';
if (days_ago >= -7)
last = 'this ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize('year', difference.getYear() - 70, 'years');
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize('month', difference.getMonth(), 'months');
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize('day', difference.getDate(), 'days');
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
value = node.nodeValue;
matches = value.match(search);
if (matches != null)
{
node_parent_node = node.parentNode;
old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
length = matches[match].toString().length;
before_match = value.substring(0, position);
var after_match = value.substring(position + length);
first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
355p6mfj9isog1ytg1x5kd3uiqmvvsb
14779
14778
2009-06-15T20:21:51Z
Gary King
3640
converting language, hopefully nothing explodes
14779
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days',
}
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
milliseconds_ago = today.getTime() - time.getTime();
days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
value = node.nodeValue;
matches = value.match(search);
if (matches != null)
{
node_parent_node = node.parentNode;
old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
length = matches[match].toString().length;
before_match = value.substring(0, position);
var after_match = value.substring(position + length);
first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
fr7gbpwqlmajkwl75o9xq64f0x9acvy
14780
14779
2009-06-17T22:58:04Z
Gary King
3640
add Saturday
14780
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days',
}
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
milliseconds_ago = today.getTime() - time.getTime();
days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
value = node.nodeValue;
matches = value.match(search);
if (matches != null)
{
node_parent_node = node.parentNode;
old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
length = matches[match].toString().length;
before_match = value.substring(0, position);
var after_match = value.substring(position + length);
first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
mjesceu8ubvazglp8bdwjlsaxvcavhu
14781
14780
2009-07-17T17:46:23Z
Gary King
3640
adding "var" where necessary
14781
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days',
}
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
oqgc77xpf2sjv4mk2lqfae2j561jo9a
14782
14781
2009-07-17T17:47:51Z
Gary King
3640
add semicolon
14782
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days',
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
fej250yhova5fzgmxitnrlkugxc9mp3
14783
14782
2009-07-17T17:48:50Z
Gary King
3640
rm comma
14783
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var first_span = document.createElement('span');
first_span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
var second_span = document.createElement('span');
second_span.setAttribute('class', 'localcomments');
second_span.setAttribute('title', matches[match]);
second_span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
first_span.appendChild(second_span);
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(first_span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
ltw19wesylq2lhbg42mofnsk943zehs
14784
14783
2009-07-17T18:21:54Z
Gary King
3640
get rid of second_span
14784
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span style="font-size: 95%; white-space: nowrap;" class="localcomments" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
span.setAttribute('class', 'localcomments');
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
q80d5ifemud5tudw3f0ruwc1cjsuy4b
14785
14784
2009-07-17T18:27:15Z
Gary King
3640
reorder
14785
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
// new_node_list = new_node.childNodes;
node_parent_node.replaceChild(new_node, old_node);
// old_node_list = new_node_list;
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
1r8yx8vz4p6hmjdi39t7dmfwehbzubl
14786
14785
2009-07-17T19:05:55Z
Gary King
3640
rm unnecessary comments
14786
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
047k8imo00ltfbqiltwzm68khk831dl
14787
14786
2009-07-17T19:07:57Z
Gary King
3640
rm class for nw
14787
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
// span.setAttribute('class', 'localcomments');
span.setAttribute('style', 'font-size: 95%; white-space: nowrap;');
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
liwzofqkzakzu8m386yfd9wtu4btnmh
14788
14787
2009-07-17T19:14:12Z
Gary King
3640
.style.
14788
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
c90adt4hrrneyqs5om9mgg5zurv00a1
14789
14788
2009-07-27T05:00:18Z
Gary King
3640
add 24 hour clock
14789
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.24hours) == 'undefined')
LocalComments.24hours = false;
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm;
if (!LocalComments.24hours)
{
ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
swpglpvoq32cqz8ussm03ldw1u88md2
14790
14789
2009-07-27T05:01:44Z
Gary King
3640
fix
14790
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyfourhours) == 'undefined')
LocalComments.twentyfourhours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm;
if (!LocalComments.twentyfourhours)
{
ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
3yo37kw1c91bkqopdqdk3o9c7bybseg
14791
14790
2009-07-27T05:03:41Z
Gary King
3640
empty
14791
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyfourhours) == 'undefined')
LocalComments.twentyfourhours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyfourhours)
{
ampm = 'am';
if (hour > 11) ampm = 'pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ' ' + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
b7abnqvup7nhps2v2rfd4xcqidwurs8
14792
14791
2009-07-27T05:05:17Z
Gary King
3640
fix space
14792
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyfourhours) == 'undefined')
LocalComments.twentyfourhours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyfourhours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
r5jf2fvlz7atdk43pia2hp9de3dgbxl
14793
14792
2009-07-27T05:10:41Z
Gary King
3640
disable day of week
14793
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.dayOfWeek) == 'undefined')
LocalComments.dayOfWeek = true;
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyfourhours) == 'undefined')
LocalComments.twentyfourhours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyfourhours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = '';
if (LocalComments.dayOfWeek)
day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
06ycw2vngncp9p0fhabgehq9cs17wli
14794
14793
2009-07-27T05:11:29Z
Gary King
3640
change casing
14794
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.dayOfWeek) == 'undefined')
LocalComments.dayOfWeek = true;
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = '';
if (LocalComments.dayOfWeek)
day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
qy8yzuu35op62oqp43g78xxgthyhlst
14795
14794
2009-07-27T05:13:31Z
Gary King
3640
[[WP:UNDO|Undid]] revision 304420185 by [[Special:Contributions/Gary King|Gary King]] ([[User talk:Gary King|talk]])
14795
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
jyj6feer9h644rcw89cc99qck8b4kiy
14796
14795
2009-09-19T23:58:34Z
Gary King
3640
instructions on localization
14796
javascript
text/javascript
/*
Documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
ku425ai2rnhl6zyt3l4gq7ly69f4jg0
14797
14796
2009-09-19T23:59:32Z
Gary King
3640
adding creds
14797
javascript
text/javascript
/*
COMMENTS IN LOCAL TIME
Original author: http://en.wikipedia.org/wiki/User:Gary_King
English Wikipedia documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
s79wbn6fhwaylj9ln63vb2fwbxs8xsl
14798
14797
2009-09-20T00:05:05Z
Gary King
3640
add example
14798
javascript
text/javascript
/*
COMMENTS IN LOCAL TIME
Original author: http://en.wikipedia.org/wiki/User:Gary_King
English Wikipedia documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : 'Aujourd’hui',
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
rop5g93es1yvkz5x86slitch3pt4yze
14799
14556
2010-01-26T15:37:14Z
Adrignola
502
242 revisions from [[:w:User:Gary King/comments in local time.js]]: actual code for gadget
14799
javascript
text/javascript
/*
COMMENTS IN LOCAL TIME
Original author: http://en.wikipedia.org/wiki/User:Gary_King
English Wikipedia documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : 'Aujourd’hui',
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
rop5g93es1yvkz5x86slitch3pt4yze
14800
14799
2010-01-26T15:37:40Z
Adrignola
502
moved [[Transwiki:Gary King/comments in local time.js]] to [[MediaWiki:Gadget-CommentsInLocalTime.js]]
14799
javascript
text/javascript
/*
COMMENTS IN LOCAL TIME
Original author: http://en.wikipedia.org/wiki/User:Gary_King
English Wikipedia documentation: [[Wikipedia:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : 'Aujourd’hui',
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
rop5g93es1yvkz5x86slitch3pt4yze
14801
14800
2010-01-26T15:38:16Z
Adrignola
502
fixed links
14801
javascript
text/javascript
/*
COMMENTS IN LOCAL TIME
Original author: http://en.wikipedia.org/wiki/User:Gary_King
English Wikibooks documentation: [[Wikibooks:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : 'Aujourd’hui',
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
ej0ewyqgckn7fmd8xvfycisi3zhcg96
14802
14801
2010-06-23T14:38:37Z
Adrignola
502
dynamic link
14802
javascript
text/javascript
importScriptURI('http://en.wikipedia.org/w/index.php?title=User:Gary King/comments in local time.js&action=raw&ctype=text/javascript');
4iznebwyvtxyfjas8g9wzgrwrz7kvc7
14803
14802
2010-06-29T13:04:20Z
Adrignola
502
hosting locally to reduce delays
14803
javascript
text/javascript
/*
COMMENTS IN LOCAL TIME
Original author: http://en.wikipedia.org/wiki/User:Gary_King
English Wikibooks documentation: [[Wikibooks:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : 'Aujourd’hui',
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
ej0ewyqgckn7fmd8xvfycisi3zhcg96
14804
14803
2010-11-23T22:08:05Z
Darklama
2894
properly declare var
14804
javascript
text/javascript
/*
COMMENTS IN LOCAL TIME
Original author: http://en.wikipedia.org/wiki/User:Gary_King
English Wikibooks documentation: [[Wikibooks:Comments in Local Time]]
*/
addOnloadHook(function()
{
// wgCanonicalNamespace = unsafeWindow.wgCanonicalNamespace
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below, to the RIGHT of the colons,
to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : 'Aujourd’hui',
*/
var language =
{
// relative terms
'Today' : 'Today',
'Yesterday' : 'Yesterday',
'Tomorrow' : 'Tomorrow',
'last' : 'last',
'this' : 'this',
// days of the week
'Sunday' : 'Sunday',
'Monday' : 'Monday',
'Tuesday' : 'Tuesday',
'Wednesday' : 'Wednesday',
'Thursday' : 'Thursday',
'Friday' : 'Friday',
'Saturday' : 'Saturday',
// months of the year
'January' : 'January',
'February' : 'February',
'March' : 'March',
'April' : 'April',
'May' : 'May',
'June' : 'June',
'July' : 'July',
'August' : 'August',
'September' : 'September',
'October' : 'October',
'November' : 'November',
'December' : 'December',
// difference words
'ago' : 'ago',
'from now' : 'from now',
// date phrases
'year' : 'year',
'years' : 'years',
'month' : 'month',
'months' : 'months',
'day' : 'day',
'days' : 'days'
};
/*
Settings
*/
if (typeof(LocalComments) == 'undefined')
var LocalComments = {};
if (typeof(LocalComments.dateDifference) == 'undefined')
LocalComments.dateDifference = true;
if (typeof(LocalComments.dateFormat) == 'undefined')
{
// Deprecated: LocalizeConfig
if (typeof(LocalizeConfig) != 'undefined' && typeof(LocalizeConfig.dateFormat) != 'undefined' && LocalizeConfig.dateFormat != '')
LocalComments.dateFormat = LocalizeConfig.dateFormat;
else
LocalComments.dateFormat = 'dmy';
}
if (typeof(LocalComments.timeFirst) == 'undefined')
LocalComments.timeFirst = true;
if (typeof(LocalComments.twentyFourHours) == 'undefined')
LocalComments.twentyFourHours = false;
/*
End Settings
*/
if (wgCanonicalNamespace == '' || wgCanonicalNamespace == 'MediaWiki' || wgCanonicalNamespace == 'Special')
return;
var disabled_urls = new Array('action=history'), unique_url = false, wikiPreview = new Array('action=edit', 'action=submit');
for (var i = 0; i < disabled_urls.length; i++)
{
if (document.location.href.indexOf(disabled_urls[i]) != -1)
return;
}
for (var i = 0; i < wikiPreview.length; i++)
{
if (document.location.href.indexOf(wikiPreview[i]) != -1)
unique_url = 'wikiPreview';
}
var element_id = unique_url ? unique_url : 'bodyContent';
replace_text(document.getElementById(element_id), /(\d\d):(\d\d), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/g, adjust_time);
function add_leading_zero(number)
{
if (number < 10)
number = '0' + number;
return number;
}
function adjust_time(original_timestamp, old_hour, old_minute, old_day, old_month, old_year, offset)
{
var today = new Date(), yesterday = new Date(), tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
// set the date entered
var time = new Date();
time.setUTCFullYear(old_year, convert_month_to_number(old_month), old_day);
time.setUTCHours(old_hour);
time.setUTCMinutes(old_minute);
// determine the time offset
var utc_offset = -1 * time.getTimezoneOffset() / 60;
if (utc_offset >= 0)
utc_offset = '+' + utc_offset;
else
utc_offset = '−' + Math.abs(utc_offset);
// set the date bits to output
var year = time.getFullYear(), month = add_leading_zero(time.getMonth() + 1);
var day = time.getDate();
var hour = parseInt(time.getHours()), minute = add_leading_zero(time.getMinutes());
// output am or pm depending on the date
var ampm = '';
if (!LocalComments.twentyFourHours)
{
ampm = ' am';
if (hour > 11) ampm = ' pm';
if (hour > 12) hour -= 12;
if (hour == '00') hour = 12;
}
// return 'today' or 'yesterday' if that is the case
if (year == today.getFullYear() && month == add_leading_zero(today.getMonth() + 1) && day == today.getDate())
var date = language['Today'];
else if (year == yesterday.getFullYear() && month == add_leading_zero(yesterday.getMonth() + 1) && day == yesterday.getDate())
var date = language['Yesterday'];
else if (year == tomorrow.getFullYear() && month == add_leading_zero(tomorrow.getMonth() + 1) && day == tomorrow.getDate())
var date = language['Tomorrow'];
else
{
// calculate day of week
var day_names = new Array(language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']);
var day_of_the_week = day_names[time.getDay()];
if (LocalComments.dateDifference)
{
// calculate time difference from today and the timestamp
today = new Date(today.getYear(), today.getMonth(), today.getDate());
time = new Date(time.getYear(), time.getMonth(), time.getDate());
var milliseconds_ago = today.getTime() - time.getTime();
var days_ago = Math.round(milliseconds_ago / 1000 / 60 / 60 / 24);
var difference, difference_word = '', last = '';
if (today.valueOf() >= time.valueOf())
{
difference = new Date(today.valueOf() - time.valueOf());
difference_word = language['ago'];
if (days_ago <= 7)
last = language['last'] + ' ';
}
else
{
difference = new Date(time.valueOf() - today.valueOf());
difference_word = language['from now'];
if (days_ago >= -7)
last = language['this'] + ' ';
}
var descriptive_difference = [];
if (difference.getYear() - 70 > 0)
{
var years_ago = (difference.getYear() - 70) + ' ' + pluralize(language['year'], difference.getYear() - 70, language['years']);
descriptive_difference.push(years_ago);
}
if (difference.getMonth() > 0)
{
var months_ago = difference.getMonth() + ' ' + pluralize(language['month'], difference.getMonth(), language['months']);
descriptive_difference.push(months_ago);
}
if (difference.getDate() > 0)
{
var new_days_ago = difference.getDate() + ' ' + pluralize(language['day'], difference.getDate(), language['days']);
descriptive_difference.push(new_days_ago);
}
descriptive_difference = ' (' + descriptive_difference.join(', ') + ' ' + difference_word + ')';
}
else
{
descriptive_difference = '';
last = '';
}
// format the date according to user preferences
var formatted_date = '', month_name = convert_number_to_month(time.getMonth());
switch (LocalComments.dateFormat.toLowerCase())
{
case 'dmy':
formatted_date = day + ' ' + month_name + ' ' + year;
break;
case 'mdy':
formatted_date = month_name + ' ' + day + ', ' + year;
break;
default:
formatted_date = year + '-' + month + '-' + add_leading_zero(day);
}
var date = formatted_date + ', ' + last + day_of_the_week + descriptive_difference;
}
var time = hour + ':' + minute + ampm;
if (LocalComments.timeFirst)
var return_date = time + ', ' + date + ' (UTC' + utc_offset + ')';
else
var return_date = date + ', ' + time + ' (UTC' + utc_offset + ')';
return return_date;
}
function convert_month_to_number(month)
{
var output = new Date(month + ' 1, 2001');
return output.getMonth();
}
function convert_number_to_month(number)
{
var month = new Array(language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']);
return month[number];
}
function pluralize(term, count, plural)
{
if (plural == null)
plural = term + 's';
return (count == 1 ? term : plural)
}
function replace_text(node, search, replace)
{
if (node.nodeType == 3)
{
var value = node.nodeValue;
var matches = value.match(search);
if (matches != null)
{
var node_parent_node = node.parentNode;
var old_node = node;
// old_node_list = node.parentNode.childNodes;
for (match = 0; match < matches.length; match++)
{
// Create <span class="localcomments" style="font-size: 95%; white-space: nowrap;" title="MATCHES[MATCH]">MATCHES[MATCH]</span>
var position;
if (after_match != null && length != null)
position = after_match.search(search) + before_match.length + length;
else
position = value.search(search);
var length = matches[match].toString().length;
var before_match = value.substring(0, position);
var after_match = value.substring(position + length);
var span = document.createElement('span');
span.setAttribute('class', 'localcomments');
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('title', matches[match]);
span.appendChild(document.createTextNode(matches[match].toString().replace(search, replace)));
var new_node = document.createDocumentFragment();
new_node.appendChild(document.createTextNode(before_match));
new_node.appendChild(span);
new_node.appendChild(document.createTextNode(after_match));
node_parent_node.replaceChild(new_node, old_node);
break;
}
}
}
else
{
var children = [], child = node.firstChild;
while (child)
{
children[children.length] = child;
child = child.nextSibling;
}
for (var child = 0; child < children.length; child++)
replace_text(children[child], search, replace);
}
}
});
48hk3vmbxd4ky0ua9cuq50fm61c1j9y
14805
14804
2015-08-15T10:45:17Z
Az1568
66
Update
14805
javascript
text/javascript
// Generated by CoffeeScript 1.8.0
/**
* COMMENTS IN LOCAL TIME
*
* Description:
* Changes [[Coordinated Universal Time|UTC]]-based times and dates,
* such as those used in signatures, to be relative to local time.
*
* Documentation:
* English Wikibooks documentation: [[Wikibooks:Comments in Local Time]]
*/
var CommentsInLocalTime, runScript;
CommentsInLocalTime = (function() {
var LocalComments, language;
function CommentsInLocalTime() {}
language = '';
LocalComments = {};
CommentsInLocalTime.settings = function() {
if (window.LocalComments != null) {
LocalComments = window.LocalComments;
}
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below,
to the RIGHT of the colons, to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : "Aujourd'hui",
*/
return LocalComments.language = {
/* relative terms */
'Today': 'Today',
'Yesterday': 'Yesterday',
'Tomorrow': 'Tomorrow',
'last': 'last',
'this': 'this',
/* days of the week */
'Sunday': 'Sunday',
'Monday': 'Monday',
'Tuesday': 'Tuesday',
'Wednesday': 'Wednesday',
'Thursday': 'Thursday',
'Friday': 'Friday',
'Saturday': 'Saturday',
/* months of the year */
'January': 'January',
'February': 'February',
'March': 'March',
'April': 'April',
'May': 'May',
'June': 'June',
'July': 'July',
'August': 'August',
'September': 'September',
'October': 'October',
'November': 'November',
'December': 'December',
/* difference words */
'ago': 'ago',
'from now': 'from now',
/* date phrases */
'year': 'year',
'years': 'years',
'month': 'month',
'months': 'months',
'day': 'day',
'days': 'days'
};
};
/*
APPLICATION
*/
CommentsInLocalTime.init = function() {
/*
Settings
*/
var contentText, namespace, pageAction;
this.settings();
if (LocalComments.language == null) {
return false;
}
language = this.setDefaultSetting('language', LocalComments.language);
this.setDefaultSetting({
'dateDifference': true,
'dateFormat': 'dmy',
'dayOfWeek': true,
'dropDays': 0,
'dropMonths': 0,
'timeFirst': true,
'twentyFourHours': false
});
/*
End Settings
*/
namespace = mw.config.get('wgCanonicalNamespace');
pageAction = mw.config.get('wgAction');
if (['', 'MediaWiki', 'Special'].indexOf(namespace) > -1 || pageAction === 'history') {
return false;
}
contentText = document.getElementById('mw-content-text');
if (mw.config.get('wgAction') !== 'view' || (contentText == null)) {
return false;
}
return this.replaceText(contentText, /(\d{1,2}):(\d{2}), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/);
};
CommentsInLocalTime.replaceText = function(node, search) {
var after, afterMatch, before, beforeMatch, child, children, length, match, matches, parent, parentNodeName, position, span, timeArray, timestamp, value, _i, _len, _results;
if (!node) {
return false;
}
if (node.nodeType === 3) {
parent = node.parentNode;
parentNodeName = parent.nodeName;
if (['CODE', 'PRE'].indexOf(parentNodeName) > -1) {
return false;
}
value = node.nodeValue;
matches = value.match(search);
if (matches != null) {
match = matches[0];
position = value.search(search);
length = match.toString().length;
beforeMatch = value.substring(0, position);
afterMatch = value.substring(position + length);
timeArray = this.adjustTime(match.toString(), search);
timestamp = timeArray[1] ? timeArray[1].getTime() : '';
span = document.createElement('span');
span.className = 'localcomments';
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('timestamp', timestamp);
span.title = match;
span.appendChild(document.createTextNode(timeArray[0]));
parent = node.parentNode;
parent.replaceChild(span, node);
before = document.createElement('span');
before.className = 'before-localcomments';
before.appendChild(document.createTextNode(beforeMatch));
after = document.createElement('span');
after.className = 'after-localcomments';
after.appendChild(document.createTextNode(afterMatch));
parent.insertBefore(before, span);
return parent.insertBefore(after, span.nextSibling);
}
} else {
children = [];
child = node.childNodes[0];
while (child) {
children.push(child);
child = child.nextSibling;
}
_results = [];
for (_i = 0, _len = children.length; _i < _len; _i++) {
child = children[_i];
_results.push(this.replaceText(child, search));
}
return _results;
}
};
CommentsInLocalTime.adjustTime = function(originalTimestamp, search) {
var ampm, date, day, dayNames, dayOfTheWeek, descriptiveDifference, finalTime, formattedDate, formattedDayOfTheWeek, hour, last, minute, month, monthName, oldDay, oldHour, oldMinute, oldMonth, oldYear, returnDate, time, today, tomorrow, utcOffset, year, yesterday, _ref, _ref1;
time = originalTimestamp.match(search);
_ref = [time[1], time[2], time[3], time[4], time[5]], oldHour = _ref[0], oldMinute = _ref[1], oldDay = _ref[2], oldMonth = _ref[3], oldYear = _ref[4];
today = new Date();
yesterday = new Date();
tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
time = new Date();
time.setUTCFullYear(oldYear, this.convertMonthToNumber(oldMonth), oldDay);
time.setUTCHours(oldHour);
time.setUTCMinutes(oldMinute);
if (isNaN(time)) {
return [originalTimestamp, ''];
}
utcOffset = -1 * time.getTimezoneOffset() / 60;
utcOffset = utcOffset >= 0 ? '+' + utcOffset : '−' + Math.abs(utcOffset);
year = time.getFullYear();
month = this.addLeadingZero(time.getMonth() + 1);
day = time.getDate();
hour = parseInt(time.getHours());
minute = this.addLeadingZero(time.getMinutes());
ampm = '';
if (LocalComments.twentyFourHours) {
hour = this.addLeadingZero(hour);
} else {
ampm = hour <= 11 ? ' am' : ' pm';
if (hour > 12) {
hour -= 12;
} else if (hour === 0) {
hour = 12;
}
}
if (year === today.getFullYear() && month === this.addLeadingZero(today.getMonth() + 1) && day === today.getDate()) {
date = language['Today'];
} else if (year === yesterday.getFullYear() && month === this.addLeadingZero(yesterday.getMonth() + 1) && day === yesterday.getDate()) {
date = language['Yesterday'];
} else if (year === tomorrow.getFullYear() && month === this.addLeadingZero(tomorrow.getMonth() + 1) && day === tomorrow.getDate()) {
date = language['Tomorrow'];
} else {
dayNames = [language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']];
dayOfTheWeek = dayNames[time.getDay()];
descriptiveDifference = '';
last = '';
if (LocalComments.dateDifference) {
_ref1 = this.createRelativeDate(today, time), descriptiveDifference = _ref1.descriptiveDifference, last = _ref1.last;
}
formattedDate = '';
monthName = this.convertNumberToMonth(time.getMonth());
formattedDate = (function() {
switch (LocalComments.dateFormat.toLowerCase()) {
case 'dmy':
return day + ' ' + monthName + ' ' + year;
case 'mdy':
return monthName + ' ' + day + ', ' + year;
default:
return year + '-' + month + '-' + this.addLeadingZero(day);
}
}).call(this);
formattedDayOfTheWeek = '';
if (LocalComments.dayOfWeek) {
formattedDayOfTheWeek = ', ' + last + dayOfTheWeek;
}
date = formattedDate + formattedDayOfTheWeek + descriptiveDifference;
}
finalTime = hour + ':' + minute + ampm;
if (LocalComments.timeFirst) {
returnDate = finalTime + ', ' + date + ' (UTC' + utcOffset + ')';
} else {
returnDate = date + ', ' + finalTime + ' (UTC' + utcOffset + ')';
}
return [returnDate, time];
};
CommentsInLocalTime.createRelativeDate = function(today, time) {
var daysAgo, descriptiveParts, differenceWord, fmtDays, fmtMonths, fmtYears, last, millisecondsAgo, monthsAgo, totalMonthsAgo, yearsAgo;
millisecondsAgo = today.getTime() - time.getTime();
daysAgo = Math.abs(Math.round(millisecondsAgo / 1000 / 60 / 60 / 24));
differenceWord = '';
last = '';
if (millisecondsAgo >= 0) {
differenceWord = language['ago'];
if (daysAgo <= 7) {
last = language['last'] + ' ';
}
} else {
differenceWord = language['from now'];
if (daysAgo <= 7) {
last = language['this'] + ' ';
}
}
monthsAgo = Math.floor(daysAgo / 365 * 12);
totalMonthsAgo = monthsAgo;
yearsAgo = Math.floor(monthsAgo / 12);
if (monthsAgo < LocalComments.dropMonths) {
yearsAgo = 0;
} else if (LocalComments.dropMonths > 0) {
monthsAgo = 0;
} else {
monthsAgo = monthsAgo - yearsAgo * 12;
}
if (daysAgo < LocalComments.dropDays) {
monthsAgo = 0;
yearsAgo = 0;
} else if (LocalComments.dropDays > 0) {
daysAgo = 0;
} else {
daysAgo = daysAgo - Math.floor(totalMonthsAgo * 365 / 12);
}
descriptiveParts = [];
if (yearsAgo > 0) {
fmtYears = yearsAgo + ' ' + this.pluralize(language['year'], yearsAgo, language['years']);
descriptiveParts.push(fmtYears);
}
if (monthsAgo > 0) {
fmtMonths = monthsAgo + ' ' + this.pluralize(language['month'], monthsAgo, language['months']);
descriptiveParts.push(fmtMonths);
}
if (daysAgo > 0) {
fmtDays = daysAgo + ' ' + this.pluralize(language['day'], daysAgo, language['days']);
descriptiveParts.push(fmtDays);
}
return {
descriptiveDifference: ' (' + descriptiveParts.join(', ') + ' ' + differenceWord + ')',
last: last
};
};
/*
HELPERS
*/
CommentsInLocalTime.addLeadingZero = function(number) {
if (number < 10) {
number = '0' + number;
}
return number;
};
CommentsInLocalTime.convertMonthToNumber = function(month) {
return (new Date(month + ' 1, 2001')).getMonth();
};
CommentsInLocalTime.convertNumberToMonth = function(number) {
return [language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']][number];
};
CommentsInLocalTime.pluralize = function(term, count, plural) {
if (plural === null) {
plural = term + 's';
}
if (count === 1) {
return term;
} else {
return plural;
}
};
CommentsInLocalTime.setDefaultSetting = function() {
var defaultSetting, name, settings;
if (!arguments.length) {
return false;
}
if (typeof arguments[0] === 'object') {
settings = arguments[0];
for (name in settings) {
defaultSetting = settings[name];
if (LocalComments[name] == null) {
LocalComments[name] = defaultSetting;
}
}
return settings;
} else if (typeof arguments[0] === 'string') {
name = arguments[0];
defaultSetting = arguments[1];
if (LocalComments[name] == null) {
LocalComments[name] = defaultSetting;
}
return LocalComments[name];
}
};
return CommentsInLocalTime;
})();
runScript = function() {
return $(window).load(function() {
if (window.location.href.indexOf('&disable=loco') === -1) {
return CommentsInLocalTime.init();
}
});
};
if (typeof waitForScripts === 'function') {
waitForScripts(runScript);
} else {
runScript();
}
fyzm57si29b5chlq3zsoe12a9v6dj1w
14806
14805
2017-08-11T12:27:06Z
Krenair
1158
Maintenance: [[mw:RL/MGU]] / [[mw:RL/JD]] - Replaced .load event handler (removed in jQuery 3.0) [[phab:T169385]]
14806
javascript
text/javascript
// Generated by CoffeeScript 1.8.0
/**
* COMMENTS IN LOCAL TIME
*
* Description:
* Changes [[Coordinated Universal Time|UTC]]-based times and dates,
* such as those used in signatures, to be relative to local time.
*
* Documentation:
* English Wikibooks documentation: [[Wikibooks:Comments in Local Time]]
*/
var CommentsInLocalTime, runScript;
CommentsInLocalTime = (function() {
var LocalComments, language;
function CommentsInLocalTime() {}
language = '';
LocalComments = {};
CommentsInLocalTime.settings = function() {
if (window.LocalComments != null) {
LocalComments = window.LocalComments;
}
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below,
to the RIGHT of the colons, to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : "Aujourd'hui",
*/
return LocalComments.language = {
/* relative terms */
'Today': 'Today',
'Yesterday': 'Yesterday',
'Tomorrow': 'Tomorrow',
'last': 'last',
'this': 'this',
/* days of the week */
'Sunday': 'Sunday',
'Monday': 'Monday',
'Tuesday': 'Tuesday',
'Wednesday': 'Wednesday',
'Thursday': 'Thursday',
'Friday': 'Friday',
'Saturday': 'Saturday',
/* months of the year */
'January': 'January',
'February': 'February',
'March': 'March',
'April': 'April',
'May': 'May',
'June': 'June',
'July': 'July',
'August': 'August',
'September': 'September',
'October': 'October',
'November': 'November',
'December': 'December',
/* difference words */
'ago': 'ago',
'from now': 'from now',
/* date phrases */
'year': 'year',
'years': 'years',
'month': 'month',
'months': 'months',
'day': 'day',
'days': 'days'
};
};
/*
APPLICATION
*/
CommentsInLocalTime.init = function() {
/*
Settings
*/
var contentText, namespace, pageAction;
this.settings();
if (LocalComments.language == null) {
return false;
}
language = this.setDefaultSetting('language', LocalComments.language);
this.setDefaultSetting({
'dateDifference': true,
'dateFormat': 'dmy',
'dayOfWeek': true,
'dropDays': 0,
'dropMonths': 0,
'timeFirst': true,
'twentyFourHours': false
});
/*
End Settings
*/
namespace = mw.config.get('wgCanonicalNamespace');
pageAction = mw.config.get('wgAction');
if (['', 'MediaWiki', 'Special'].indexOf(namespace) > -1 || pageAction === 'history') {
return false;
}
contentText = document.getElementById('mw-content-text');
if (mw.config.get('wgAction') !== 'view' || (contentText == null)) {
return false;
}
return this.replaceText(contentText, /(\d{1,2}):(\d{2}), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/);
};
CommentsInLocalTime.replaceText = function(node, search) {
var after, afterMatch, before, beforeMatch, child, children, length, match, matches, parent, parentNodeName, position, span, timeArray, timestamp, value, _i, _len, _results;
if (!node) {
return false;
}
if (node.nodeType === 3) {
parent = node.parentNode;
parentNodeName = parent.nodeName;
if (['CODE', 'PRE'].indexOf(parentNodeName) > -1) {
return false;
}
value = node.nodeValue;
matches = value.match(search);
if (matches != null) {
match = matches[0];
position = value.search(search);
length = match.toString().length;
beforeMatch = value.substring(0, position);
afterMatch = value.substring(position + length);
timeArray = this.adjustTime(match.toString(), search);
timestamp = timeArray[1] ? timeArray[1].getTime() : '';
span = document.createElement('span');
span.className = 'localcomments';
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('timestamp', timestamp);
span.title = match;
span.appendChild(document.createTextNode(timeArray[0]));
parent = node.parentNode;
parent.replaceChild(span, node);
before = document.createElement('span');
before.className = 'before-localcomments';
before.appendChild(document.createTextNode(beforeMatch));
after = document.createElement('span');
after.className = 'after-localcomments';
after.appendChild(document.createTextNode(afterMatch));
parent.insertBefore(before, span);
return parent.insertBefore(after, span.nextSibling);
}
} else {
children = [];
child = node.childNodes[0];
while (child) {
children.push(child);
child = child.nextSibling;
}
_results = [];
for (_i = 0, _len = children.length; _i < _len; _i++) {
child = children[_i];
_results.push(this.replaceText(child, search));
}
return _results;
}
};
CommentsInLocalTime.adjustTime = function(originalTimestamp, search) {
var ampm, date, day, dayNames, dayOfTheWeek, descriptiveDifference, finalTime, formattedDate, formattedDayOfTheWeek, hour, last, minute, month, monthName, oldDay, oldHour, oldMinute, oldMonth, oldYear, returnDate, time, today, tomorrow, utcOffset, year, yesterday, _ref, _ref1;
time = originalTimestamp.match(search);
_ref = [time[1], time[2], time[3], time[4], time[5]], oldHour = _ref[0], oldMinute = _ref[1], oldDay = _ref[2], oldMonth = _ref[3], oldYear = _ref[4];
today = new Date();
yesterday = new Date();
tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
time = new Date();
time.setUTCFullYear(oldYear, this.convertMonthToNumber(oldMonth), oldDay);
time.setUTCHours(oldHour);
time.setUTCMinutes(oldMinute);
if (isNaN(time)) {
return [originalTimestamp, ''];
}
utcOffset = -1 * time.getTimezoneOffset() / 60;
utcOffset = utcOffset >= 0 ? '+' + utcOffset : '−' + Math.abs(utcOffset);
year = time.getFullYear();
month = this.addLeadingZero(time.getMonth() + 1);
day = time.getDate();
hour = parseInt(time.getHours());
minute = this.addLeadingZero(time.getMinutes());
ampm = '';
if (LocalComments.twentyFourHours) {
hour = this.addLeadingZero(hour);
} else {
ampm = hour <= 11 ? ' am' : ' pm';
if (hour > 12) {
hour -= 12;
} else if (hour === 0) {
hour = 12;
}
}
if (year === today.getFullYear() && month === this.addLeadingZero(today.getMonth() + 1) && day === today.getDate()) {
date = language['Today'];
} else if (year === yesterday.getFullYear() && month === this.addLeadingZero(yesterday.getMonth() + 1) && day === yesterday.getDate()) {
date = language['Yesterday'];
} else if (year === tomorrow.getFullYear() && month === this.addLeadingZero(tomorrow.getMonth() + 1) && day === tomorrow.getDate()) {
date = language['Tomorrow'];
} else {
dayNames = [language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']];
dayOfTheWeek = dayNames[time.getDay()];
descriptiveDifference = '';
last = '';
if (LocalComments.dateDifference) {
_ref1 = this.createRelativeDate(today, time), descriptiveDifference = _ref1.descriptiveDifference, last = _ref1.last;
}
formattedDate = '';
monthName = this.convertNumberToMonth(time.getMonth());
formattedDate = (function() {
switch (LocalComments.dateFormat.toLowerCase()) {
case 'dmy':
return day + ' ' + monthName + ' ' + year;
case 'mdy':
return monthName + ' ' + day + ', ' + year;
default:
return year + '-' + month + '-' + this.addLeadingZero(day);
}
}).call(this);
formattedDayOfTheWeek = '';
if (LocalComments.dayOfWeek) {
formattedDayOfTheWeek = ', ' + last + dayOfTheWeek;
}
date = formattedDate + formattedDayOfTheWeek + descriptiveDifference;
}
finalTime = hour + ':' + minute + ampm;
if (LocalComments.timeFirst) {
returnDate = finalTime + ', ' + date + ' (UTC' + utcOffset + ')';
} else {
returnDate = date + ', ' + finalTime + ' (UTC' + utcOffset + ')';
}
return [returnDate, time];
};
CommentsInLocalTime.createRelativeDate = function(today, time) {
var daysAgo, descriptiveParts, differenceWord, fmtDays, fmtMonths, fmtYears, last, millisecondsAgo, monthsAgo, totalMonthsAgo, yearsAgo;
millisecondsAgo = today.getTime() - time.getTime();
daysAgo = Math.abs(Math.round(millisecondsAgo / 1000 / 60 / 60 / 24));
differenceWord = '';
last = '';
if (millisecondsAgo >= 0) {
differenceWord = language['ago'];
if (daysAgo <= 7) {
last = language['last'] + ' ';
}
} else {
differenceWord = language['from now'];
if (daysAgo <= 7) {
last = language['this'] + ' ';
}
}
monthsAgo = Math.floor(daysAgo / 365 * 12);
totalMonthsAgo = monthsAgo;
yearsAgo = Math.floor(monthsAgo / 12);
if (monthsAgo < LocalComments.dropMonths) {
yearsAgo = 0;
} else if (LocalComments.dropMonths > 0) {
monthsAgo = 0;
} else {
monthsAgo = monthsAgo - yearsAgo * 12;
}
if (daysAgo < LocalComments.dropDays) {
monthsAgo = 0;
yearsAgo = 0;
} else if (LocalComments.dropDays > 0) {
daysAgo = 0;
} else {
daysAgo = daysAgo - Math.floor(totalMonthsAgo * 365 / 12);
}
descriptiveParts = [];
if (yearsAgo > 0) {
fmtYears = yearsAgo + ' ' + this.pluralize(language['year'], yearsAgo, language['years']);
descriptiveParts.push(fmtYears);
}
if (monthsAgo > 0) {
fmtMonths = monthsAgo + ' ' + this.pluralize(language['month'], monthsAgo, language['months']);
descriptiveParts.push(fmtMonths);
}
if (daysAgo > 0) {
fmtDays = daysAgo + ' ' + this.pluralize(language['day'], daysAgo, language['days']);
descriptiveParts.push(fmtDays);
}
return {
descriptiveDifference: ' (' + descriptiveParts.join(', ') + ' ' + differenceWord + ')',
last: last
};
};
/*
HELPERS
*/
CommentsInLocalTime.addLeadingZero = function(number) {
if (number < 10) {
number = '0' + number;
}
return number;
};
CommentsInLocalTime.convertMonthToNumber = function(month) {
return (new Date(month + ' 1, 2001')).getMonth();
};
CommentsInLocalTime.convertNumberToMonth = function(number) {
return [language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']][number];
};
CommentsInLocalTime.pluralize = function(term, count, plural) {
if (plural === null) {
plural = term + 's';
}
if (count === 1) {
return term;
} else {
return plural;
}
};
CommentsInLocalTime.setDefaultSetting = function() {
var defaultSetting, name, settings;
if (!arguments.length) {
return false;
}
if (typeof arguments[0] === 'object') {
settings = arguments[0];
for (name in settings) {
defaultSetting = settings[name];
if (LocalComments[name] == null) {
LocalComments[name] = defaultSetting;
}
}
return settings;
} else if (typeof arguments[0] === 'string') {
name = arguments[0];
defaultSetting = arguments[1];
if (LocalComments[name] == null) {
LocalComments[name] = defaultSetting;
}
return LocalComments[name];
}
};
return CommentsInLocalTime;
})();
runScript = function() {
return $(window).on( 'load', function() {
if (window.location.href.indexOf('&disable=loco') === -1) {
return CommentsInLocalTime.init();
}
});
};
if (typeof waitForScripts === 'function') {
waitForScripts(runScript);
} else {
runScript();
}
6shb0fubnb9bkabqazvxq78xdnhsayx
14807
14806
2026-08-01T17:24:10Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-CommentsInLocalTime.js]] पासून २५४ आवर्तने आयात केलीत
14806
javascript
text/javascript
// Generated by CoffeeScript 1.8.0
/**
* COMMENTS IN LOCAL TIME
*
* Description:
* Changes [[Coordinated Universal Time|UTC]]-based times and dates,
* such as those used in signatures, to be relative to local time.
*
* Documentation:
* English Wikibooks documentation: [[Wikibooks:Comments in Local Time]]
*/
var CommentsInLocalTime, runScript;
CommentsInLocalTime = (function() {
var LocalComments, language;
function CommentsInLocalTime() {}
language = '';
LocalComments = {};
CommentsInLocalTime.settings = function() {
if (window.LocalComments != null) {
LocalComments = window.LocalComments;
}
/*
Language
LOCALIZING THIS SCRIPT
To localize this script, change the terms below,
to the RIGHT of the colons, to the correct term used in that language.
For example, in the French language,
'Today' : 'Today',
would be
'Today' : "Aujourd'hui",
*/
return LocalComments.language = {
/* relative terms */
'Today': 'Today',
'Yesterday': 'Yesterday',
'Tomorrow': 'Tomorrow',
'last': 'last',
'this': 'this',
/* days of the week */
'Sunday': 'Sunday',
'Monday': 'Monday',
'Tuesday': 'Tuesday',
'Wednesday': 'Wednesday',
'Thursday': 'Thursday',
'Friday': 'Friday',
'Saturday': 'Saturday',
/* months of the year */
'January': 'January',
'February': 'February',
'March': 'March',
'April': 'April',
'May': 'May',
'June': 'June',
'July': 'July',
'August': 'August',
'September': 'September',
'October': 'October',
'November': 'November',
'December': 'December',
/* difference words */
'ago': 'ago',
'from now': 'from now',
/* date phrases */
'year': 'year',
'years': 'years',
'month': 'month',
'months': 'months',
'day': 'day',
'days': 'days'
};
};
/*
APPLICATION
*/
CommentsInLocalTime.init = function() {
/*
Settings
*/
var contentText, namespace, pageAction;
this.settings();
if (LocalComments.language == null) {
return false;
}
language = this.setDefaultSetting('language', LocalComments.language);
this.setDefaultSetting({
'dateDifference': true,
'dateFormat': 'dmy',
'dayOfWeek': true,
'dropDays': 0,
'dropMonths': 0,
'timeFirst': true,
'twentyFourHours': false
});
/*
End Settings
*/
namespace = mw.config.get('wgCanonicalNamespace');
pageAction = mw.config.get('wgAction');
if (['', 'MediaWiki', 'Special'].indexOf(namespace) > -1 || pageAction === 'history') {
return false;
}
contentText = document.getElementById('mw-content-text');
if (mw.config.get('wgAction') !== 'view' || (contentText == null)) {
return false;
}
return this.replaceText(contentText, /(\d{1,2}):(\d{2}), (\d{1,2}) ([A-Z][a-z]+) (\d{4}) \(UTC\)/);
};
CommentsInLocalTime.replaceText = function(node, search) {
var after, afterMatch, before, beforeMatch, child, children, length, match, matches, parent, parentNodeName, position, span, timeArray, timestamp, value, _i, _len, _results;
if (!node) {
return false;
}
if (node.nodeType === 3) {
parent = node.parentNode;
parentNodeName = parent.nodeName;
if (['CODE', 'PRE'].indexOf(parentNodeName) > -1) {
return false;
}
value = node.nodeValue;
matches = value.match(search);
if (matches != null) {
match = matches[0];
position = value.search(search);
length = match.toString().length;
beforeMatch = value.substring(0, position);
afterMatch = value.substring(position + length);
timeArray = this.adjustTime(match.toString(), search);
timestamp = timeArray[1] ? timeArray[1].getTime() : '';
span = document.createElement('span');
span.className = 'localcomments';
span.style.fontSize = '95%';
span.style.whiteSpace = 'nowrap';
span.setAttribute('timestamp', timestamp);
span.title = match;
span.appendChild(document.createTextNode(timeArray[0]));
parent = node.parentNode;
parent.replaceChild(span, node);
before = document.createElement('span');
before.className = 'before-localcomments';
before.appendChild(document.createTextNode(beforeMatch));
after = document.createElement('span');
after.className = 'after-localcomments';
after.appendChild(document.createTextNode(afterMatch));
parent.insertBefore(before, span);
return parent.insertBefore(after, span.nextSibling);
}
} else {
children = [];
child = node.childNodes[0];
while (child) {
children.push(child);
child = child.nextSibling;
}
_results = [];
for (_i = 0, _len = children.length; _i < _len; _i++) {
child = children[_i];
_results.push(this.replaceText(child, search));
}
return _results;
}
};
CommentsInLocalTime.adjustTime = function(originalTimestamp, search) {
var ampm, date, day, dayNames, dayOfTheWeek, descriptiveDifference, finalTime, formattedDate, formattedDayOfTheWeek, hour, last, minute, month, monthName, oldDay, oldHour, oldMinute, oldMonth, oldYear, returnDate, time, today, tomorrow, utcOffset, year, yesterday, _ref, _ref1;
time = originalTimestamp.match(search);
_ref = [time[1], time[2], time[3], time[4], time[5]], oldHour = _ref[0], oldMinute = _ref[1], oldDay = _ref[2], oldMonth = _ref[3], oldYear = _ref[4];
today = new Date();
yesterday = new Date();
tomorrow = new Date();
yesterday.setDate(yesterday.getDate() - 1);
tomorrow.setDate(tomorrow.getDate() + 1);
time = new Date();
time.setUTCFullYear(oldYear, this.convertMonthToNumber(oldMonth), oldDay);
time.setUTCHours(oldHour);
time.setUTCMinutes(oldMinute);
if (isNaN(time)) {
return [originalTimestamp, ''];
}
utcOffset = -1 * time.getTimezoneOffset() / 60;
utcOffset = utcOffset >= 0 ? '+' + utcOffset : '−' + Math.abs(utcOffset);
year = time.getFullYear();
month = this.addLeadingZero(time.getMonth() + 1);
day = time.getDate();
hour = parseInt(time.getHours());
minute = this.addLeadingZero(time.getMinutes());
ampm = '';
if (LocalComments.twentyFourHours) {
hour = this.addLeadingZero(hour);
} else {
ampm = hour <= 11 ? ' am' : ' pm';
if (hour > 12) {
hour -= 12;
} else if (hour === 0) {
hour = 12;
}
}
if (year === today.getFullYear() && month === this.addLeadingZero(today.getMonth() + 1) && day === today.getDate()) {
date = language['Today'];
} else if (year === yesterday.getFullYear() && month === this.addLeadingZero(yesterday.getMonth() + 1) && day === yesterday.getDate()) {
date = language['Yesterday'];
} else if (year === tomorrow.getFullYear() && month === this.addLeadingZero(tomorrow.getMonth() + 1) && day === tomorrow.getDate()) {
date = language['Tomorrow'];
} else {
dayNames = [language['Sunday'], language['Monday'], language['Tuesday'], language['Wednesday'], language['Thursday'], language['Friday'], language['Saturday']];
dayOfTheWeek = dayNames[time.getDay()];
descriptiveDifference = '';
last = '';
if (LocalComments.dateDifference) {
_ref1 = this.createRelativeDate(today, time), descriptiveDifference = _ref1.descriptiveDifference, last = _ref1.last;
}
formattedDate = '';
monthName = this.convertNumberToMonth(time.getMonth());
formattedDate = (function() {
switch (LocalComments.dateFormat.toLowerCase()) {
case 'dmy':
return day + ' ' + monthName + ' ' + year;
case 'mdy':
return monthName + ' ' + day + ', ' + year;
default:
return year + '-' + month + '-' + this.addLeadingZero(day);
}
}).call(this);
formattedDayOfTheWeek = '';
if (LocalComments.dayOfWeek) {
formattedDayOfTheWeek = ', ' + last + dayOfTheWeek;
}
date = formattedDate + formattedDayOfTheWeek + descriptiveDifference;
}
finalTime = hour + ':' + minute + ampm;
if (LocalComments.timeFirst) {
returnDate = finalTime + ', ' + date + ' (UTC' + utcOffset + ')';
} else {
returnDate = date + ', ' + finalTime + ' (UTC' + utcOffset + ')';
}
return [returnDate, time];
};
CommentsInLocalTime.createRelativeDate = function(today, time) {
var daysAgo, descriptiveParts, differenceWord, fmtDays, fmtMonths, fmtYears, last, millisecondsAgo, monthsAgo, totalMonthsAgo, yearsAgo;
millisecondsAgo = today.getTime() - time.getTime();
daysAgo = Math.abs(Math.round(millisecondsAgo / 1000 / 60 / 60 / 24));
differenceWord = '';
last = '';
if (millisecondsAgo >= 0) {
differenceWord = language['ago'];
if (daysAgo <= 7) {
last = language['last'] + ' ';
}
} else {
differenceWord = language['from now'];
if (daysAgo <= 7) {
last = language['this'] + ' ';
}
}
monthsAgo = Math.floor(daysAgo / 365 * 12);
totalMonthsAgo = monthsAgo;
yearsAgo = Math.floor(monthsAgo / 12);
if (monthsAgo < LocalComments.dropMonths) {
yearsAgo = 0;
} else if (LocalComments.dropMonths > 0) {
monthsAgo = 0;
} else {
monthsAgo = monthsAgo - yearsAgo * 12;
}
if (daysAgo < LocalComments.dropDays) {
monthsAgo = 0;
yearsAgo = 0;
} else if (LocalComments.dropDays > 0) {
daysAgo = 0;
} else {
daysAgo = daysAgo - Math.floor(totalMonthsAgo * 365 / 12);
}
descriptiveParts = [];
if (yearsAgo > 0) {
fmtYears = yearsAgo + ' ' + this.pluralize(language['year'], yearsAgo, language['years']);
descriptiveParts.push(fmtYears);
}
if (monthsAgo > 0) {
fmtMonths = monthsAgo + ' ' + this.pluralize(language['month'], monthsAgo, language['months']);
descriptiveParts.push(fmtMonths);
}
if (daysAgo > 0) {
fmtDays = daysAgo + ' ' + this.pluralize(language['day'], daysAgo, language['days']);
descriptiveParts.push(fmtDays);
}
return {
descriptiveDifference: ' (' + descriptiveParts.join(', ') + ' ' + differenceWord + ')',
last: last
};
};
/*
HELPERS
*/
CommentsInLocalTime.addLeadingZero = function(number) {
if (number < 10) {
number = '0' + number;
}
return number;
};
CommentsInLocalTime.convertMonthToNumber = function(month) {
return (new Date(month + ' 1, 2001')).getMonth();
};
CommentsInLocalTime.convertNumberToMonth = function(number) {
return [language['January'], language['February'], language['March'], language['April'], language['May'], language['June'], language['July'], language['August'], language['September'], language['October'], language['November'], language['December']][number];
};
CommentsInLocalTime.pluralize = function(term, count, plural) {
if (plural === null) {
plural = term + 's';
}
if (count === 1) {
return term;
} else {
return plural;
}
};
CommentsInLocalTime.setDefaultSetting = function() {
var defaultSetting, name, settings;
if (!arguments.length) {
return false;
}
if (typeof arguments[0] === 'object') {
settings = arguments[0];
for (name in settings) {
defaultSetting = settings[name];
if (LocalComments[name] == null) {
LocalComments[name] = defaultSetting;
}
}
return settings;
} else if (typeof arguments[0] === 'string') {
name = arguments[0];
defaultSetting = arguments[1];
if (LocalComments[name] == null) {
LocalComments[name] = defaultSetting;
}
return LocalComments[name];
}
};
return CommentsInLocalTime;
})();
runScript = function() {
return $(window).on( 'load', function() {
if (window.location.href.indexOf('&disable=loco') === -1) {
return CommentsInLocalTime.init();
}
});
};
if (typeof waitForScripts === 'function') {
waitForScripts(runScript);
} else {
runScript();
}
6shb0fubnb9bkabqazvxq78xdnhsayx
मिडियाविकी:Gadget-SpecialSearch.js
8
4160
14808
2008-03-25T17:20:24Z
Darklama
2894
turning the search enhancements into an optional gadget instead
14808
javascript
text/javascript
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia; updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
if (wgPageName == "Special:Search") {
var searchEngines = [];
addOnloadHook(WB_SpecialSearchEnhanced);
}
function WB_SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
searchEngines[searchEngines.length] = [action, mainQ, addQ, addV];
return opt;
}
var searchForm = document.forms['powersearch'] || document.forms['search'];
var searchBox = searchForm.lsearchbox || searchForm.search;
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('MediaWiki search', wgScript, 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Windows Live', 'http://search.live.com/results.aspx', 'q', 'q1', 'site:http://en.wikibooks.org'));
searchBox.style.marginLeft = '0px';
var lStat = document.getElementById('loadStatus') || searchForm.fulltext;
lStat.parentNode.insertBefore(selectBox, lStat);
}
98efaz0le7pl7j6lisejapt99txtosw
14809
14808
2010-12-29T14:40:01Z
Darklama
2894
used jQuery and add search engine
14809
javascript
text/javascript
// <source lang="javascript">
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function WB_SpecialSearchEnhanced() {
var search = $j('form#powersearch')[0] || $j('form#search')[0];
var search_for = $('input:text:first', search)[0];
var createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
};
var $search_what = $j('<select id="searchEngine"/>')
.append(createOption('Mediawiki search', wgScript, 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'))
.append(createOption('Exalead', 'http://www.exalead.com/wikibooks/results', 'q', 'language', 'en'));
$(search_for).before($search_what);
$j(search).submit( function() {
var which = searchEngines[$search_what[0].selectedIndex];
search_for.name = which.name;
this.action = which.action;
this.title.name = which.what;
this.title.value = which.where;
});
}
if (wgPageName == "Special:Search") {
var searchEngines = [];
$j(window).load((WB_SpecialSearchEnhanced);
}
// </source>
skkc0qn126a5upmts0opery3eat1cz0
14810
14809
2010-12-29T14:47:52Z
Darklama
2894
typo
14810
javascript
text/javascript
// <source lang="javascript">
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function WB_SpecialSearchEnhanced() {
var search = $j('form#powersearch')[0] || $j('form#search')[0];
var search_for = $('input:text:first', search)[0];
var createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
};
var $search_what = $j('<select id="searchEngine"/>')
.append(createOption('Mediawiki search', wgScript, 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'))
.append(createOption('Exalead', 'http://www.exalead.com/wikibooks/results', 'q', 'language', 'en'));
$(search_for).before($search_what);
$j(search).submit( function() {
var which = searchEngines[$search_what[0].selectedIndex];
search_for.name = which.name;
this.action = which.action;
this.title.name = which.what;
this.title.value = which.where;
});
}
if (wgPageName == "Special:Search") {
var searchEngines = [];
$j(window).load(WB_SpecialSearchEnhanced);
}
// </source>
p11b2jzmdfj0rgm0ca2rd4r7umdooll
14811
14810
2010-12-29T15:08:18Z
Darklama
2894
fixed
14811
javascript
text/javascript
// <source lang="javascript">
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function WB_SpecialSearchEnhanced() {
var search = $j('form#powersearch')[0] || $j('form#search')[0];
var search_for = $('input:text:first', search)[0];
var createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
};
var $search_what = $j('<select id="searchEngine"/>')
.append(createOption('Mediawiki search', wgScript, 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'))
.append(createOption('Exalead', 'http://www.exalead.com/wikibooks/results', 'q', 'language', 'en'));
$(search_for).before($search_what);
$j(search).submit( function() {
var which = searchEngines[$search_what[0].selectedIndex];
search_for.name = which.name;
$(this).attr('action', which.action);
$('input[name=title]', this).attr( { name: which.what, value: which.where } );
});
}
if (wgPageName == "Special:Search") {
var searchEngines = [];
$j(window).load(WB_SpecialSearchEnhanced);
}
// </source>
trw3ovh66e5fwnqp2bw5zgk5lf8hjof
14812
14811
2010-12-29T15:31:23Z
Darklama
2894
fixed link
14812
javascript
text/javascript
// <source lang="javascript">
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function WB_SpecialSearchEnhanced() {
var search = $j('form#powersearch')[0] || $j('form#search')[0];
var search_for = $('input:text:first', search)[0];
var createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
};
var $search_what = $j('<select id="searchEngine"/>')
.append(createOption('Mediawiki search', wgScript, 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'))
.append(createOption('Exalead', 'http://www.exalead.com/search/wikibooks/results/', 'q', 'language', 'en'));
$(search_for).before($search_what);
$j(search).submit( function() {
var which = searchEngines[$search_what[0].selectedIndex];
search_for.name = which.name;
$(this).attr('action', which.action);
$('input[name=title]', this).attr( { name: which.what, value: which.where } );
});
}
if (wgPageName == "Special:Search") {
var searchEngines = [];
$j(window).load(WB_SpecialSearchEnhanced);
}
// </source>
k5ly60g8g6nfgp3kun4vrz7r7ecy19k
14813
14812
2010-12-29T15:34:04Z
Darklama
2894
looks like Exalead cannot be used
14813
javascript
text/javascript
// <source lang="javascript">
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function WB_SpecialSearchEnhanced() {
var search = $j('form#powersearch')[0] || $j('form#search')[0];
var search_for = $('input:text:first', search)[0];
var createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
};
var $search_what = $j('<select id="searchEngine"/>')
.append(createOption('Mediawiki search', wgScript, 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
$(search_for).before($search_what);
$j(search).submit( function() {
var which = searchEngines[$search_what[0].selectedIndex];
search_for.name = which.name;
$(this).attr('action', which.action);
$('input[name=title]', this).attr( { name: which.what, value: which.where } );
});
}
if (wgPageName == "Special:Search") {
var searchEngines = [];
$j(window).load(WB_SpecialSearchEnhanced);
}
// </source>
hqok940se3tfbqky7v9rzuub7hmty7f
14814
14813
2014-06-11T17:38:36Z
Darklama
2894
update to replace deprecated things
14814
javascript
text/javascript
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function SpecialSearchEnhanced() {
var searchEngines = [],
createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
},
$search = $('#powersearch').add('#search').eq(0),
$search_for = $search.find('input:text:first'),
$search_what = $('<select id="searchEngine"/>')
.append(createOption('English Wikibooks', mw.config.get('wgScript'), 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
$search_for.before($search_what);
$search.submit( { 'search': searchEngines }, function(e) {
var which = e.data.search[$('#searchEngine').prop('selectedIndex')];
$search_for.attr('name', which.name);
$(this).attr('action', which.action);
$(this).find('input[name=title]').attr({ name: which.what, value: which.where });
});
}
if (mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search') {
$(SpecialSearchEnhanced);
}
41ex5sqcs8tq749z46pv7tbu8ct81jx
14815
14814
2014-06-11T18:04:24Z
Darklama
2894
use more descriptive variable names, and look for search input
14815
javascript
text/javascript
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function SpecialSearchEnhanced() {
var searchEngines = [],
createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
},
$form = $('#powersearch').add('#search').eq(0),
$search = $form.find('input[type=search').eq(0),
$search_what = $('<select id="searchEngine"/>')
.append(createOption('English Wikibooks', mw.config.get('wgScript'), 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
$search.before($search_what);
$form.submit( { 'search': searchEngines }, function(e) {
var which = e.data.search[$('#searchEngine').prop('selectedIndex')];
$search.attr('name', which.name);
$(this).attr('action', which.action);
$(this).find('input[name=title]').attr({ name: which.what, value: which.where });
});
}
if (mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search') {
$(SpecialSearchEnhanced);
}
l1pq396439u1bnoegzj16x9hmyoo0as
14816
14815
2014-06-11T18:05:18Z
Darklama
2894
fix typo
14816
javascript
text/javascript
/*
* Change Special:Search to use a drop-down menu to pick which search engine to use
* Created by [[w:User:Gracenotes]] for Wikipedia;
* Updated by [[w:User:Brion VIBBER]] for Wikipedia;
* Maintained at Wikibooks by [[User:Mike.lifeguard]] and [[User:Darklama]]
*/
function SpecialSearchEnhanced() {
var searchEngines = [],
createOption = function(site, action, mainQ, addQ, addV) {
searchEngines.push({ action: action, name: mainQ, what: addQ, where: addV});
return '<option>' + site + '</option>';
},
$form = $('#powersearch').add('#search').eq(0),
$search = $form.find('input[type=search]').eq(0),
$search_what = $('<select id="searchEngine"/>')
.append(createOption('English Wikibooks', mw.config.get('wgScript'), 'search', 'title', 'Special:Search'))
.append(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'))
.append(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'))
.append(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
$search.before($search_what);
$form.submit( { 'search': searchEngines }, function(e) {
var which = e.data.search[$('#searchEngine').prop('selectedIndex')];
$search.attr('name', which.name);
$(this).attr('action', which.action);
$(this).find('input[name=title]').attr({ name: which.what, value: which.where });
});
}
if (mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search') {
$(SpecialSearchEnhanced);
}
sc6i1qv7beeucr4z7zoc33bsrgq5l42
14817
14816
2015-08-15T11:07:24Z
Az1568
66
Update
14817
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'http://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'http://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'http://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'http://www.wikiwix.com/', 'action', 'lang', 'en'));
selectBox.appendChild(createOption('Exalead', 'http://www.exalead.com/wikibooks/results', 'q', 'language', 'en'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
ruwlel6p1pm9qtwlj68i5kxiqnhpcu9
14818
14817
2016-08-14T11:51:18Z
JackPotte
1965
warning HTTPS
14818
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'https://www.wikiwix.com/', 'action', 'lang', 'en'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/wikibooks/results', 'q', 'language', 'en'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
i8l3i4elb5xlnzjbki0jioytp094l4k
14819
14818
2016-08-14T11:55:31Z
JackPotte
1965
Reparation
14819
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'https://www.wikiwix.com/', 'action', 'lang', 'en'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/', 'q', 'language', 'en', 'site:http://en.wikibooks.org'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
fm4pfb4ura73gh913b17090vq5proeh
14820
14819
2016-08-14T11:56:25Z
JackPotte
1965
14820
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:http://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'https://www.wikiwix.com/', 'action', 'lang', 'en'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/', 'q' + ' site:http://en.wikibooks.org', 'language', 'en'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
4b7fh54nvj7jhe3n2vzx529s87qcx5z
14821
14820
2016-08-14T11:58:04Z
JackPotte
1965
14821
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:https://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'https://www.wikiwix.com/', 'action', 'lang', 'en'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/', 'q', 'language', 'en', 'site', 'en.wikibooks.org'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
98cxe4y6rlwrev8r0cy7wwv1w78f2w0
14822
14821
2016-08-14T11:59:37Z
JackPotte
1965
14822
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:https://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'https://www.wikiwix.com/', 'action', 'lang', 'en'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/', 'q', 'site', 'en.wikibooks.org'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
n6xtihu65m51hftvd4ug2wtjr1a3no1
14823
14822
2016-08-14T12:00:37Z
JackPotte
1965
14823
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:https://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'http://www.wikiwix.com/', 'action', 'lang', 'en'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/', 'q', 'site', 'en.wikibooks.org'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
0jdfykefct9x5kipr6xsnz8wp5oi5d1
14824
14823
2016-08-14T12:02:08Z
JackPotte
1965
14824
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:https://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'http://www.wikiwix.com/', 'action', 'disp', 'book'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/', 'q', 'site', 'en.wikibooks.org'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
ndlx1o6ghlrs501dakzjv51s2id00i7
14825
14824
2026-08-01T17:24:50Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-SpecialSearch.js]] पासून १७ आवर्तने आयात केलीत
14824
javascript
text/javascript
/** Change Special:Search to use a drop-down menu *******************************************************
*
* Description: Change Special:Search to use a drop-down menu, with the default being
* the internal MediaWiki engine
* Created and maintained by: [[User:Gracenotes]]
*/
function SpecialSearchEnhanced() {
var createOption = function(site, action, mainQ, addQ, addV) {
var opt = document.createElement('option');
opt.appendChild(document.createTextNode(site));
window.searchEngines.push([action, mainQ, addQ, addV]);
return opt;
}
if (document.forms.powersearch)
var searchForm = document.forms.powersearch;
if (document.forms.search)
var searchForm = document.forms.search;
if (searchForm.lsearchbox) {
var searchBox = searchForm.lsearchbox;
} else {
var searchBox = searchForm.search;
}
var selectBox = document.createElement('select');
selectBox.id = 'searchEngine';
searchForm.onsubmit = function() {
var optSelected = window.searchEngines[document.getElementById('searchEngine').selectedIndex];
searchForm.action = optSelected[0];
searchBox.name = optSelected[1];
searchForm.title.value = optSelected[3];
searchForm.title.name = optSelected[2];
}
selectBox.appendChild(createOption('English Wikibooks', mw.config.get( 'wgScript' ), 'search', 'title', 'Special:Search'));
selectBox.appendChild(createOption('Google', 'https://www.google.com/search', 'q', 'sitesearch', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Yahoo', 'https://search.yahoo.com/search', 'p', 'vs', 'en.wikibooks.org'));
selectBox.appendChild(createOption('Bing', 'https://www.bing.com/search', 'q', 'q1', 'site:https://en.wikibooks.org'));
selectBox.appendChild(createOption('Wikiwix', 'http://www.wikiwix.com/', 'action', 'disp', 'book'));
selectBox.appendChild(createOption('Exalead', 'https://www.exalead.com/', 'q', 'site', 'en.wikibooks.org'));
searchBox.style.marginLeft = '0px';
if (document.getElementById('loadStatus')) {
var lStat = document.getElementById('loadStatus');
} else {
var lStat = searchForm.title;
if( typeof lStat === 'object' && typeof lStat.length === 'number' ) lStat = lStat[0];
}
lStat.parentNode.insertBefore(selectBox, lStat);
}
window.searchEngines = [];
// Script is specific to Special:Search
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search'){
$(SpecialSearchEnhanced);
}
ndlx1o6ghlrs501dakzjv51s2id00i7
मिडियाविकी:Gadget-rightsfilter.js
8
4161
14826
2008-01-12T07:15:28Z
Mike.lifeguard
117
from [[w:User:Splarka/rightsfilter.js]]
14826
javascript
text/javascript
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if((wgPageName=='Special:Log')) addOnloadHook(filterLogsButton)
function filterLogsButton() {
addPortletLink('p-cactions','javascript:filterLogsForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter) filterLogsForm();
}
function filterLogsForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of these log entries.'
//generate the form
document.getElementById('ca-rxfilter').style.display = 'none';
var frm = document.getElementsByTagName('form')[0];
var rf = document.createElement('form');
rf.setAttribute('action','javascript:void(0)');
rf.setAttribute('id','rfform');
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter logs (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
sub1.setAttribute('onclick','filterLogs(false)');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
sub2.setAttribute('onclick','filterLogs(true)');
fs.appendChild(sub2)
rf.appendChild(fs);
frm.parentNode.insertBefore(rf,frm);
}
function filterLogs(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of <li>
var uls = document.getElementById('bodyContent').getElementsByTagName('ul');
if(uls.length == 0) return
var lis = uls[0].getElementsByTagName('li');
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other Special:Log
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
0fvecag00m7cijuz18bcsw597ewsg83
14827
14826
2008-01-14T19:00:11Z
Mike.lifeguard
117
also for CUs
14827
javascript
text/javascript
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if (wgPageName=="Special:CheckUser")
addOnloadHook(filterLogsButton)
else if(wgPageName=="Special:Log"){
addOnloadHook(filterLogsButton)
}
function filterLogsButton() {
addPortletLink('p-cactions','javascript:filterLogsForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter) filterLogsForm();
}
function filterLogsForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of these log entries.'
//generate the form
document.getElementById('ca-rxfilter').style.display = 'none';
var frm = document.getElementsByTagName('form')[0];
var rf = document.createElement('form');
rf.setAttribute('action','javascript:void(0)');
rf.setAttribute('id','rfform');
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter logs (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
sub1.setAttribute('onclick','filterLogs(false)');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
sub2.setAttribute('onclick','filterLogs(true)');
fs.appendChild(sub2)
rf.appendChild(fs);
frm.parentNode.insertBefore(rf,frm);
}
function filterLogs(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of <li>
var uls = document.getElementById('bodyContent').getElementsByTagName('ul');
if(uls.length == 0) return
var lis = uls[0].getElementsByTagName('li');
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other Special:Log
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
jjgal9qo2ljblpgu5s2wtu60ug4vh6t
14828
14827
2008-01-17T14:03:13Z
Mike.lifeguard
117
also on contribs (very cool)
14828
javascript
text/javascript
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if (wgPageName=="Special:CheckUser" || wgPageName=="Special:Contributions")
addOnloadHook(filterLogsButton)
else if(wgPageName=="Special:Log"){
addOnloadHook(filterLogsButton)
}
function filterLogsButton() {
addPortletLink('p-cactions','javascript:filterLogsForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter) filterLogsForm();
}
function filterLogsForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of these log entries.'
//generate the form
document.getElementById('ca-rxfilter').style.display = 'none';
var frm = document.getElementsByTagName('form')[0];
var rf = document.createElement('form');
rf.setAttribute('action','javascript:void(0)');
rf.setAttribute('id','rfform');
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter logs (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
sub1.setAttribute('onclick','filterLogs(false)');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
sub2.setAttribute('onclick','filterLogs(true)');
fs.appendChild(sub2)
rf.appendChild(fs);
frm.parentNode.insertBefore(rf,frm);
}
function filterLogs(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of <li>
var uls = document.getElementById('bodyContent').getElementsByTagName('ul');
if(uls.length == 0) return
var lis = uls[0].getElementsByTagName('li');
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other Special:Log
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
mae17csidsz38bgtn43ltfxg5lpx5ft
14829
14828
2008-03-08T01:41:57Z
Mike.lifeguard
117
update from en.wp
14829
javascript
text/javascript
/* <li> element Filter Script, version [0.1.1]
Should currently work on all known skins (with a #contentSub or #topbar)
*/
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'Linksearch' || wgCanonicalSpecialPageName == 'Contributions' || queryString('lifilter')) addOnloadHook(filterLiButton)
function filterLiButton() {
if(document.getElementById('p-cactions')) {
addPortletLink('p-cactions','javascript:filterLiForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm();
} else {
filterLiForm(); //not a portlet skin, so add the filter anyway.
}
}
function filterLiForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.'
//generate the form
try { document.getElementById('ca-rxfilter').style.display = 'none' } catch(e) {}
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
if(!obj) return;
var rf = document.createElement('div');
rf.setAttribute('id','rfform');
rf.style.color = 'black';
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter <li> list (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
addClickHandler(sub1,function() { filterLi(false) });
sub1.setAttribute('onclick','');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
addClickHandler(sub2,function() { filterLi(true) });
fs.appendChild(sub2)
rf.appendChild(fs);
obj.appendChild(rf);
}
function filterLi(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of all <li> in the content
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0]
var lis = bod.getElementsByTagName('li');
if(lis.length==0) return;
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other list of <li> objects
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
5v2rr3z89komrrs45qeghsh0ellk1bx
14830
14829
2008-03-19T05:34:59Z
Mike.lifeguard
117
or if Ipblocklist
14830
javascript
text/javascript
/* <li> element Filter Script, version [0.1.1]
Should currently work on all known skins (with a #contentSub or #topbar)
*/
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'Linksearch' || wgCanonicalSpecialPageName == 'Contributions' wgCanonicalSpecialPageName == 'Ipblocklist' || queryString('lifilter')) addOnloadHook(filterLiButton)
function filterLiButton() {
if(document.getElementById('p-cactions')) {
addPortletLink('p-cactions','javascript:filterLiForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm();
} else {
filterLiForm(); //not a portlet skin, so add the filter anyway.
}
}
function filterLiForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.'
//generate the form
try { document.getElementById('ca-rxfilter').style.display = 'none' } catch(e) {}
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
if(!obj) return;
var rf = document.createElement('div');
rf.setAttribute('id','rfform');
rf.style.color = 'black';
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter <li> list (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
addClickHandler(sub1,function() { filterLi(false) });
sub1.setAttribute('onclick','');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
addClickHandler(sub2,function() { filterLi(true) });
fs.appendChild(sub2)
rf.appendChild(fs);
obj.appendChild(rf);
}
function filterLi(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of all <li> in the content
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0]
var lis = bod.getElementsByTagName('li');
if(lis.length==0) return;
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other list of <li> objects
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
rmrqnf4j2loyc9e5im5uukfb62r56o8
14831
14830
2008-03-19T05:35:49Z
Mike.lifeguard
117
whoops
14831
javascript
text/javascript
/* <li> element Filter Script, version [0.1.1]
Should currently work on all known skins (with a #contentSub or #topbar)
*/
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'Linksearch' || wgCanonicalSpecialPageName == 'Contributions' || wgCanonicalSpecialPageName == 'Ipblocklist' || queryString('lifilter')) addOnloadHook(filterLiButton)
function filterLiButton() {
if(document.getElementById('p-cactions')) {
addPortletLink('p-cactions','javascript:filterLiForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm();
} else {
filterLiForm(); //not a portlet skin, so add the filter anyway.
}
}
function filterLiForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.'
//generate the form
try { document.getElementById('ca-rxfilter').style.display = 'none' } catch(e) {}
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
if(!obj) return;
var rf = document.createElement('div');
rf.setAttribute('id','rfform');
rf.style.color = 'black';
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter <li> list (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
addClickHandler(sub1,function() { filterLi(false) });
sub1.setAttribute('onclick','');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
addClickHandler(sub2,function() { filterLi(true) });
fs.appendChild(sub2)
rf.appendChild(fs);
obj.appendChild(rf);
}
function filterLi(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of all <li> in the content
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0]
var lis = bod.getElementsByTagName('li');
if(lis.length==0) return;
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other list of <li> objects
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
deduwlj3a98os5tgseloyzdwgpqfi4e
14832
14831
2008-03-25T19:27:29Z
Mike.lifeguard
117
also on checkuser
14832
javascript
text/javascript
/* <li> element Filter Script, version [0.1.1]
Should currently work on all known skins (with a #contentSub or #topbar)
*/
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'Checkuser' || wgCanonicalSpecialPageName == 'Linksearch' || wgCanonicalSpecialPageName == 'Contributions' || wgCanonicalSpecialPageName == 'Ipblocklist' || queryString('lifilter')) addOnloadHook(filterLiButton)
function filterLiButton() {
if(document.getElementById('p-cactions')) {
addPortletLink('p-cactions','javascript:filterLiForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm();
} else {
filterLiForm(); //not a portlet skin, so add the filter anyway.
}
}
function filterLiForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.'
//generate the form
try { document.getElementById('ca-rxfilter').style.display = 'none' } catch(e) {}
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
if(!obj) return;
var rf = document.createElement('div');
rf.setAttribute('id','rfform');
rf.style.color = 'black';
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter <li> list (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
addClickHandler(sub1,function() { filterLi(false) });
sub1.setAttribute('onclick','');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
addClickHandler(sub2,function() { filterLi(true) });
fs.appendChild(sub2)
rf.appendChild(fs);
obj.appendChild(rf);
}
function filterLi(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of all <li> in the content
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0]
var lis = bod.getElementsByTagName('li');
if(lis.length==0) return;
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other list of <li> objects
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
5dklnxo2nwauq2zxgimz8zipkdng1vd
14833
14832
2008-03-25T19:28:16Z
Mike.lifeguard
117
camelcase
14833
javascript
text/javascript
/* <li> element Filter Script, version [0.1.1]
Should currently work on all known skins (with a #contentSub or #topbar)
*/
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'CheckUser' || wgCanonicalSpecialPageName == 'Linksearch' || wgCanonicalSpecialPageName == 'Contributions' || wgCanonicalSpecialPageName == 'Ipblocklist' || queryString('lifilter')) addOnloadHook(filterLiButton)
function filterLiButton() {
if(document.getElementById('p-cactions')) {
addPortletLink('p-cactions','javascript:filterLiForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm();
} else {
filterLiForm(); //not a portlet skin, so add the filter anyway.
}
}
function filterLiForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.'
//generate the form
try { document.getElementById('ca-rxfilter').style.display = 'none' } catch(e) {}
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
if(!obj) return;
var rf = document.createElement('div');
rf.setAttribute('id','rfform');
rf.style.color = 'black';
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter <li> list (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
addClickHandler(sub1,function() { filterLi(false) });
sub1.setAttribute('onclick','');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
addClickHandler(sub2,function() { filterLi(true) });
fs.appendChild(sub2)
rf.appendChild(fs);
obj.appendChild(rf);
}
function filterLi(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of all <li> in the content
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0]
var lis = bod.getElementsByTagName('li');
if(lis.length==0) return;
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other list of <li> objects
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
78g5yee1dvadmusrgivgwa5taw47hrb
14834
14833
2008-10-04T03:26:11Z
Mike.lifeguard
117
camelcase
14834
javascript
text/javascript
/* <li> element Filter Script, version [0.1.1]
Should currently work on all known skins (with a #contentSub or #topbar)
*/
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'CheckUser' || wgCanonicalSpecialPageName == 'LinkSearch' || wgCanonicalSpecialPageName == 'Contributions' || wgCanonicalSpecialPageName == 'IPBlockList' || queryString('lifilter')) addOnloadHook(filterLiButton)
function filterLiButton() {
if(document.getElementById('p-cactions')) {
addPortletLink('p-cactions','javascript:filterLiForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm();
} else {
filterLiForm(); //not a portlet skin, so add the filter anyway.
}
}
function filterLiForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.'
//generate the form
try { document.getElementById('ca-rxfilter').style.display = 'none' } catch(e) {}
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
if(!obj) return;
var rf = document.createElement('div');
rf.setAttribute('id','rfform');
rf.style.color = 'black';
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter <li> list (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
addClickHandler(sub1,function() { filterLi(false) });
sub1.setAttribute('onclick','');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
addClickHandler(sub2,function() { filterLi(true) });
fs.appendChild(sub2)
rf.appendChild(fs);
obj.appendChild(rf);
}
function filterLi(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of all <li> in the content
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0]
var lis = bod.getElementsByTagName('li');
if(lis.length==0) return;
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other list of <li> objects
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
cymhdjpwwiwkhe13p171p4dlfvctk7m
14835
14834
2008-10-05T21:37:40Z
Mike.lifeguard
117
sync to meta
14835
javascript
text/javascript
// Log filter script
// Created by [[w:User:Splarka|Splarka]] & amended [[b:User:Mike.lifeguard]]
/* <li> element Filter Script, version [0.1.1]
Should currently work on all known skins (with a #contentSub or #topbar)
*/
var rightsLogOnly = (document.location.href.indexOf('type=rights')==-1 && document.location.href.indexOf('Log/rights')==-1) ? false : true
if(wgAction == 'history' || wgCanonicalSpecialPageName == 'Search' || wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'CheckUser' || wgCanonicalSpecialPageName == 'LinkSearch' || wgCanonicalSpecialPageName == 'Contributions' || wgCanonicalSpecialPageName == 'IPBlockList' || queryString('lifilter')) addOnloadHook(filterLiButton)
function filterLiButton() {
if(document.getElementById('p-cactions')) {
addPortletLink('p-cactions','javascript:filterLiForm()','Filter','ca-rxfilter','Open interactive log entry regex filter thingy');
if(window.AutoLoadLogsFilter || queryString('lifilter')) filterLiForm();
} else {
filterLiForm(); //not a portlet skin, so add the filter anyway.
}
}
function filterLiForm() {
var instructions = (rightsLogOnly) ? 'Regex filter the space-delimited list of rights.' : 'Regex filter the plain text representation of this list.'
//generate the form
try { document.getElementById('ca-rxfilter').style.display = 'none' } catch(e) {}
var obj = (document.getElementById('contentSub')) ? document.getElementById('contentSub') : document.getElementById('topbar')
if(!obj) return;
var rf = document.createElement('div');
rf.setAttribute('id','rfform');
rf.style.color = 'black';
var fs = document.createElement('fieldset');
var is = document.createElement('p');
is.appendChild(document.createTextNode(instructions));
fs.appendChild(is);
var lg = document.createElement('legend');
lg.appendChild(document.createTextNode('Filter <li> list (javascript)'));
fs.appendChild(lg);
if(rightsLogOnly) {
var sel = document.createElement('select');
sel.setAttribute('id','rfselect');
var op1 = document.createElement('option');
op1.appendChild(document.createTextNode('added rights'));
sel.appendChild(op1);
var op2 = document.createElement('option');
op2.appendChild(document.createTextNode('removed rights'));
sel.appendChild(op2);
var op3 = document.createElement('option');
op3.appendChild(document.createTextNode('added OR removed'));
sel.appendChild(op3);
var op4 = document.createElement('option');
op4.appendChild(document.createTextNode('added/removed/static'));
sel.appendChild(op4);
fs.appendChild(sel);
}
var lab1 = document.createElement('label');
lab1.appendChild(document.createTextNode(' Regex string: '));
lab1.setAttribute('for','rfinput1');
fs.appendChild(lab1);
fs.appendChild(document.createTextNode(' '));
var inp1 = document.createElement('input');
inp1.setAttribute('id','rfinput1');
inp1.setAttribute('name','rfinput1');
inp1.setAttribute('type','text');
fs.appendChild(inp1);
var chk1 = document.createElement('input');
chk1.setAttribute('id','rfinput2');
chk1.setAttribute('name','rfinput2');
chk1.setAttribute('type','checkbox');
fs.appendChild(chk1);
var lab2 = document.createElement('label');
lab2.appendChild(document.createTextNode('Invert '));
lab2.setAttribute('for','rfinput2');
fs.appendChild(lab2);
var sub1 = document.createElement('input');
sub1.setAttribute('type','button');
sub1.setAttribute('value','filter');
addClickHandler(sub1,function() { filterLi(false) });
sub1.setAttribute('onclick','');
fs.appendChild(sub1)
fs.appendChild(document.createTextNode(' '));
var sub2 = document.createElement('input');
sub2.setAttribute('type','button');
sub2.setAttribute('value','hilight');
addClickHandler(sub2,function() { filterLi(true) });
fs.appendChild(sub2)
rf.appendChild(fs);
obj.appendChild(rf);
}
function filterLi(hilight) {
//grab options from form
if(rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
//grab the list of all <li> in the content
var bod = (document.getElementById('bodyContent')) ? document.getElementById('bodyContent') : document.getElementsByTagName('body')[0]
var lis = bod.getElementsByTagName('li');
if(lis.length==0) return;
//iterate
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i //the regex used to grab the Special:Log/rights changes
for(var i=0;i<lis.length;i++) {
if(rightsLogOnly) {
//Special:Log/rights
var oldr = gettext(lis[i]).replace(rightrx,'$1').replace(/\, /g,' ');
var newr = gettext(lis[i]).replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0;j<oldrl.length;j++) {
for (var k=0;k<newrl.length;k++) {
if(oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch(type) {
case 0: var look = addr; break;
case 1: var look = remr; break;
case 2: var look = remr + ' ' + addr; break;
case 3: var look = oldr + ' ' + newr; break;
}
} else {
//Any other list of <li> objects
var look = gettext(lis[i]);
}
lis[i].style.display = '';
lis[i].style.backgroundColor = '';
if ((look.search(rx)!=-1 && !invert) || (look.search(rx)==-1 && invert)) {
if(hilight) lis[i].style.backgroundColor = '#ffff99';
} else {
if(!hilight) lis[i].style.display = 'none';
}
}
}
function gettext(object) {
if (object.nodeType == 3) return object.nodeValue;
var txt = [];
var i=0;
while(object.childNodes[i]) {
txt[txt.length] = gettext(object.childNodes[i]);
i++;
}
return txt.join('');
}
function queryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {
}
}
return null;
}
omofxtasio28m3756g1i33u238tpdfj
14836
14835
2010-12-08T18:45:32Z
Darklama
2894
used jquery
14836
javascript
text/javascript
// <source lang="javascript">
// Log and <li> filter script, version [0.1.1]
// Created by [[w:User:Splarka|Splarka]] & amended [[User:Mike.lifeguard]]
var rightsLogOnly = (QueryString('type') == 'rights' || document.location.href.indexOf('Log/rights') != -1 );
if ( wgAction == 'history' ||
wgCanonicalSpecialPageName == 'Search' ||
wgCanonicalSpecialPageName == 'Log' ||
wgCanonicalSpecialPageName == 'CheckUser' ||
wgCanonicalSpecialPageName == 'LinkSearch' ||
wgCanonicalSpecialPageName == 'Contributions' ||
wgCanonicalSpecialPageName == 'IPBlockList' ||
QueryString('lifilter'))
{
$j(document).ready( function() {
if (document.getElementById('p-cactions')) {
addPortletLink('p-cactions', 'javascript:filterLiForm()' , 'Filter', 'ca-rxfilter', 'Open interactive log filter');
if (window.AutoLoadLogsFilter || QueryString('lifilter')) {
filterLiForm();
}
} else {
filterLiForm(); // not a portlet skin, so add the filter anyway.
}
}
}
function filterLiForm() {
var obj = document.getElementById('contentSub') || document.getElementById('topbar');
if ( !obj ) { return; }
var instructions = (rightsLogOnly) ? 'Filter by space-delimited list of rights.' : 'Filter the plain text representation of this list.'
// generate the form
$j('#ca-rxfilter).css('display', 'none);
var form = '<div id="rfform" style="color:black;"></div>';
var field += '<fieldset>';
field += '<p>'+instructions+'</p>';
field += '<legend>Filter list</legend>';
if (rightsLogOnly) {
field += '<select id="rfselect"><option>+ rights</option><option>- rights</option>';
field += '<option>either</option><option>all</option></select>';
}
field += '<label for="rfinput1">Match:</label> <input id="rfinput1" type="text" />';
field += '<input id="rfinput2" type="checkbox" /> <label for="rfinput2">Invert</label>';
field += '</fieldset>';
$j(obj).append(
$j(form).append(
$j(field).append( $j('<input type="button" value="filter" />').click( function() { filterLi(false); } ) )
.append( $j('<input type="button" value="highlight" />').click( function() { filterLi(true); } ) )
);
);
return;
}
function filterLi(hilight) {
// grab options from form
if (rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i // the regex used to grab the Special:Log/rights changes
// grab the list of all <li> in the content
var bod = document.getElementById('bodyContent') || document.getElementsByTagName('body')[0];
$j('li', bod).each( function() {
var look = '';
if (rightsLogOnly) {
// Special:Log/rights
var text = $(this).text();
var oldr = text.replace(rightrx,'$1').replace(/\, /g,' ');
var newr = text.replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0; j<oldrl.length; ++j) {
for (var k=0; k<newrl.length; ++k) {
if (oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch (type) {
case 0: look = addr; break;
case 1: look = remr; break;
case 2: look = remr + ' ' + addr; break;
case 3: look = oldr + ' ' + newr; break;
}
} else {
look = $j(this).text();
}
$j(this).css( { display: '', 'backgroundColor': '' } );
if ( (look.search(rx) != -1 && !invert) || (look.search(rx) == -1 && invert) ) {
if (hilight) $j(this).css('backgroundColor', '#ffff99');
} else {
if (!hilight) $j(this).css('display', 'none');
}
}
}
function QueryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {}
}
return null;
}
// </source>
ppp8aqtrlxe3l4pbdn0cdc6yhznpvey
14837
14836
2010-12-08T19:45:13Z
Darklama
2894
14837
javascript
text/javascript
// <source lang="javascript">
// Log and <li> filter script, version [0.1.1]
// Created by [[w:User:Splarka|Splarka]] & amended [[User:Mike.lifeguard]]
var rightsLogOnly = (QueryString('type') == 'rights' || document.location.href.indexOf('Log/rights') != -1 );
if ( wgAction == 'history' ||
wgCanonicalSpecialPageName == 'Search' ||
wgCanonicalSpecialPageName == 'Log' ||
wgCanonicalSpecialPageName == 'CheckUser' ||
wgCanonicalSpecialPageName == 'LinkSearch' ||
wgCanonicalSpecialPageName == 'Contributions' ||
wgCanonicalSpecialPageName == 'IPBlockList' ||
QueryString('lifilter'))
{
$j(document).ready( function() {
if (document.getElementById('p-cactions')) {
addPortletLink('p-cactions', 'javascript:filterLiForm()' , 'Filter', 'ca-rxfilter', 'Open interactive log filter');
if (window.AutoLoadLogsFilter || QueryString('lifilter')) {
filterLiForm();
}
} else {
filterLiForm(); // not a portlet skin, so add the filter anyway.
}
});
}
function filterLiForm() {
var obj = document.getElementById('contentSub') || document.getElementById('topbar');
if ( !obj ) { return; }
var instructions = (rightsLogOnly) ? 'Filter by space-delimited list of rights.' : 'Filter the plain text representation of this list.'
// generate the form
$j('#ca-rxfilter).css('display', 'none);
var form = '<div id="rfform" style="color:black;"></div>';
var field += '<fieldset>';
field += '<p>'+instructions+'</p>';
field += '<legend>Filter list</legend>';
if (rightsLogOnly) {
field += '<select id="rfselect"><option>+ rights</option><option>- rights</option>';
field += '<option>either</option><option>all</option></select>';
}
field += '<label for="rfinput1">Match:</label> <input id="rfinput1" type="text" />';
field += '<input id="rfinput2" type="checkbox" /> <label for="rfinput2">Invert</label>';
field += '</fieldset>';
$j(obj).append(
$j(form).append(
$j(field).append( $j('<input type="button" value="filter" />').click( function() { filterLi(false); } ) )
.append( $j('<input type="button" value="highlight" />').click( function() { filterLi(true); } ) )
);
);
return;
}
function filterLi(hilight) {
// grab options from form
if (rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i // the regex used to grab the Special:Log/rights changes
// grab the list of all <li> in the content
var bod = document.getElementById('bodyContent') || document.getElementsByTagName('body')[0];
$j('li', bod).each( function() {
var look = '';
if (rightsLogOnly) {
// Special:Log/rights
var text = $(this).text();
var oldr = text.replace(rightrx,'$1').replace(/\, /g,' ');
var newr = text.replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0; j<oldrl.length; ++j) {
for (var k=0; k<newrl.length; ++k) {
if (oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch (type) {
case 0: look = addr; break;
case 1: look = remr; break;
case 2: look = remr + ' ' + addr; break;
case 3: look = oldr + ' ' + newr; break;
}
} else {
look = $j(this).text();
}
$j(this).css( { display: '', 'backgroundColor': '' } );
if ( (look.search(rx) != -1 && !invert) || (look.search(rx) == -1 && invert) ) {
if (hilight) $j(this).css('backgroundColor', '#ffff99');
} else {
if (!hilight) $j(this).css('display', 'none');
}
});
}
function QueryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {}
}
return null;
}
// </source>
94tmwey33vevhnt7y3a00vwm8o83ozj
14838
14837
2010-12-08T19:50:38Z
Darklama
2894
14838
javascript
text/javascript
// <source lang="javascript">
// Log and <li> filter script, version [0.1.1]
// Created by [[w:User:Splarka|Splarka]] & amended [[User:Mike.lifeguard]]
var rightsLogOnly = (QueryString('type') == 'rights' || document.location.href.indexOf('Log/rights') != -1 );
if ( wgAction == 'history' ||
wgCanonicalSpecialPageName == 'Search' ||
wgCanonicalSpecialPageName == 'Log' ||
wgCanonicalSpecialPageName == 'CheckUser' ||
wgCanonicalSpecialPageName == 'LinkSearch' ||
wgCanonicalSpecialPageName == 'Contributions' ||
wgCanonicalSpecialPageName == 'IPBlockList' ||
QueryString('lifilter'))
{
$j(document).ready( function() {
if (document.getElementById('p-cactions')) {
addPortletLink('p-cactions', 'javascript:filterLiForm()' , 'Filter', 'ca-rxfilter', 'Open interactive log filter');
if (window.AutoLoadLogsFilter || QueryString('lifilter')) {
filterLiForm();
}
} else {
filterLiForm(); // not a portlet skin, so add the filter anyway.
}
});
}
function filterLiForm() {
var obj = document.getElementById('contentSub') || document.getElementById('topbar');
if ( !obj ) { return; }
var instructions = (rightsLogOnly) ? 'Filter by space-delimited list of rights.' : 'Filter the plain text representation of this list.'
// generate the form
$j('#ca-rxfilter).css('display', 'none);
var form = '<div id="rfform" style="color:black;"></div>';
var field = '<fieldset>';
field += '<p>'+instructions+'</p>';
field += '<legend>Filter list</legend>';
if (rightsLogOnly) {
field += '<select id="rfselect"><option>+ rights</option><option>- rights</option>';
field += '<option>either</option><option>all</option></select>';
}
field += '<label for="rfinput1">Match:</label> <input id="rfinput1" type="text" />';
field += '<input id="rfinput2" type="checkbox" /> <label for="rfinput2">Invert</label>';
field += '</fieldset>';
$j(obj).append(
$j(form).append(
$j(field).append( $j('<input type="button" value="filter" />').click( function() { filterLi(false); } ) )
.append( $j('<input type="button" value="highlight" />').click( function() { filterLi(true); } ) )
);
);
return;
}
function filterLi(hilight) {
// grab options from form
if (rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i; // the regex used to grab the Special:Log/rights changes
// grab the list of all <li> in the content
var bod = document.getElementById('bodyContent') || document.getElementsByTagName('body')[0];
$j('li', bod).each( function() {
var look = '';
if (rightsLogOnly) {
// Special:Log/rights
var text = $(this).text();
var oldr = text.replace(rightrx,'$1').replace(/\, /g,' ');
var newr = text.replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0; j<oldrl.length; ++j) {
for (var k=0; k<newrl.length; ++k) {
if (oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch (type) {
case 0: look = addr; break;
case 1: look = remr; break;
case 2: look = remr + ' ' + addr; break;
case 3: look = oldr + ' ' + newr; break;
}
} else {
look = $j(this).text();
}
$j(this).css( { display: '', 'backgroundColor': '' } );
if ( (look.search(rx) != -1 && !invert) || (look.search(rx) == -1 && invert) ) {
if (hilight) $j(this).css('backgroundColor', '#ffff99');
} else {
if (!hilight) $j(this).css('display', 'none');
}
});
}
function QueryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {}
}
return null;
}
// </source>
lkasb89pnjb3wsbbq76h8iggz0bw8zi
14839
14838
2010-12-08T19:57:44Z
Darklama
2894
semicolons
14839
javascript
text/javascript
// <source lang="javascript">
// Log and <li> filter script, version [0.1.1]
// Created by [[w:User:Splarka|Splarka]] & amended [[User:Mike.lifeguard]]
var rightsLogOnly = (QueryString('type') == 'rights' || document.location.href.indexOf('Log/rights') != -1 );
if ( wgAction == 'history' ||
wgCanonicalSpecialPageName == 'Search' ||
wgCanonicalSpecialPageName == 'Log' ||
wgCanonicalSpecialPageName == 'CheckUser' ||
wgCanonicalSpecialPageName == 'LinkSearch' ||
wgCanonicalSpecialPageName == 'Contributions' ||
wgCanonicalSpecialPageName == 'IPBlockList' ||
QueryString('lifilter'))
{
$j(document).ready( function() {
if (document.getElementById('p-cactions')) {
addPortletLink('p-cactions', 'javascript:filterLiForm()' , 'Filter', 'ca-rxfilter', 'Open interactive log filter');
if (window.AutoLoadLogsFilter || QueryString('lifilter')) {
filterLiForm();
}
} else {
filterLiForm(); // not a portlet skin, so add the filter anyway.
}
});
}
function filterLiForm() {
var obj = document.getElementById('contentSub') || document.getElementById('topbar');
if ( !obj ) { return; }
var instructions = (rightsLogOnly) ? 'Filter by space-delimited list of rights.' : 'Filter the plain text representation of this list.';
// generate the form
$j('#ca-rxfilter).css('display', 'none);
var form = '<div id="rfform" style="color:black;"></div>';
var field = '<fieldset>';
field += '<p>'+instructions+'</p>';
field += '<legend>Filter list</legend>';
if (rightsLogOnly) {
field += '<select id="rfselect"><option>+ rights</option><option>- rights</option>';
field += '<option>either</option><option>all</option></select>';
}
field += '<label for="rfinput1">Match:</label> <input id="rfinput1" type="text" />';
field += '<input id="rfinput2" type="checkbox" /> <label for="rfinput2">Invert</label>';
field += '</fieldset>';
$j(obj).append(
$j(form).append(
$j(field).append( $j('<input type="button" value="filter" />').click( function() { filterLi(false); } ) )
.append( $j('<input type="button" value="highlight" />').click( function() { filterLi(true); } ) )
)
);
return;
}
function filterLi(hilight) {
// grab options from form
if (rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i; // the regex used to grab the Special:Log/rights changes
// grab the list of all <li> in the content
var bod = document.getElementById('bodyContent') || document.getElementsByTagName('body')[0];
$j('li', bod).each( function() {
var look = '';
if (rightsLogOnly) {
// Special:Log/rights
var text = $(this).text();
var oldr = text.replace(rightrx,'$1').replace(/\, /g,' ');
var newr = text.replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0; j<oldrl.length; ++j) {
for (var k=0; k<newrl.length; ++k) {
if (oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch (type) {
case 0: look = addr; break;
case 1: look = remr; break;
case 2: look = remr + ' ' + addr; break;
case 3: look = oldr + ' ' + newr; break;
}
} else {
look = $j(this).text();
}
$j(this).css( { display: '', 'backgroundColor': '' } );
if ( (look.search(rx) != -1 && !invert) || (look.search(rx) == -1 && invert) ) {
if (hilight) $j(this).css('backgroundColor', '#ffff99');
} else {
if (!hilight) $j(this).css('display', 'none');
}
});
}
function QueryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {}
}
return null;
}
// </source>
g2eas9ov0ieso0srtil8xera2gc2ju1
14840
14839
2010-12-08T20:06:39Z
Darklama
2894
missing '
14840
javascript
text/javascript
// <source lang="javascript">
// Log and <li> filter script, version [0.1.1]
// Created by [[w:User:Splarka|Splarka]] & amended [[User:Mike.lifeguard]]
var rightsLogOnly = (QueryString('type') == 'rights' || document.location.href.indexOf('Log/rights') != -1 );
if ( wgAction == 'history' ||
wgCanonicalSpecialPageName == 'Search' ||
wgCanonicalSpecialPageName == 'Log' ||
wgCanonicalSpecialPageName == 'CheckUser' ||
wgCanonicalSpecialPageName == 'LinkSearch' ||
wgCanonicalSpecialPageName == 'Contributions' ||
wgCanonicalSpecialPageName == 'IPBlockList' ||
QueryString('lifilter'))
{
$j(document).ready( function() {
if (document.getElementById('p-cactions')) {
addPortletLink('p-cactions', 'javascript:filterLiForm()' , 'Filter', 'ca-rxfilter', 'Open interactive log filter');
if (window.AutoLoadLogsFilter || QueryString('lifilter')) {
filterLiForm();
}
} else {
filterLiForm(); // not a portlet skin, so add the filter anyway.
}
});
}
function filterLiForm() {
var obj = document.getElementById('contentSub') || document.getElementById('topbar');
if ( !obj ) { return; }
var instructions = (rightsLogOnly) ? 'Filter by space-delimited list of rights.' : 'Filter the plain text representation of this list.';
// generate the form
$j('#ca-rxfilter').css('display', 'none');
var form = '<div id="rfform" style="color:black;"></div>';
var field = '<fieldset>';
field += '<p>'+instructions+'</p>';
field += '<legend>Filter list</legend>';
if (rightsLogOnly) {
field += '<select id="rfselect"><option>+ rights</option><option>- rights</option>';
field += '<option>either</option><option>all</option></select>';
}
field += '<label for="rfinput1">Match:</label> <input id="rfinput1" type="text" />';
field += '<input id="rfinput2" type="checkbox" /> <label for="rfinput2">Invert</label>';
field += '</fieldset>';
$j(obj).append(
$j(form).append(
$j(field).append( $j('<input type="button" value="filter" />').click( function() { filterLi(false); } ) )
.append( $j('<input type="button" value="highlight" />').click( function() { filterLi(true); } ) )
)
);
return;
}
function filterLi(hilight) {
// grab options from form
if (rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i; // the regex used to grab the Special:Log/rights changes
// grab the list of all <li> in the content
var bod = document.getElementById('bodyContent') || document.getElementsByTagName('body')[0];
$j('li', bod).each( function() {
var look = '';
if (rightsLogOnly) {
// Special:Log/rights
var text = $(this).text();
var oldr = text.replace(rightrx,'$1').replace(/\, /g,' ');
var newr = text.replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0; j<oldrl.length; ++j) {
for (var k=0; k<newrl.length; ++k) {
if (oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch (type) {
case 0: look = addr; break;
case 1: look = remr; break;
case 2: look = remr + ' ' + addr; break;
case 3: look = oldr + ' ' + newr; break;
}
} else {
look = $j(this).text();
}
$j(this).css( { display: '', 'backgroundColor': '' } );
if ( (look.search(rx) != -1 && !invert) || (look.search(rx) == -1 && invert) ) {
if (hilight) $j(this).css('backgroundColor', '#ffff99');
} else {
if (!hilight) $j(this).css('display', 'none');
}
});
}
function QueryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {}
}
return null;
}
// </source>
61sr5vvut3g0765np9txk08b69huj2t
14841
14840
2010-12-08T20:14:58Z
Darklama
2894
form spacing
14841
javascript
text/javascript
// <source lang="javascript">
// Log and <li> filter script, version [0.1.1]
// Created by [[w:User:Splarka|Splarka]] & amended [[User:Mike.lifeguard]]
var rightsLogOnly = (QueryString('type') == 'rights' || document.location.href.indexOf('Log/rights') != -1 );
if ( wgAction == 'history' ||
wgCanonicalSpecialPageName == 'Search' ||
wgCanonicalSpecialPageName == 'Log' ||
wgCanonicalSpecialPageName == 'CheckUser' ||
wgCanonicalSpecialPageName == 'LinkSearch' ||
wgCanonicalSpecialPageName == 'Contributions' ||
wgCanonicalSpecialPageName == 'IPBlockList' ||
QueryString('lifilter'))
{
$j(document).ready( function() {
if (document.getElementById('p-cactions')) {
addPortletLink('p-cactions', 'javascript:filterLiForm()' , 'Filter', 'ca-rxfilter', 'Open interactive log filter');
if (window.AutoLoadLogsFilter || QueryString('lifilter')) {
filterLiForm();
}
} else {
filterLiForm(); // not a portlet skin, so add the filter anyway.
}
});
}
function filterLiForm() {
var obj = document.getElementById('contentSub') || document.getElementById('topbar');
if ( !obj ) { return; }
var instructions = (rightsLogOnly) ? 'Filter by space-delimited list of rights.' : 'Filter the plain text representation of this list.';
// generate the form
$j('#ca-rxfilter').css('display', 'none');
var form = '<div id="rfform" style="color:black;"></div>';
var field = '<fieldset>';
field += '<p>'+instructions+'</p>';
field += '<legend>Filter list</legend>';
if (rightsLogOnly) {
field += '<select id="rfselect"><option>+ rights</option><option>- rights</option>';
field += '<option>either</option><option>all</option></select> ';
}
field += '<label for="rfinput1">Match:</label> <input id="rfinput1" type="text" /> ';
field += '<input id="rfinput2" type="checkbox" /> <label for="rfinput2">Invert</label> ';
field += '</fieldset>';
$j(obj).append(
$j(form).append(
$j(field).append( $j('<input type="button" value="filter" />').click( function() { filterLi(false); } ) )
.append( $j('<input type="button" value="highlight" />').click( function() { filterLi(true); } ) )
)
);
return;
}
function filterLi(hilight) {
// grab options from form
if (rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i; // the regex used to grab the Special:Log/rights changes
// grab the list of all <li> in the content
var bod = document.getElementById('bodyContent') || document.getElementsByTagName('body')[0];
$j('li', bod).each( function() {
var look = '';
if (rightsLogOnly) {
// Special:Log/rights
var text = $j(this).text();
var oldr = text.replace(rightrx,'$1').replace(/\, /g,' ');
var newr = text.replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0; j<oldrl.length; ++j) {
for (var k=0; k<newrl.length; ++k) {
if (oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch (type) {
case 0: look = addr; break;
case 1: look = remr; break;
case 2: look = remr + ' ' + addr; break;
case 3: look = oldr + ' ' + newr; break;
}
} else {
look = $j(this).text();
}
$j(this).css( { display: '', 'backgroundColor': '' } );
if ( (look.search(rx) != -1 && !invert) || (look.search(rx) == -1 && invert) ) {
if (hilight) $j(this).css('backgroundColor', '#ffff99');
} else {
if (!hilight) $j(this).css('display', 'none');
}
});
}
function QueryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches;
if (matches = re.exec(document.location)) {
try {
return decodeURI(matches[1]);
} catch (e) {}
}
return null;
}
// </source>
8cf6ki7ltcux940kzr2wcvx1v0xep8p
14842
14841
2015-02-05T18:20:01Z
He7d3r
2069
[[mw:RL/MGU|Migration]]: addPortletLink → mw.util.addPortletLink; wg* → mw.config.get('wg*'); $j → $; -javascript URL
14842
javascript
text/javascript
// Log and <li> filter script, version [0.1.1]
// Created by [[w:User:Splarka|Splarka]] & amended [[User:Mike.lifeguard]]
var rightsLogOnly = (QueryString('type') == 'rights' || document.location.href.indexOf('Log/rights') != -1 );
if ( mw.config.get('wgAction') == 'history' ||
$.inArray(mw.config.get('wgCanonicalSpecialPageName'), ['Search' , 'Log' , 'CheckUser' , 'LinkSearch', 'Contributions' , 'IPBlockList' ]) !== -1 ||
QueryString('lifilter'))
{
$(document).ready( function() {
if (document.getElementById('p-cactions')) {
$( mw.util.addPortletLink(
'p-cactions', '#' , 'Filter', 'ca-rxfilter', 'Open interactive log filter'
) )
.click( function ( e ) {
e.preventDefault();
filterLiForm();
} );
if (window.AutoLoadLogsFilter || QueryString('lifilter')) {
filterLiForm();
}
} else {
filterLiForm(); // not a portlet skin, so add the filter anyway.
}
});
}
function filterLiForm() {
var obj = document.getElementById('contentSub') || document.getElementById('topbar');
if ( !obj ) { return; }
var instructions = (rightsLogOnly) ? 'Filter by space-delimited list of rights.' : 'Filter the plain text representation of this list.';
// generate the form
$('#ca-rxfilter').css('display', 'none');
var form = '<div id="rfform" style="color:black;"></div>';
var field = '<fieldset>';
field += '<p>'+instructions+'</p>';
field += '<legend>Filter list</legend>';
if (rightsLogOnly) {
field += '<select id="rfselect"><option>+ rights</option><option>- rights</option>';
field += '<option>either</option><option>all</option></select> ';
}
field += '<label for="rfinput1">Match:</label> <input id="rfinput1" type="text" /> ';
field += '<input id="rfinput2" type="checkbox" /> <label for="rfinput2">Invert</label> ';
field += '</fieldset>';
$(obj).append(
$(form).append(
$(field).append( $('<input type="button" value="filter" />').click( function() { filterLi(false); } ) )
.append( $('<input type="button" value="highlight" />').click( function() { filterLi(true); } ) )
)
);
return;
}
function filterLi(hilight) {
// grab options from form
if (rightsLogOnly) var type = document.getElementById('rfselect').selectedIndex;
var invert = document.getElementById('rfinput2').checked;
var srch = document.getElementById('rfinput1').value;
var rx = new RegExp(srch,'ig');
var rightrx = /^.*?User\:.*? from (.*?) to (.*?) \u200E.*?$/i; // the regex used to grab the Special:Log/rights changes
// grab the list of all <li> in the content
var bod = document.getElementById('bodyContent') || document.getElementsByTagName('body')[0];
$('li', bod).each( function() {
var look = '';
if (rightsLogOnly) {
// Special:Log/rights
var text = $(this).text();
var oldr = text.replace(rightrx,'$1').replace(/\, /g,' ');
var newr = text.replace(rightrx,'$2').replace(/\, /g,' ');
var oldrl = oldr.split(' '); var newrl = newr.split(' ');
for (var j=0; j<oldrl.length; ++j) {
for (var k=0; k<newrl.length; ++k) {
if (oldrl[j]==newrl[k]) {
oldrl[j] = ''; newrl[k] = '';
}
}
}
var remr = oldrl.join(' '); var addr = newrl.join(' ');
switch (type) {
case 0: look = addr; break;
case 1: look = remr; break;
case 2: look = remr + ' ' + addr; break;
case 3: look = oldr + ' ' + newr; break;
}
} else {
look = $(this).text();
}
$(this).css( { display: '', 'backgroundColor': '' } );
if ( (look.search(rx) != -1 && !invert) || (look.search(rx) == -1 && invert) ) {
if (hilight) $(this).css('backgroundColor', '#ffff99');
} else {
if (!hilight) $(this).css('display', 'none');
}
});
}
function QueryString(p) {
var re = RegExp('[&?]' + p + '=([^&]*)');
var matches = re.exec(document.location);
if (matches) {
try {
return decodeURI(matches[1]);
} catch (e) {}
}
return null;
}
3xyndgsc1z172fg17jmf4wxtx3l1gjo
14843
14842
2015-08-15T10:18:28Z
Az1568
66
Update
14843
javascript
text/javascript
mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-rightsfilter.js&action=raw&ctype=text/javascript' );
c6rbipy1gxffx26gjsfmuac3kg0xi88
14844
14843
2026-08-01T17:25:22Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-rightsfilter.js]] पासून १८ आवर्तने आयात केलीत
14843
javascript
text/javascript
mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-rightsfilter.js&action=raw&ctype=text/javascript' );
c6rbipy1gxffx26gjsfmuac3kg0xi88
मिडियाविकी:Gadget-subjects.css
8
4162
14845
2010-11-23T23:10:18Z
Darklama
2894
styling for gadget
14845
css
text/css
/* For subject pages */
.book-level-0 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/8/8f/00%25.png) left center no-repeat;
}
.book-level-1 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/5/5b/25%25.png) left center no-repeat;
}
.book-level-2 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/3/3a/50%25.png) left center no-repeat;
}
.book-level-3 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/c/cd/75%25.png) left center no-repeat;
}
.book-level-4 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/6/64/100%25.png) left center no-repeat;
}
.book-level-5 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/e/ec/Bullet_star.png) left center no-repeat;
}
.book-print {
padding-left:24px;
background: url(http://upload.wikimedia.org/wikipedia/commons/1/18/GeoGebra_icon_document_print.png) right center no-repeat;
}
.book-pdf {
padding-left:24px;
background: url(http://upload.wikimedia.org/wikipedia/commons/8/84/Icon_pdf.gif) right center no-repeat;
}
.horizontal li { border:0px; padding:0.25em; }
.book-level-0 + a { color:#99bbcc; font-size:12px; }
.book-level-1 + a { color:#664488; font-size:14px; }
.book-level-2 + a { color:#1111cc; font-size:14px; }
.book-level-3 + a { color:#0000dd; font-size:14px; }
.book-level-4 + a { color:#0000ff; font-size:16px; }
.book-level-5 + a { color:#000066; font-size:16px; font-family:cursive; }
tmcqfse2i1e01nhr6ufji8s8k01h2k9
14846
14845
2010-11-23T23:11:43Z
Darklama
2894
14846
css
text/css
/* For subject pages */
.book-level-0 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/8/8f/00%25.png) left center no-repeat;
}
.book-level-1 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/5/5b/25%25.png) left center no-repeat;
}
.book-level-2 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/3/3a/50%25.png) left center no-repeat;
}
.book-level-3 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/c/cd/75%25.png) left center no-repeat;
}
.book-level-4 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/6/64/100%25.png) left center no-repeat;
}
.book-level-5 {
padding-left:15px;
background: url(http://upload.wikimedia.org/wikipedia/commons/e/ec/Bullet_star.png) left center no-repeat;
}
.book-print {
padding-left:24px;
background: url(http://upload.wikimedia.org/wikipedia/commons/1/18/GeoGebra_icon_document_print.png) right center no-repeat;
}
.book-pdf {
padding-left:24px;
background: url(http://upload.wikimedia.org/wikipedia/commons/8/84/Icon_pdf.gif) right center no-repeat;
}
#booklinks .horizontal li { border:0px; padding:0.25em; }
.book-level-0 + a { color:#99bbcc; font-size:12px; }
.book-level-1 + a { color:#664488; font-size:14px; }
.book-level-2 + a { color:#1111cc; font-size:14px; }
.book-level-3 + a { color:#0000dd; font-size:14px; }
.book-level-4 + a { color:#0000ff; font-size:16px; }
.book-level-5 + a { color:#000066; font-size:16px; font-family:cursive; }
ca1qy97xvhcnstrii52ql1u2vhyjw8f
14847
14846
2012-01-20T23:13:53Z
Hoo man
668
Bot: Security fix: [[WMFblog:2011/10/03/native-https-support-enabled-for-all-wikimedia-foundation-wikis/|protocol-relative URLs]] per https://meta.wikimedia.org/?oldid=3197161 ([[m:Stewards' noticeboard|questions?]]).
14847
css
text/css
/* For subject pages */
.book-level-0 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/8/8f/00%25.png) left center no-repeat;
}
.book-level-1 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/5/5b/25%25.png) left center no-repeat;
}
.book-level-2 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/3/3a/50%25.png) left center no-repeat;
}
.book-level-3 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/c/cd/75%25.png) left center no-repeat;
}
.book-level-4 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/6/64/100%25.png) left center no-repeat;
}
.book-level-5 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/e/ec/Bullet_star.png) left center no-repeat;
}
.book-print {
padding-left:24px;
background: url(//upload.wikimedia.org/wikipedia/commons/1/18/GeoGebra_icon_document_print.png) right center no-repeat;
}
.book-pdf {
padding-left:24px;
background: url(//upload.wikimedia.org/wikipedia/commons/8/84/Icon_pdf.gif) right center no-repeat;
}
#booklinks .horizontal li { border:0px; padding:0.25em; }
.book-level-0 + a { color:#99bbcc; font-size:12px; }
.book-level-1 + a { color:#664488; font-size:14px; }
.book-level-2 + a { color:#1111cc; font-size:14px; }
.book-level-3 + a { color:#0000dd; font-size:14px; }
.book-level-4 + a { color:#0000ff; font-size:16px; }
.book-level-5 + a { color:#000066; font-size:16px; font-family:cursive; }
rvzh0b28kt3s74k8rp988nvhzpm2n58
14848
14847
2026-08-01T17:26:06Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-subjects.css]] पासून ३ आवर्तने आयात केलीत
14847
css
text/css
/* For subject pages */
.book-level-0 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/8/8f/00%25.png) left center no-repeat;
}
.book-level-1 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/5/5b/25%25.png) left center no-repeat;
}
.book-level-2 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/3/3a/50%25.png) left center no-repeat;
}
.book-level-3 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/c/cd/75%25.png) left center no-repeat;
}
.book-level-4 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/6/64/100%25.png) left center no-repeat;
}
.book-level-5 {
padding-left:15px;
background: url(//upload.wikimedia.org/wikipedia/commons/e/ec/Bullet_star.png) left center no-repeat;
}
.book-print {
padding-left:24px;
background: url(//upload.wikimedia.org/wikipedia/commons/1/18/GeoGebra_icon_document_print.png) right center no-repeat;
}
.book-pdf {
padding-left:24px;
background: url(//upload.wikimedia.org/wikipedia/commons/8/84/Icon_pdf.gif) right center no-repeat;
}
#booklinks .horizontal li { border:0px; padding:0.25em; }
.book-level-0 + a { color:#99bbcc; font-size:12px; }
.book-level-1 + a { color:#664488; font-size:14px; }
.book-level-2 + a { color:#1111cc; font-size:14px; }
.book-level-3 + a { color:#0000dd; font-size:14px; }
.book-level-4 + a { color:#0000ff; font-size:16px; }
.book-level-5 + a { color:#000066; font-size:16px; font-family:cursive; }
rvzh0b28kt3s74k8rp988nvhzpm2n58
मिडियाविकी:Gadget-subjects.js
8
4163
14849
2010-11-13T14:22:10Z
Darklama
2894
possible gadget
14849
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories=&'+cats+'titles=';
var links=document.getElementsById('booklinks'), titles=[];
links = links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
}
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !cat ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books';
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version:
window.alert(pages[page].title);
}
}
}
}
sx7p63dzbxxq7b4gib0rpq3rw2wlm5w
14850
14849
2010-11-13T14:24:13Z
Darklama
2894
14850
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories=&'+cats+'titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
}
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !cat ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books';
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version:
window.alert(pages[page].title);
}
}
}
}
026w7jt65offgbmd0e1n51m12outwyt
14851
14850
2010-11-13T23:04:51Z
Darklama
2894
14851
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories=&'+cats+'titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
}
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !cat ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books';
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version':
window.alert(pages[page].title);
}
}
}
}
na0ejaey8xfv10z98ta21zzn575fwb9
14852
14851
2010-11-13T23:30:26Z
Darklama
2894
14852
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories=&'+cats+'titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
} );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !cat ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books';
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version':
window.alert(pages[page].title);
}
}
}
}
92q4mirbar86y7ezic5z9j5ie872mzm
14853
14852
2010-11-13T23:34:32Z
Darklama
2894
typo
14853
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories=&'+cats+'titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
} );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !cat ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books':
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version':
window.alert(pages[page].title);
}
}
}
}
irddbwl1wvc3ki9q3f916fem6s7tnr9
14854
14853
2010-11-13T23:38:03Z
Darklama
2894
14854
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories=&'+cats+'titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
} );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !cat ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books':
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version':
window.alert(pages[page].title);
}
}
}
}
qk5dfqliq928zdtb0vcts40u1tuyx0b
14855
14854
2010-11-14T00:00:32Z
Darklama
2894
14855
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
} );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !cat ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books':
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version':
window.alert(pages[page].title);
}
}
}
}
n1bg6qdxc0w7t0k5vmpb78b8sa7ihqh
14856
14855
2010-11-14T00:13:08Z
Darklama
2894
14856
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
importScriptURI(url+titles);
} );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books':
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version':
window.alert(pages[page].title);
}
}
}
}
hi71h5iaubc81u1lqv25uxg9lrktt5i
14857
14856
2010-11-18T15:15:56Z
Darklama
2894
cache
14857
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title;
if ( !pages ) {
return;
}
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
case 'Category:Partly developed books':
case 'Category:Half-finished books':
case 'Category:Books nearing completion':
case 'Category:Completed books':
case 'Category:Featured books':
case 'Category:Books with print version':
case 'Category:Books with PDF version':
window.alert(pages[page].title);
}
}
}
}
rmuhpsnhdycyzu2l7pimd48oou7alx5
14858
14857
2010-11-18T15:42:48Z
Darklama
2894
add class
14858
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title, links, link;
if ( !pages ) {
return;
}
links = document.getElementById('booklinks');
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
link = links[page];
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
link.className += ' book-level-0';
break;
case 'Category:Partly developed books':
link.className += ' book-level-1';
break;
case 'Category:Half-finished books':
link.className += ' book-level-2';
break;
case 'Category:Books nearing completion':
link.className += ' book-level-3';
break;
case 'Category:Completed books':
link.className += ' book-level-4';
break;
case 'Category:Featured books':
link.className += ' book-level-5';
break;
case 'Category:Books with print version':
link.className += ' book-print';
break;
case 'Category:Books with PDF version':
link.className += ' book-pdf';
break;
}
}
}
}
o6jkuj3a0870chr7db6ucuw5rvukjrl
14859
14858
2010-11-18T15:46:33Z
Darklama
2894
14859
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title, links, link;
if ( !pages ) {
return;
}
links = document.getElementById('booklinks').getElementsByTagName('a');
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
link = links[page];
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
link.className += ' book-level-0';
break;
case 'Category:Partly developed books':
link.className += ' book-level-1';
break;
case 'Category:Half-finished books':
link.className += ' book-level-2';
break;
case 'Category:Books nearing completion':
link.className += ' book-level-3';
break;
case 'Category:Completed books':
link.className += ' book-level-4';
break;
case 'Category:Featured books':
link.className += ' book-level-5';
break;
case 'Category:Books with print version':
link.className += ' book-print';
break;
case 'Category:Books with PDF version':
link.className += ' book-pdf';
break;
}
}
}
}
la4pd77anxdi47e5qnhzy1qxhynn7g0
14860
14859
2010-11-18T15:55:05Z
Darklama
2894
14860
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title, links, link, i=0;
if ( !pages ) {
return;
}
links = document.getElementById('booklinks').getElementsByTagName('a');
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
link = links[i++];
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
link.className += ' book-level-0';
break;
case 'Category:Partly developed books':
link.className += ' book-level-1';
break;
case 'Category:Half-finished books':
link.className += ' book-level-2';
break;
case 'Category:Books nearing completion':
link.className += ' book-level-3';
break;
case 'Category:Completed books':
link.className += ' book-level-4';
break;
case 'Category:Featured books':
link.className += ' book-level-5';
break;
case 'Category:Books with print version':
link.className += ' book-print';
break;
case 'Category:Books with PDF version':
link.className += ' book-pdf';
break;
}
}
}
}
bz1n88vc23ksw7z6rhf4sx413dvfzka
14861
14860
2010-11-18T21:27:45Z
Darklama
2894
14861
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title, links, link, i=0;
if ( !pages ) {
return;
}
links = document.getElementById('booklinks').getElementsByTagName('a');
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
link = links[i++];
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
var span = document.createElement('span');
span.className = 'book-level-0';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Partly developed books':
var span = document.createElement('span');
span.className = 'book-level-1';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Half-finished books':
var span = document.createElement('span');
span.className = 'book-level-2';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books nearing completion':
var span = document.createElement('span');
span.className = 'book-level-3';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Completed books':
var span = document.createElement('span');
span.className = 'book-level-4';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Featured books':
var span = document.createElement('span');
span.className = 'book-level-5';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books with print version':
var span = document.createElement('span');
span.className = 'book-print';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books with PDF version':
var span = document.createElement('span');
span.className = 'book-pdf';
link.parentNode.insertBefore(span, link);
break;
}
}
}
}
tndg126thtmd6b3j2g3hzwiejglb3cb
14862
14861
2010-11-18T21:48:37Z
Darklama
2894
14862
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title, links, link, i=0;
if ( !pages ) {
return;
}
links = document.getElementById('booklinks').getElementsByTagName('a');
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
link = links[i++];
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
var span = document.createElement('span');
span.className = 'book-level-0';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Partly developed books':
var span = document.createElement('span');
span.className = 'book-level-1';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Half-finished books':
var span = document.createElement('span');
span.className = 'book-level-2';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books nearing completion':
var span = document.createElement('span');
span.className = 'book-level-3';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Completed books':
var span = document.createElement('span');
span.className = 'book-level-4';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Featured books':
var span = document.createElement('span');
span.className = 'book-level-5';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books with print version':
var span = document.createElement('span');
span.className = 'book-print';
link.parentNode.insertBefore(span, link.nextSibling);
break;
case 'Category:Books with PDF version':
var span = document.createElement('span');
span.className = 'book-pdf';
link.parentNode.insertBefore(span, link.nextSibling);
break;
}
}
}
}
gcxszs6c7iw6ya9fo2nmcmnb1dnjnnv
14863
14862
2010-11-19T14:33:39Z
Darklama
2894
14863
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title, links, link;
if ( !pages ) {
return;
}
links = document.getElementById('booklinks').getElementsByTagName('a');
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
for (link in links) {
if (links.hasOwnProperty(link) && links[link].title == pages[page].title) {
title = links[link];
delete links[link];
break;
}
}
if ( !title ) {
continue;
}
link = title;
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
var span = document.createElement('span');
span.className = 'book-level-0';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Partly developed books':
var span = document.createElement('span');
span.className = 'book-level-1';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Half-finished books':
var span = document.createElement('span');
span.className = 'book-level-2';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books nearing completion':
var span = document.createElement('span');
span.className = 'book-level-3';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Completed books':
var span = document.createElement('span');
span.className = 'book-level-4';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Featured books':
var span = document.createElement('span');
span.className = 'book-level-5';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books with print version':
var span = document.createElement('span');
span.className = 'book-print';
link.parentNode.insertBefore(span, link.nextSibling);
break;
case 'Category:Books with PDF version':
var span = document.createElement('span');
span.className = 'book-pdf';
link.parentNode.insertBefore(span, link.nextSibling);
break;
}
}
}
}
hq0tq7zsyqbvk2bwtpp0nhyp2d69e6z
14864
14863
2010-11-23T23:08:07Z
Darklama
2894
moved [[User:Darklama/subjects.js]] to [[MediaWiki:Gadget-subjects.js]]: to make it easier for other people to use
14863
javascript
text/javascript
/* A work-in-progress gadget to cut down on repeating books in the subject namespace by placing icons next to each book. */
addOnloadHook( (function() {
var $_fn = function() {
var cats = 'Category:Freshly+started+books|Category:Partly+developed+books|Category:Half-' +
'finished+books|Category:Books+nearing+completion|Category:Completed+books|' +
'Category:Featured+books|Category:Books+with+print+version|Category:Books+with+PDF+version';
var url = wgServer+wgScriptPath+'/api.php?format=json&callback=showSubjectMetadataCB' +
'&action=query&prop=categories&clshow=hidden&cllimit=500&&clcategories='+cats+'&titles=';
var links=document.getElementById('booklinks'), titles=[];
links = links && links.getElementsByTagName('a') || 0;
if (!links) { return; }
for (var link in links) {
if (links.hasOwnProperty(link)) {
titles.push( encodeURIComponent(links[link].title).replace("%20", "+") );
}
}
titles = titles.join("|");
url += titles;
delete cats; delete links; delete titles;
$_fn = function() { importScriptURI(url); }
$_fn();
};
return function() { $_fn(); };
})() );
function showSubjectMetadataCB(obj) {
var pages = obj.query && obj.query.pages || 0, categories, title, links, link;
if ( !pages ) {
return;
}
links = document.getElementById('booklinks').getElementsByTagName('a');
for (var page in pages) {
if ( !pages.hasOwnProperty(page) ) {
continue;
}
categories = pages[page].categories || 0;
if ( !categories ) {
continue;
}
for (link in links) {
if (links.hasOwnProperty(link) && links[link].title == pages[page].title) {
title = links[link];
delete links[link];
break;
}
}
if ( !title ) {
continue;
}
link = title;
for (var cat in categories) {
if ( !categories.hasOwnProperty(cat) ) {
continue;
}
title = categories[cat].title;
switch (title) {
case 'Category:Freshly started books':
var span = document.createElement('span');
span.className = 'book-level-0';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Partly developed books':
var span = document.createElement('span');
span.className = 'book-level-1';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Half-finished books':
var span = document.createElement('span');
span.className = 'book-level-2';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books nearing completion':
var span = document.createElement('span');
span.className = 'book-level-3';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Completed books':
var span = document.createElement('span');
span.className = 'book-level-4';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Featured books':
var span = document.createElement('span');
span.className = 'book-level-5';
link.parentNode.insertBefore(span, link);
break;
case 'Category:Books with print version':
var span = document.createElement('span');
span.className = 'book-print';
link.parentNode.insertBefore(span, link.nextSibling);
break;
case 'Category:Books with PDF version':
var span = document.createElement('span');
span.className = 'book-pdf';
link.parentNode.insertBefore(span, link.nextSibling);
break;
}
}
}
}
hq0tq7zsyqbvk2bwtpp0nhyp2d69e6z
14865
14864
2012-03-15T19:55:06Z
Darklama
2894
simplified with jQuery
14865
javascript
text/javascript
$(document).ready( function() {
var $links = $( '#booklinks' ).find( 'a' ), titles, categories = [
'Freshly started books',
'Partly developed books',
'Half-finished books',
'Books nearing completion',
'Completed books',
'Featured books',
'Books with print version',
'Books with PDF version'
];
function showSubjectMetadataCB(obj) {
$.each( obj.query && obj.query.pages || [], function( id, page ) {
var $link = [];
if ( !page.categories ) {
return;
}
$links.each( function() {
if ( this.attr( 'title' ) === page.title ) {
$link = this;
return false;
}
});
if ( !$link.length ) {
return;
}
$.each( page.categories, function( key, cat) {
var title = cat.title;
switch ( title ) {
case 'Category:Freshly started books':
$link.before( $( '<span/>' ).addClass( 'book-level-0' ) );
break;
case 'Category:Partly developed books':
$link.before( $( '<span/>' ).addClass( 'book-level-1' ) );
break;
case 'Category:Half-finished books':
$link.before( $( '<span/>' ).addClass( 'book-level-2' ) );
break;
case 'Category:Books nearing completion':
$link.before( $( '<span/>' ).addClass( 'book-level-3' ) );
break;
case 'Category:Completed books':
$link.before( $( '<span/>' ).addClass( 'book-level-4' ) );
break;
case 'Category:Featured books':
$link.before( $( '<span/>' ).addClass( 'book-level-5' ) );
break;
case 'Category:Books with print version':
$link.after( $( '<span/>' ).addClass( 'book-print' ) );
break;
case 'Category:Books with PDF version':
$link.after( $( '<span/>' ).addClass( 'book-pdf' ) );
break;
}
});
});
}
if ( !$links.length ) {
return;
}
titles = $.map( $links, function( link ) { return $(link).attr( 'title' ); } ).join( '|' );
categories = 'Category:' + categories.join( '|Category:' );
$.getJSON( mw.util.wikiScript( 'api' ), {
'format': 'json',
'action': 'query',
'prop': 'categories',
'clshow': 'hidden',
'cllimit': 500,
'clcategories': categories,
'titles': titles
}, showSubjectMetadataCB);
});
jb8fzdyrd3iw43i89bq6fxs87ky730i
14866
14865
2012-03-15T20:45:43Z
Darklama
2894
14866
javascript
text/javascript
$(document).ready( function() {
var $links = $( '#booklinks' ).find( 'a' ), titles, categories = [
'Freshly started books',
'Partly developed books',
'Half-finished books',
'Books nearing completion',
'Completed books',
'Featured books',
'Books with print version',
'Books with PDF version'
];
function showSubjectMetadataCB(obj) {
$.each( obj.query && obj.query.pages || [], function( id, page ) {
var $link = [];
if ( !page.categories ) {
return;
}
$links.each( function() {
var $this = $(this);
if ( $this.attr( 'title' ) === page.title ) {
$link = $this;
return false;
}
});
if ( !$link.length ) {
return;
}
$.each( page.categories, function( key, cat) {
var title = cat.title;
switch ( title ) {
case 'Category:Freshly started books':
$link.before( $( '<span/>' ).addClass( 'book-level-0' ) );
break;
case 'Category:Partly developed books':
$link.before( $( '<span/>' ).addClass( 'book-level-1' ) );
break;
case 'Category:Half-finished books':
$link.before( $( '<span/>' ).addClass( 'book-level-2' ) );
break;
case 'Category:Books nearing completion':
$link.before( $( '<span/>' ).addClass( 'book-level-3' ) );
break;
case 'Category:Completed books':
$link.before( $( '<span/>' ).addClass( 'book-level-4' ) );
break;
case 'Category:Featured books':
$link.before( $( '<span/>' ).addClass( 'book-level-5' ) );
break;
case 'Category:Books with print version':
$link.after( $( '<span/>' ).addClass( 'book-print' ) );
break;
case 'Category:Books with PDF version':
$link.after( $( '<span/>' ).addClass( 'book-pdf' ) );
break;
}
});
});
}
if ( !$links.length ) {
return;
}
titles = $.map( $links, function( link ) { return $(link).attr( 'title' ); } ).join( '|' );
categories = 'Category:' + categories.join( '|Category:' );
$.getJSON( mw.util.wikiScript( 'api' ), {
'format': 'json',
'action': 'query',
'prop': 'categories',
'clshow': 'hidden',
'cllimit': 500,
'clcategories': categories,
'titles': titles
}, showSubjectMetadataCB);
});
5ei1w303kij91ddv22iur9lyfh184oa
14867
14866
2026-08-01T17:26:15Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-subjects.js]] पासून १८ आवर्तने आयात केलीत
14866
javascript
text/javascript
$(document).ready( function() {
var $links = $( '#booklinks' ).find( 'a' ), titles, categories = [
'Freshly started books',
'Partly developed books',
'Half-finished books',
'Books nearing completion',
'Completed books',
'Featured books',
'Books with print version',
'Books with PDF version'
];
function showSubjectMetadataCB(obj) {
$.each( obj.query && obj.query.pages || [], function( id, page ) {
var $link = [];
if ( !page.categories ) {
return;
}
$links.each( function() {
var $this = $(this);
if ( $this.attr( 'title' ) === page.title ) {
$link = $this;
return false;
}
});
if ( !$link.length ) {
return;
}
$.each( page.categories, function( key, cat) {
var title = cat.title;
switch ( title ) {
case 'Category:Freshly started books':
$link.before( $( '<span/>' ).addClass( 'book-level-0' ) );
break;
case 'Category:Partly developed books':
$link.before( $( '<span/>' ).addClass( 'book-level-1' ) );
break;
case 'Category:Half-finished books':
$link.before( $( '<span/>' ).addClass( 'book-level-2' ) );
break;
case 'Category:Books nearing completion':
$link.before( $( '<span/>' ).addClass( 'book-level-3' ) );
break;
case 'Category:Completed books':
$link.before( $( '<span/>' ).addClass( 'book-level-4' ) );
break;
case 'Category:Featured books':
$link.before( $( '<span/>' ).addClass( 'book-level-5' ) );
break;
case 'Category:Books with print version':
$link.after( $( '<span/>' ).addClass( 'book-print' ) );
break;
case 'Category:Books with PDF version':
$link.after( $( '<span/>' ).addClass( 'book-pdf' ) );
break;
}
});
});
}
if ( !$links.length ) {
return;
}
titles = $.map( $links, function( link ) { return $(link).attr( 'title' ); } ).join( '|' );
categories = 'Category:' + categories.join( '|Category:' );
$.getJSON( mw.util.wikiScript( 'api' ), {
'format': 'json',
'action': 'query',
'prop': 'categories',
'clshow': 'hidden',
'cllimit': 500,
'clcategories': categories,
'titles': titles
}, showSubjectMetadataCB);
});
5ei1w303kij91ddv22iur9lyfh184oa
मिडियाविकी:Gadget-navpop.css
8
4164
14868
2008-06-05T21:34:05Z
Mike.lifeguard
117
from [[w:MediaWiki:Gadget-navpop.css]]
14868
css
text/css
a.popupMoreLink { display: block; text-align: right; cursor: pointer; }
ins.popupDiff { background: #AFE; }
del.popupDiff { background: #FFE6E6; }
#selectionPreview { /* overflow: auto; max-height: 16ex; */
border: 2px solid #DDD;
background-color: #EEF;
padding: 6px;
}
.navpopup
{
border: solid #FFBE20 1px;
background-color: #FFFAEF;
padding: 5px;
font-size: 8pt;
/* opacity: 0.9; */
}
.popupDragHandle { /* background-color: #D2FEFA; */
cursor: move; }
/* menu magic - many thanks to [[User:Zocky]]! */
/* popups */
.popup_menu li {
margin: 3px;
}
.popup_menu
{
display:none;
position:absolute;
left:0;
margin: 0;
margin-top: 1em;
line-height: 1.25em;
list-style-type: none;
/*top:1.6ex; */
z-index:2;
width:10em;
background:white;
border:solid 1px grey;
padding: 0.5em !important;
margin-left: -6px;
margin-top: 1em;
border-width: 1px 1px 1px 6px;
}
.popup_menu a {display:block;}
.popup_menu_row a {display:inline;}
.popup_menu_row { list-style: none;
padding: 0;
margin: 0;
/*)border: solid 1px red;*/
}
.popup_drop {display:inline; position:relative}
.popup_drop:hover .popup_menu,
.popup_drop .popup_menu:hover {display:inline; background:White; padding:2px 2px 2px 2px}
.popup_drop:hover { background:#CCF; color:#44f; }
/* other colours, styles and so on */
.popup_menu a:hover {background:#CCf; color:#44f}
.popup_mainlink {font-size: 140%; font-weight: bold}
.popup_change_title_link { color: #152; }
.popup_diff_dates {
font-style: italic;
background: none;
}
.popup_menu_item {
list-style: none;
padding: 0;
margin: 0;
/*border: solid 1px green;*/
}
/* .popup_menu_item a:hover { */
/* background:#CCf; */
/* color:#44f; */
/* } */
.popup_menu_item a{ display:block; }
.popup_history_row_even { background: #eee; }
.popup_history_date { font-weight: bold; font-size: 120%; }
/* copied from monobook #bodyContent declarations */
.popupPreview a.external,
.popupPreview a[href ^="gopher://"] {
background: url(http://en.wikipedia.org/skins/monobook/external.png) center right no-repeat;
padding-right: 13px;
}
.popupPreview a[href ^="https://"],
.link-https {
background: url(http://en.wikipedia.org/skins/monobook/lock_icon.gif) center right no-repeat;
padding-right: 16px;
}
.popupPreview a[href ^="mailto:"],
.link-mailto {
background: url(http://en.wikipedia.org/skins/monobook/mail_icon.gif) center right no-repeat;
padding-right: 18px;
}
.popupPreview a[href ^="news://"] {
background: url(http://en.wikipedia.org/skins/monobook/news_icon.png) center right no-repeat;
padding-right: 18px;
}
.popupPreview a[href ^="ftp://"],
.link-ftp {
background: url(http://en.wikipedia.org/skins/monobook/file_icon.gif) center right no-repeat;
padding-right: 18px;
}
.popupPreview a[href ^="irc://"],
.link-irc {
background: url(http://en.wikipedia.org/skins/monobook/discussionitem_icon.gif) center right no-repeat;
padding-right: 18px;
}
/* disable interwiki styling */
.popupPreview a.extiw,
.popupPreview a.extiw:active {
color: #36b;
background: none;
padding: 0;
}
.popupPreview a.external {
color: #36b;
}
/* this can be used in the content area to switch off
special external link styling */
.popupPreview .plainlinks a {
background: none !important;
padding: 0 !important;
}
4x8p9dls9ke1ejkwlfcvbpe34cy3aw1
14869
14868
2012-01-20T23:13:44Z
Hoo man
668
Bot: Security fix: [[WMFblog:2011/10/03/native-https-support-enabled-for-all-wikimedia-foundation-wikis/|protocol-relative URLs]] per https://meta.wikimedia.org/?oldid=3197161 ([[m:Stewards' noticeboard|questions?]]).
14869
css
text/css
a.popupMoreLink { display: block; text-align: right; cursor: pointer; }
ins.popupDiff { background: #AFE; }
del.popupDiff { background: #FFE6E6; }
#selectionPreview { /* overflow: auto; max-height: 16ex; */
border: 2px solid #DDD;
background-color: #EEF;
padding: 6px;
}
.navpopup
{
border: solid #FFBE20 1px;
background-color: #FFFAEF;
padding: 5px;
font-size: 8pt;
/* opacity: 0.9; */
}
.popupDragHandle { /* background-color: #D2FEFA; */
cursor: move; }
/* menu magic - many thanks to [[User:Zocky]]! */
/* popups */
.popup_menu li {
margin: 3px;
}
.popup_menu
{
display:none;
position:absolute;
left:0;
margin: 0;
margin-top: 1em;
line-height: 1.25em;
list-style-type: none;
/*top:1.6ex; */
z-index:2;
width:10em;
background:white;
border:solid 1px grey;
padding: 0.5em !important;
margin-left: -6px;
margin-top: 1em;
border-width: 1px 1px 1px 6px;
}
.popup_menu a {display:block;}
.popup_menu_row a {display:inline;}
.popup_menu_row { list-style: none;
padding: 0;
margin: 0;
/*)border: solid 1px red;*/
}
.popup_drop {display:inline; position:relative}
.popup_drop:hover .popup_menu,
.popup_drop .popup_menu:hover {display:inline; background:White; padding:2px 2px 2px 2px}
.popup_drop:hover { background:#CCF; color:#44f; }
/* other colours, styles and so on */
.popup_menu a:hover {background:#CCf; color:#44f}
.popup_mainlink {font-size: 140%; font-weight: bold}
.popup_change_title_link { color: #152; }
.popup_diff_dates {
font-style: italic;
background: none;
}
.popup_menu_item {
list-style: none;
padding: 0;
margin: 0;
/*border: solid 1px green;*/
}
/* .popup_menu_item a:hover { */
/* background:#CCf; */
/* color:#44f; */
/* } */
.popup_menu_item a{ display:block; }
.popup_history_row_even { background: #eee; }
.popup_history_date { font-weight: bold; font-size: 120%; }
/* copied from monobook #bodyContent declarations */
.popupPreview a.external,
.popupPreview a[href ^="gopher://"] {
background: url(//en.wikipedia.org/skins/monobook/external.png) center right no-repeat;
padding-right: 13px;
}
.popupPreview a[href ^="https://"],
.link-https {
background: url(//en.wikipedia.org/skins/monobook/lock_icon.gif) center right no-repeat;
padding-right: 16px;
}
.popupPreview a[href ^="mailto:"],
.link-mailto {
background: url(//en.wikipedia.org/skins/monobook/mail_icon.gif) center right no-repeat;
padding-right: 18px;
}
.popupPreview a[href ^="news://"] {
background: url(//en.wikipedia.org/skins/monobook/news_icon.png) center right no-repeat;
padding-right: 18px;
}
.popupPreview a[href ^="ftp://"],
.link-ftp {
background: url(//en.wikipedia.org/skins/monobook/file_icon.gif) center right no-repeat;
padding-right: 18px;
}
.popupPreview a[href ^="irc://"],
.link-irc {
background: url(//en.wikipedia.org/skins/monobook/discussionitem_icon.gif) center right no-repeat;
padding-right: 18px;
}
/* disable interwiki styling */
.popupPreview a.extiw,
.popupPreview a.extiw:active {
color: #36b;
background: none;
padding: 0;
}
.popupPreview a.external {
color: #36b;
}
/* this can be used in the content area to switch off
special external link styling */
.popupPreview .plainlinks a {
background: none !important;
padding: 0 !important;
}
93qku25rgzrawpaxj0fqejn3bfe9ksj
14870
14869
2015-04-27T05:03:22Z
Az1568
66
Update
14870
css
text/css
a.popupMoreLink { display: block; text-align: right; cursor: pointer; }
ins.popupDiff { background: #AFE; }
del.popupDiff { background: #FFE6E6; }
#selectionPreview { /* overflow: auto; max-height: 16ex; */
border: 2px solid #DDD;
background-color: #EEF;
padding: 6px;
}
.navpopup
{
border: solid #FFBE20 1px;
background-color: #FFFAEF;
padding: 5px;
font-size: 8pt;
/* opacity: 0.9; */
}
/* Configure Drag bar color */
.popupDrag {
background-color: #FFBE20;
height: 5px;
margin-top: -5px;
margin-bottom: 5px;
}
.popupDragHandle {
cursor: move;
position: relative;
}
/* menu magic - many thanks to [[User:Zocky]]! */
/* popups */
.popup_menu li {
margin: 3px;
}
.popup_menu
{
display:none;
position:absolute;
left:0;
margin: 0;
margin-top: 1em;
line-height: 1.25em;
list-style-type: none;
/*top:1.6ex; */
z-index:2;
width:10em;
background:white;
border:solid 1px grey;
padding: 0.5em !important;
margin-left: -6px;
margin-top: 1em;
border-width: 1px 1px 1px 6px;
}
.popup_menu a {display:block;}
.popup_menu_row a {display:inline;}
.popup_menu_row { list-style: none;
padding: 0;
margin: 0;
/*)border: solid 1px red;*/
}
.popup_drop {display:inline; position:relative}
.popup_drop:hover .popup_menu,
.popup_drop .popup_menu:hover {display:inline; background:White; padding:2px 2px 2px 2px}
.popup_drop:hover { background:#CCF; color:#44f; }
/* other colours, styles and so on */
.popup_menu a:hover {background:#CCf; color:#44f}
.popup_mainlink {font-size: 140%; font-weight: bold}
a.popup_change_title_link { color: #152; }
.popup_diff_dates {
font-style: italic;
background: none;
}
.popup_menu_item {
list-style: none;
padding: 0;
margin: 0;
/*border: solid 1px green;*/
}
.popup_menu_item a{ display:block; }
.popup_history_row_even { background: #eee; }
.popup_history_date { font-weight: bold; font-size: 120%; }
/* disable interwiki styling */
.popupPreview a.extiw,
.popupPreview a.extiw:active {
color: #36b;
background: none;
padding: 0;
}
.popupPreview a.external {
color: #36b;
}
/* this can be used in the content area to switch off
special external link styling */
.popupPreview .plainlinks a {
background: none !important;
padding: 0 !important;
}
d96qxa9ka3gj7iiev1inv6qpfopi4mh
14871
14870
2015-08-15T09:54:30Z
Az1568
66
Update
14871
css
text/css
@import url('//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-navpop.css&action=raw&ctype=text/css');
3mpyyxwp97rejicwvcgp7y8rhcz5d2f
14872
14871
2026-08-01T17:26:37Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-navpop.css]] पासून ४ आवर्तने आयात केलीत
14871
css
text/css
@import url('//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-navpop.css&action=raw&ctype=text/css');
3mpyyxwp97rejicwvcgp7y8rhcz5d2f
मिडियाविकी:Gadget-navpop.js
8
4165
14873
2008-06-05T21:32:05Z
Mike.lifeguard
117
from [[w:User:Lupin/popups.js]]
14873
javascript
text/javascript
var popupVersion="Sat Mar 10 21:40:16 UTC 2007";
// STARTFILE: main.js
// **********************************************************************
// ** **
// ** changes to this file affect many users. **
// ** please discuss on the talk page before editing **
// ** **
// **********************************************************************
// ** **
// ** if you do edit this file, be sure that your editor recognizes it **
// ** as utf8, or the weird and wonderful characters in the namespaces **
// ** below will be completely broken. You can check with the show **
// ** changes button before submitting the edit. **
// ** test: مدیا מיוחד Мэдыя **
// ** **
// **********************************************************************
////////////////////////////////////////////////////////////////////
// Import stylesheet(s)
//
if ( window.localCSS ) {
document.write('<link rel="stylesheet" type="text/css" href="http://localhost:8080/js/navpop.css">');
} else {
document.write('<link rel="stylesheet" type="text/css" href="' +
'http://en.wikipedia.org/w/index.php?title=User:Lupin/navpop.css' +
'&action=raw&ctype=text/css&dontcountme=s">');
}
//////////////////////////////////////////////////
// Globals
//
// Trying to shove as many of these as possible into the pg (popup globals) object
function pg(){}; // dummy to stop errors
window.pg = {
re: {}, // regexps
ns: {}, // namespaces
string: {}, // translatable strings
wiki: {}, // local site info
misc: {}, // YUCK PHOOEY
option: {}, // options, see newOption etc
optionDefault: {}, // default option values
flag: {}, // misc flags
cache: {}, // page and image cache
structures: {}, // navlink structures
timer: {}, // all sorts of timers (too damn many)
counter: {}, // .. and all sorts of counters
current: {}, // state info
endoflist: null
};
window.pop = { // wrap various functions in here
init: {},
util: {},
endoflist: null
};
function popupsReady() {
if (!window.pg) { return false; }
if (!pg.flag) { return false; }
if (!pg.flag.finishedLoading) { return false; }
return true;
}
////////////////////////////////////////////////////////////////////
// Run things
////////////////////////////////////////////////////////////////////
hookEvent('load', setupPopups);
/// Local Variables: ///
/// mode:c ///
/// End: ///
// ENDFILE: main.js
// STARTFILE: actions.js
function setupTooltips(container, remove, force, popData) {
log('setupTooltips, container='+container+', remove='+remove);
if (!container) {
//<NOLITE>
// the main initial call
if (getValueOf('popupOnEditSelection') && window.doSelectionPopup ) {
try {
document.editform.wpTextbox1.onmouseup=function() { doSelectionPopup(); };
} catch (neverMind) {}
}
//</NOLITE>
// article/content is a structure-dependent thing
container = defaultPopupsContainer();
}
if (!remove && !force && container.ranSetupTooltipsAlready) { return; }
container.ranSetupTooltipsAlready = !remove;
var anchors;
anchors=container.getElementsByTagName('A');
setupTooltipsLoop(anchors, 0, 250, 100, remove, popData);
}
function defaultPopupsContainer() {
if (getValueOf('popupOnlyArticleLinks')) {
return document.getElementById('article') ||
document.getElementById('content') || document;
}
return document;
}
function setupTooltipsLoop(anchors,begin,howmany,sleep, remove, popData) {
log(simplePrintf('setupTooltipsLoop(%s,%s,%s,%s,%s)', arguments));
var finish=begin+howmany;
var loopend = min(finish, anchors.length);
var j=loopend - begin;
log ('setupTooltips: anchors.length=' + anchors.length + ', begin=' + begin +
', howmany=' + howmany + ', loopend=' + loopend + ', remove=' + remove);
var doTooltip= remove ? removeTooltip : addTooltip;
// try a faster (?) loop construct
if (j > 0) {
do {
var a=anchors[loopend - j];
if (!a || !a.href) {
log('got null anchor at index ' + loopend - j);
continue;
}
doTooltip(a, popData);
} while (--j);
}
if (finish < anchors.length) {
setTimeout(function() {
setupTooltipsLoop(anchors,finish,howmany,sleep,remove,popData);},
sleep);
} else {
if ( !remove && ! getValueOf('popupTocLinks')) { rmTocTooltips(); }
pg.flag.finishedLoading=true;
}
}
// eliminate popups from the TOC
// This also kills any onclick stuff that used to be going on in the toc
function rmTocTooltips() {
var toc=document.getElementById('toc');
if (toc) {
var tocLinks=toc.getElementsByTagName('A');
var tocLen = tocLinks.length;
for (j=0; j<tocLen; ++j) {
removeTooltip(tocLinks[j], true);
}
}
}
function addTooltip(a, popData) {
if ( !isPopupLink(a) ) { return; }
a.onmouseover=mouseOverWikiLink;
a.onmouseout= mouseOutWikiLink;
a.onmousedown = killPopup;
a.hasPopup = true;
a.popData = popData;
}
function removeTooltip(a) {
if ( !a.hasPopup ) { return; }
a.onmouseover = null;
a.onmouseout = null;
if (a.originalTitle) { a.title = a.originalTitle; }
a.hasPopup=false;
}
function removeTitle(a) {
if (a.originalTitle) { return; }
a.originalTitle=a.title;
a.title='';
}
function restoreTitle(a) {
if ( a.title || !a.originalTitle ) { return; }
a.title = a.originalTitle;
a.originalTitle='';
}
function registerHooks(np) {
var popupMaxWidth=getValueOf('popupMaxWidth');
if (typeof popupMaxWidth == 'number') {
var setMaxWidth = function () {
np.mainDiv.style.maxWidth = popupMaxWidth + 'px';
np.maxWidth = popupMaxWidth;
// hack for IE
// see http://www.svendtofte.com/code/max_width_in_ie/
// use setExpression as documented here on msdn: http://tinyurl dot com/dqljn
if (np.mainDiv.style.setExpression) {
np.mainDiv.style.setExpression(
'width', 'document.body.clientWidth > ' +
popupMaxWidth + ' ? "' +popupMaxWidth + 'px": "auto"');
}
};
np.addHook(setMaxWidth, 'unhide', 'before');
}
//<NOLITE>
if (window.addPopupShortcuts && window.rmPopupShortcuts) {
np.addHook(addPopupShortcuts, 'unhide', 'after');
np.addHook(rmPopupShortcuts, 'hide', 'before');
}
//</NOLITE>
}
function mouseOverWikiLink(evt) {
if (!window.popupsReady || !window.popupsReady()) { return; }
if (!evt && window.event) {evt=window.event};
return mouseOverWikiLink2(this, evt);
}
function footnoteTarget(a) {
var aTitle=Title.fromAnchor(a);
// We want ".3A" rather than "%3A" or "?" here, so use the anchor property directly
var anch = aTitle.anchor;
if ( ! /^(_note-|endnote)/.test(anch) ) { return false; }
var lTitle=Title.fromURL(location.href);
if ( lTitle.toString(true) != aTitle.toString(true) ) { return false; }
var el=document.getElementById(anch);
while ( el && typeof el.nodeName == 'string') {
var nt = el.nodeName.toLowerCase();
if ( nt == 'li' ) { return el; }
else if ( nt == 'body' ) { return false; }
else if ( el.parentNode ) { el=el.parentNode; }
else { return false; }
}
return false;
}
function footnotePreview(x, navpop) {
setPopupHTML('<hr>' + x.innerHTML, 'popupPreview', navpop.idNumber,
getValueOf('popupSubpopups') ? function() {
setupTooltips(document.getElementById('popupPreview' + navpop.idNumber));
} : null);
}
// var modid=0;
// if(!window.opera) { window.opera={postError: console.log}; }
function modifierKeyHandler(a) {
return function(evt) {
// opera.postError('modifierKeyHandler called' + (++modid));
// opera.postError(''+evt + modid);
// for (var i in evt) {
// opera.postError('' + modid + ' ' + i + ' ' + evt[i]);
// }
// opera.postError(''+evt.ctrlKey + modid);
var mod=getValueOf('popupModifier');
if (!mod) { return true; }
if (!evt && window.event) {evt=window.event};
// opera.postError('And now....'+modid);
// opera.postError(''+evt+modid);
// opera.postError(''+evt.ctrlKey+modid);
if ( evt && mod && !evt[mod.toLowerCase() + 'Key'] ) { return true; }
mouseOverWikiLink2(a, evt);
};
}
function mouseOverWikiLink2(a, evt) {
// try not to duplicate effort
var mod=getValueOf('popupModifier');
if ( evt && mod && !evt[mod.toLowerCase() + 'Key'] ) {
// if the modifier is needed and not pressed, listen for it until
// we mouseout of this link.
restoreTitle(a);
var addHandler='addEventListener';
var rmHandler='removeEventListener';
var on='';
if (!document.addEventListener) {
addHandler='attachEvent';
rmHandler='detachEvent';
on='on';
}
if (!document[addHandler]) { // forget it
return;
}
a.modifierKeyHandler=modifierKeyHandler(a);
document[addHandler](on+'keydown', a.modifierKeyHandler, false);
a[addHandler](on+'mouseout', function() {
document[rmHandler](on+'keydown',
a.modifierKeyHandler, false);
}, true);
return;
}
if ( getValueOf('removeTitles') ) { removeTitle(a); }
if ( a==pg.current.link && a.navpopup && a.navpopup.isVisible() ) { return; }
pg.current.link=a;
if (getValueOf('simplePopups') && pg.option.popupStructure===null) {
// reset *default value* of popupStructure
setDefault('popupStructure', 'original');
}
var article=(new Title()).fromAnchor(a);
// set global variable (ugh) to hold article (wikipage)
pg.current.article = article;
if (pg.timer.image !== null) {
clearInterval(pg.timer.image);
pg.timer.image=null;
pg.counter.checkImages=0;
}
if (!a.navpopup) {
// FIXME: this doesn't behave well if you mouse out of a popup
// directly into a link with the same href
if (pg.current.linksHash[a.href] && false) {
a.navpopup = pg.current.linksHash[a.href];
}
else {
a.navpopup=newNavpopup(a, article);
pg.current.linksHash[a.href] = a.navpopup;
pg.current.links.push(a);
}
}
if (a.navpopup.pending===null || a.navpopup.pending!==0) {
// either fresh popups or those with unfinshed business are redone from scratch
simplePopupContent(a, article);
}
a.navpopup.showSoonIfStable(a.navpopup.delay);
getValueOf('popupInitialWidth');
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=setInterval(checkPopupPosition, 600);
if(getValueOf('simplePopups')) { return; }
if (a.navpopup.pending!==0 ) {
nonsimplePopupContent(a, article);
}
}
// simplePopupContent: the content that is shown even when simplePopups is true
function simplePopupContent(a, article) {
/* FIXME hack */ a.navpopup.hasPopupMenu=false;
a.navpopup.setInnerHTML(popupHTML(a));
fillEmptySpans({navpopup:a.navpopup});
var dragHandle = getValueOf('popupDragHandle') || null;
if (dragHandle && dragHandle != 'all') {
dragHandle += a.navpopup.idNumber;
}
setTimeout(function(){a.navpopup.makeDraggable(dragHandle);}, 150);
//<NOLITE>
if (getValueOf('popupRedlinkRemoval') && a.className=='new') {
setPopupHTML('<br>'+popupRedlinkHTML(article), 'popupRedlink', a.navpopup.idNumber);
}
//</NOLITE>
}
function debugData(navpopup) {
if(getValueOf('popupDebugging') && navpopup.idNumber) {
setPopupHTML('idNumber='+navpopup.idNumber + ', pending=' + navpopup.pending,
'popupError', navpopup.idNumber);
}
}
function newNavpopup(a, article) {
var navpopup = new Navpopup();
navpopup.fuzz=5;
navpopup.delay=getValueOf('popupDelay')*1000;
// increment global counter now
navpopup.idNumber = ++pg.idNumber;
navpopup.parentAnchor = a;
navpopup.parentPopup = (a.popData && a.popData.owner);
navpopup.article = article;
registerHooks(navpopup);
return navpopup;
}
function nonsimplePopupContent(a, article) {
var diff=null, history=null;
var params=parseParams(a.href);
var oldid=(typeof params.oldid=='undefined' ? null : params.oldid);
//<NOLITE>
if(getValueOf('popupPreviewDiffs') && window.loadDiff) {
diff=params.diff;
}
if(getValueOf('popupPreviewHistory') && getValueOf('popupUseQueryInterface')) {
history=(params.action=='history');
}
//</NOLITE>
a.navpopup.pending=0;
var previewImage=true;
var x;
pg.misc.gImage=null;
if (x=footnoteTarget(a)) {
footnotePreview(x, a.navpopup);
//<NOLITE>
} else if ( diff || diff === 0 ) {
//alert([article,oldid,diff]);
loadDiff(article, oldid, diff, a.navpopup);
} else if ( history && getValueOf('popupUseQueryInterface') ) {
loadQueryPreview('history', article, a.navpopup);
} else if ( pg.re.contribs.test(a.href) && getValueOf('popupUseQueryInterface')) {
loadQueryPreview('contribs', article, a.navpopup);
} else if ( pg.re.backlinks.test(a.href) && getValueOf('popupUseQueryInterface')) {
loadQueryPreview('backlinks', article, a.navpopup);
} else if ( // FIXME should be able to get all preview combinations with options
article.namespace()==pg.ns.image &&
( getValueOf('imagePopupsForImages') || ! anchorContainsImage(a) )
) {
if (getValueOf('popupUseQueryInterface')) {
loadQueryPreview('imagepagepreview', article, a.navpopup);
} else { startArticlePreview(article, oldid, a.navpopup); }
loadImages(article);
//</NOLITE>
} else if (article.namespace() == pg.ns.category &&
getValueOf('popupCategoryMembers')) {
getValueOf('popupUseQueryInterface') &&
loadQueryPreview('category', article, a.navpopup);
startArticlePreview(article, oldid, a.navpopup);
}
else if (!article.namespace()!=pg.ns.image && previewImage ) {
startArticlePreview(article, oldid, a.navpopup);
}
}
function pendingNavpopTask(navpop) {
if (navpop && navpop.pending===null) { navpop.pending=0; }
++navpop.pending;
debugData(navpop);
}
function completedNavpopTask(navpop) {
if (navpop && navpop.pending) { --navpop.pending; }
debugData(navpop);
}
function startArticlePreview(article, oldid, navpop) {
navpop.redir=0;
loadPreview(article, oldid, navpop);
}
function loadPreview(article, oldid, navpop) {
pendingNavpopTask(navpop);
if (!navpop.redir) { navpop.originalArticle=article; }
if (!navpop.visible && getValueOf('popupLazyDownloads')) {
var id=(navpop.redir) ? 'DOWNLOAD_PREVIEW_REDIR_HOOK' : 'DOWNLOAD_PREVIEW_HOOK';
navpop.addHook(function() {
getWiki(article, insertPreview, oldid, navpop);
return true; }, 'unhide', 'before', id);
} else {
getWiki(article, insertPreview, oldid, navpop);
}
}
function loadPreviewFromRedir(redirMatch, navpop) {
// redirMatch is a regex match
var target = new Title().fromWikiText(redirMatch[2]);
// overwrite (or add) anchor from original target
// mediawiki does overwrite; eg [[User:Lupin/foo3#Done]]
if ( navpop.article.anchor ) { target.anchor = navpop.article.anchor; }
var trailingRubbish=redirMatch[4];
navpop.redir++;
navpop.redirTarget=target;
//<NOLITE>
if (window.redirLink) {
var warnRedir = redirLink(target, navpop.article);
setPopupHTML(warnRedir, 'popupWarnRedir', navpop.idNumber);
}
//</NOLITE>
navpop.article=target;
fillEmptySpans({redir: true, redirTarget: target, navpopup:navpop});
return loadPreview(target, null, navpop);
}
function insertPreview(download) {
if (!download.owner) { return; }
var redirMatch = pg.re.redirect.exec(download.data);
if (download.owner.redir===0 && redirMatch) {
completedNavpopTask(download.owner);
loadPreviewFromRedir(redirMatch, download.owner);
return;
}
if (download.owner.visible || !getValueOf('popupLazyPreviews')) {
insertPreviewNow(download);
} else {
var id=(download.owner.redir) ? 'PREVIEW_REDIR_HOOK' : 'PREVIEW_HOOK';
download.owner.addHook( function(){insertPreviewNow(download); return true;},
'unhide', 'after', id );
}
}
function insertPreviewNow(download) {
if (!download.owner) { return; }
var wikiText=download.data;
var navpop=download.owner;
completedNavpopTask(navpop);
var art=navpop.redirTarget || navpop.originalArticle;
//<NOLITE>
makeFixDabs(wikiText, navpop);
if (getValueOf('popupSummaryData') && window.getPageInfo) {
var info=getPageInfo(wikiText, download);
setPopupTrailer(getPageInfo(wikiText, download), navpop.idNumber);
}
var imagePage='';
if (art.namespace()==pg.ns.image) { imagePage=art.toString(); }
else { imagePage=getValidImageFromWikiText(wikiText); }
if(imagePage) { loadImages(Title.fromWikiText(imagePage)); }
//</NOLITE>
if (getValueOf('popupPreviews')) { insertArticlePreview(download, art, navpop); }
}
function insertArticlePreview(download, art, navpop) {
if (download && typeof download.data == typeof ''){
if (art.namespace()==pg.ns.template && getValueOf('popupPreviewRawTemplates')) {
// FIXME compare/consolidate with diff escaping code for wikitext
var h='<hr><tt>' + download.data.entify().split('\\n').join('<br>\\n') + '</tt>';
setPopupHTML(h, 'popupPreview', navpop.idNumber);
}
else {
var p=prepPreviewmaker(download.data, art, navpop);
p.showPreview();
}
}
}
function prepPreviewmaker(data, article, navpop) {
// deal with tricksy anchors
var d=anchorize(data, article.anchorString());
var urlBase=joinPath([pg.wiki.articlebase, article.urlString()]);
var p=new Previewmaker(d, urlBase, navpop);
return p;
}
// Try to imitate the way mediawiki generates HTML anchors from section titles
function anchorize(d, anch) {
if (!anch) { return d; }
var anchRe=RegExp('=+\\s*' + literalizeRegex(anch).replace(/[_ ]/g, '[_ ]') + '\\s*=+');
var match=d.match(anchRe);
if(match && match.length > 0 && match[0]) { return d.substring(d.indexOf(match[0])); }
// now try to deal with == foo [[bar|baz]] boom == -> #foo_baz_boom
var lines=d.split('\n');
for (var i=0; i<lines.length; ++i) {
lines[i]=lines[i].replace(RegExp('[[]{2}([^|\\]]*?[|])?(.*?)[\\]]{2}', 'g'), '$2')
.replace(/'''([^'])/g, '$1').replace(RegExp("''([^'])", 'g'), '$1');
if (lines[i].match(anchRe)) {
return d.split('\n').slice(i).join('\n').replace(RegExp('^[^=]*'), '');
}
}
return d;
}
function killPopup() {
if (getValueOf('popupShortcutKeys') && window.rmPopupShortcuts) { rmPopupShortcuts(); }
if (!pg) { return; }
pg.current.link && pg.current.link.navpopup && pg.current.link.navpopup.banish();
pg.current.link=null;
abortAllDownloads();
window.stopImagesDownloading && stopImagesDownloading();
if (pg.timer.checkPopupPosition !== null) {
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=null;
}
if (pg.timer.checkImages !== null) { clearInterval(pg.timer.checkImages); pg.timer.checkImages=null; }
if (pg.timer.image !== null) { clearInterval(pg.timer.image); pg.timer.image=null; }
return true; // preserve default action
}
// ENDFILE: actions.js
// STARTFILE: domdrag.js
/**
@fileoverview
The {@link Drag} object, which enables objects to be dragged around.
<pre>
*************************************************
dom-drag.js
09.25.2001
www.youngpup.net
**************************************************
10.28.2001 - fixed minor bug where events
sometimes fired off the handle, not the root.
*************************************************
Pared down, some hooks added by [[User:Lupin]]
Copyright Aaron Boodman.
Saying stupid things daily since March 2001.
</pre>
*/
/**
Creates a new Drag object. This is used to make various DOM elements draggable.
@constructor
*/
function Drag () {
/**
Condition to determine whether or not to drag. This function should take one parameter, an Event.
To disable this, set it to <code>null</code>.
@type Function
*/
this.startCondition = null;
/**
Hook to be run when the drag finishes. This is passed the final coordinates of
the dragged object (two integers, x and y). To disables this, set it to <code>null</code>.
@type Function
*/
this.endHook = null;
}
/**
Gets an event in a cross-browser manner.
@param {Event} e
@private
*/
Drag.prototype.fixE = function(e) {
if (typeof e == 'undefined') { e = window.event; }
if (typeof e.layerX == 'undefined') { e.layerX = e.offsetX; }
if (typeof e.layerY == 'undefined') { e.layerY = e.offsetY; }
return e;
};
/**
Initialises the Drag instance by telling it which object you want to be draggable, and what you want to drag it by.
@param {DOMElement} o The "handle" by which <code>oRoot</code> is dragged.
@param {DOMElement} oRoot The object which moves when <code>o</code> is dragged, or <code>o</code> if omitted.
*/
Drag.prototype.init = function(o, oRoot) {
var dragObj = this;
this.obj = o;
o.onmousedown = function(e) { dragObj.start.apply( dragObj, [e]); };
o.dragging = false;
o.draggable = true;
o.hmode = true;
o.vmode = true;
o.root = oRoot && oRoot !== null ? oRoot : o ;
if (isNaN(parseInt(o.root.style.left, 10))) { o.root.style.left = "0px"; }
if (isNaN(parseInt(o.root.style.top, 10))) { o.root.style.top = "0px"; }
o.root.onthisStart = function(){};
o.root.onthisEnd = function(){};
o.root.onthis = function(){};
};
/**
Starts the drag.
@private
@param {Event} e
*/
Drag.prototype.start = function(e) {
var o = this.obj; // = this;
e = this.fixE(e);
if (this.startCondition && !this.startCondition(e)) { return; }
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10);
o.root.onthisStart(x, y);
o.lastMouseX = e.clientX;
o.lastMouseY = e.clientY;
var dragObj = this;
o.onmousemoveDefault = document.onmousemove;
o.dragging = true;
document.onmousemove = function(e) { dragObj.drag.apply( dragObj, [e] ); };
document.onmouseup = function(e) { dragObj.end.apply( dragObj, [e] ); };
return false;
};
/**
Does the drag.
@param {Event} e
@private
*/
Drag.prototype.drag = function(e) {
e = this.fixE(e);
var o = this.obj;
var ey = e.clientY;
var ex = e.clientX;
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10 );
var nx, ny;
nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));
this.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
this.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
this.obj.lastMouseX = ex;
this.obj.lastMouseY = ey;
this.obj.root.onthis(nx, ny);
return false;
};
/**
Ends the drag.
@private
*/
Drag.prototype.end = function() {
document.onmousemove=this.obj.onmousemoveDefault;
document.onmouseup = null;
this.obj.dragging = false;
if (this.endHook) {
this.endHook( parseInt(this.obj.root.style[this.obj.hmode ? "left" : "right"], 10),
parseInt(this.obj.root.style[this.obj.vmode ? "top" : "bottom"], 10));
}
};
// ENDFILE: domdrag.js
// STARTFILE: structures.js
//<NOLITE>
pg.structures.original={};
pg.structures.original.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle',
'popupData', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
pg.structures.original.popupRedirSpans=function () {
return ['popupRedir', 'popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'];
};
pg.structures.original.popupTitle=function (x) {
log ('defaultstructure.popupTitle');
if (!getValueOf('popupNavLinks')) {
return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
}
return '';
};
pg.structures.original.popupTopLinks=function (x) {
log ('defaultstructure.popupTopLinks');
if (getValueOf('popupNavLinks')) { return navLinksHTML(x.article, x.hint, x.params); }
return '';
};
pg.structures.original.popupImage=function(x) {
log ('original.popupImage, x.article='+x.article+', x.navpop.idNumber='+x.navpop.idNumber);
return imageHTML(x.article, x.navpop.idNumber);
};
pg.structures.original.popupRedirTitle=pg.structures.original.popupTitle;
pg.structures.original.popupRedirTopLinks=pg.structures.original.popupTopLinks;
function copyStructure(oldStructure, newStructure) {
pg.structures[newStructure]={};
for (var prop in pg.structures[oldStructure]) {
pg.structures[newStructure][prop]=pg.structures[oldStructure][prop];
}
}
copyStructure('original', 'nostalgia');
pg.structures.nostalgia.popupTopLinks=function(x) {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>';
str+='if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{'
+ editstr + '}'
var historystr='<<history|shortcut=h>>';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>';
str += 'if(admin){<br>}else{*}<<move|shortcut=m>>';
// admin links
str += 'if(admin){*<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>}';
return navlinkStringToHTML(str, x.article, x.params);
};
pg.structures.nostalgia.popupRedirTopLinks=pg.structures.nostalgia.popupTopLinks;
/** -- fancy -- **/
copyStructure('original', 'fancy');
pg.structures.fancy.popupTitle=function (x) {
return navlinkStringToHTML('<font size=+0><<mainlink>></font>',x.article,x.params);
};
pg.structures.fancy.popupTopLinks=function(x) {
var hist='<<history|shortcut=h|hist>>|<<lastEdit|shortcut=/|last>>if(mainspace_en){|<<editors|shortcut=E|eds>>}';
var watch='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
var move='<<move|shortcut=m|move>>';
return navlinkStringToHTML('if(talk){' +
'<<edit|shortcut=e>>|<<new|shortcut=+|+>>*' + hist + '*' +
'<<article|shortcut=a>>|<<editArticle|edit>>' + '*' + watch + '*' + move +
'}else{<<edit|shortcut=e>>*' + hist +
'*<<talk|shortcut=t|>>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>' +
'*' + watch + '*' + move+'}<br>', x.article, x.params);
};
pg.structures.fancy.popupOtherLinks=function(x) {
var admin='<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*<<undelete|undeleteShort>>|<<delete|shortcut=d|del>>';
var user='<<contribs|shortcut=c>>if(wikimedia){|<<count|shortcut=#|#>>}';
user+='if(ipuser){|<<arin>>}else{*<<email|shortcut=E|'+
popupString('email')+'>>}if(admin){*<<block|shortcut=b>>}';
var normal='<<whatLinksHere|shortcut=l|links here>>*<<relatedChanges|shortcut=r|related>>';
return navlinkStringToHTML('<br>if(user){' + user + '*}if(admin){'+admin+'if(user){<br>}else{*}}' + normal,
x.article, x.params);
};
pg.structures.fancy.popupRedirTitle=pg.structures.fancy.popupTitle;
pg.structures.fancy.popupRedirTopLinks=pg.structures.fancy.popupTopLinks;
pg.structures.fancy.popupRedirOtherLinks=pg.structures.fancy.popupOtherLinks;
/** -- fancy2 -- **/
// hack for [[User:MacGyverMagic]]
copyStructure('fancy', 'fancy2');
pg.structures.fancy2.popupTopLinks=function(x) { // hack out the <br> at the end and put one at the beginning
return '<br>'+pg.structures.fancy.popupTopLinks(x).replace(RegExp('<br>$','i'),'');
};
pg.structures.fancy2.popupLayout=function () { // move toplinks to after the title
return ['popupError', 'popupImage', 'popupTitle', 'popupData', 'popupTopLinks', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
/** -- menus -- **/
copyStructure('original', 'menus');
pg.structures.menus.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupData', 'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
function toggleSticky(uid) {
var popDiv=document.getElementById('navpopup_maindiv'+uid);
if (!popDiv) { return; }
if (!popDiv.navpopup.sticky) { popDiv.navpopup.stick(); }
else {
popDiv.navpopup.unstick();
popDiv.navpopup.hide();
}
}
pg.structures.menus.popupTopLinks = function (x, shorter) {
// FIXME maybe this stuff should be cached
var s=[];
var dropdiv='<div class="popup_drop">';
var enddiv='</div>';
var endspan='</span>';
var hist='<<history|shortcut=h>>';
if (!shorter) { hist = '<menurow>' + hist +
'|<<historyfeed|rss>>if(mainspace_en){|<<editors|shortcut=E>>}</menurow>'; }
var lastedit='<<lastEdit|shortcut=/|show last edit>>';
var jsHistory='<<lastContrib|last set of edits>><<sinceMe|changes since mine>>';
var linkshere='<<whatLinksHere|shortcut=l|what links here>>';
var related='<<relatedChanges|shortcut=r|related changes>>';
var search='<menurow><<search|shortcut=s>>if(wikimedia){|<<globalsearch|shortcut=g|global>>}' +
'|<<google|shortcut=G|web>></menurow>';
var watch='<menurow><<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>></menurow>';
var protect='<menurow><<unprotect|unprotectShort>>|' +
'<<protect|shortcut=p>>|<<protectlog|log>></menurow>';
var del='<menurow><<undelete|undeleteShort>>|<<delete|shortcut=d>>|' +
'<<deletelog|log>></menurow>';
var move='<<move|shortcut=m|move page>>';
var nullPurge='<menurow><<nullEdit|shortcut=n|null edit>>|<<purge|shortcut=P>></menurow>';
var viewOptions='<menurow><<view|shortcut=v>>|<<render|shortcut=S>>|<<raw>></menurow>';
var editRow='if(oldid){' +
'<menurow><<edit|shortcut=e>>|<<editOld|shortcut=e|this revision>></menurow>' +
'<menurow><<revert|shortcut=v>>|<<undo>></menurow>' + '}else{<<edit|shortcut=e>>}';
var markPatrolled='if(rcid){<<markpatrolled|mark patrolled>>}';
var newTopic='if(talk){<<new|shortcut=+|new topic>>}';
var protectDelete='if(admin){' + protect + del + '}';
if (getValueOf('popupActionsMenu')) {
s.push( '<<mainlink>>*' + dropdiv + menuTitle('actions'));
} else {
s.push( dropdiv + '<<mainlink>>');
}
s.push( '<menu>')
s.push( editRow + markPatrolled + newTopic + hist + lastedit )
if (!shorter) { s.push(jsHistory); }
s.push( move + linkshere + related)
if (!shorter) { s.push(nullPurge + search); }
if (!shorter) { s.push(viewOptions); }
s.push('<hr>' + watch + protectDelete);
s.push('<hr>' +
'if(talk){<<article|shortcut=a|view article>><<editArticle|edit article>>}' +
'else{<<talk|shortcut=t|talk page>><<editTalk|edit talk>>' +
'<<newTalk|shortcut=+|new topic>>}</menu>' + enddiv);
// user menu starts here
var email='<<email|shortcut=E|email user>>';
var contribs= 'if(wikimedia){<menurow>}<<contribs|shortcut=c|contributions>>' +
'if(wikimedia){|<<contribsTree|tree>></menurow>}';
s.push('if(user){*' + dropdiv + menuTitle('user'));
s.push('<menu>'); +
s.push('<menurow><<userPage|shortcut=u|user page>>|<<userSpace|space>></menurow>');
s.push('<<userTalk|shortcut=t|user talk>><<editUserTalk|edit user talk>>' +
'<<newUserTalk|shortcut=+|leave comment>>');
if(!shorter) { s.push( 'if(ipuser){<<arin>>}else{' + email + '}') }
else { s.push( 'if(ipuser){}else{' + email + '}') }
s.push('<hr>' + contribs + '<<userlog|shortcut=L|user log>>');
s.push('if(wikimedia){<<count|shortcut=#|edit counter>>}');
s.push('if(admin){<menurow><<unblock|unblockShort>>|<<block|shortcut=b|block user>></menurow>}');
s.push('<<blocklog|shortcut=B|block log>>' + getValueOf('popupExtraUserMenu'));
s.push('</menu>' + enddiv + '}');
// popups menu starts here
if (getValueOf('popupSetupMenu') && !x.navpop.hasPopupMenu /* FIXME: hack */) {
x.navpop.hasPopupMenu=true;
s.push('*' + dropdiv + menuTitle('popupsMenu') + '<menu>');
s.push('<<togglePreviews|toggle previews>>');
s.push('<<purgePopups|reset>>');
s.push('<<disablePopups|disable>>');
s.push('</menu>'+enddiv);
}
return navlinkStringToHTML(s.join(''), x.article, x.params);
};
function menuTitle(s) {
return '<a href="#" noPopup=1>' + popupString(s) + '</a>';
}
pg.structures.menus.popupRedirTitle=pg.structures.menus.popupTitle;
pg.structures.menus.popupRedirTopLinks=pg.structures.menus.popupTopLinks;
copyStructure('menus', 'shortmenus');
pg.structures.shortmenus.popupTopLinks=function(x) {
return pg.structures.menus.popupTopLinks(x,true);
};
pg.structures.shortmenus.popupRedirTopLinks=pg.structures.shortmenus.popupTopLinks;
//</NOLITE>
pg.structures.lite={};
pg.structures.lite.popupLayout=function () {
return ['popupTitle', 'popupPreview' ];
};
pg.structures.lite.popupTitle=function (x) {
log (x.article + ': structures.lite.popupTitle');
//return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
return '<div><span class="popup_mainlink"><b>' + x.article.toString() + '</b></span></div>';
};
// ENDFILE: structures.js
// STARTFILE: autoedit.js
//<NOLITE>
function getParamValue(paramName, h) {
if (typeof h == 'undefined' ) { h = document.location.href; }
var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
var m=cmdRe.exec(h);
if (m) {
try {
return decodeURI(m[1]);
} catch (someError) {}
}
return null;
}
function substitute(data,cmdBody) {
// alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags);
var fromRe=RegExp(cmdBody.from, cmdBody.flags);
return data.replace(fromRe, cmdBody.to);
}
function execCmds(data, cmdList) {
for (var i=0; i<cmdList.length; ++i) {
data=cmdList[i].action(data, cmdList[i]);
}
return data;
}
function parseCmd(str) {
// returns a list of commands
if (!str.length) { return []; }
var p=false;
switch (str.charAt(0)) {
case 's':
p=parseSubstitute(str);
break;
default:
return false;
}
if (p) { return [p].concat(parseCmd(p.remainder)); }
return false;
}
function unEscape(str, sep) {
return str.split('\\\\').join('\\').split('\\'+sep).join(sep).split('\\n').join('\n');
}
function parseSubstitute(str) {
// takes a string like s/a/b/flags;othercmds and parses it
var from,to,flags,tmp;
if (str.length<4) { return false; }
var sep=str.charAt(1);
str=str.substring(2);
tmp=skipOver(str,sep);
if (tmp) { from=tmp.segment; str=tmp.remainder; }
else { return false; }
tmp=skipOver(str,sep);
if (tmp) { to=tmp.segment; str=tmp.remainder; }
else { return false; }
flags='';
if (str.length) {
tmp=skipOver(str,';') || skipToEnd(str, ';');
if (tmp) {flags=tmp.segment; str=tmp.remainder; }
}
return {action: substitute, from: from, to: to, flags: flags, remainder: str};
}
function skipOver(str,sep) {
var endSegment=findNext(str,sep);
if (endSegment<0) { return false; }
var segment=unEscape(str.substring(0,endSegment), sep);
return {segment: segment, remainder: str.substring(endSegment+1)};
}
function skipToEnd(str,sep) {
return {segment: str, remainder: ''};
}
function findNext(str, ch) {
for (var i=0; i<str.length; ++i) {
if (str.charAt(i)=='\\') { i+=2; }
if (str.charAt(i)==ch) { return i; }
}
return -1;
}
function setCheckbox(param, box) {
var val=getParamValue(param);
if (val!==null) {
switch (val) {
case '1': case 'yes': case 'true':
box.checked=true;
break;
case '0': case 'no': case 'false':
box.checked=false;
}
}
}
function autoEdit() {
if (!setupPopups.completed) { setupPopups(); }
if (!document.editform) { return false; }
if (window.autoEdit.alreadyRan) { return false; }
window.autoEdit.alreadyRan=true;
var cmdString=getParamValue('autoedit');
if (cmdString) {
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
var cmdList=parseCmd(cmdString);
var input=editbox.value;
var output=execCmds(input, cmdList);
editbox.value=output;
}
setCheckbox('autominor', document.editform.wpMinoredit);
setCheckbox('autowatch', document.editform.wpWatchthis);
var rvid = getParamValue('autorv');
if (getValueOf('popupUseQueryInterface') && getParamValue('autorv')) {
var url=pg.wiki.wikibase + '/query.php?format=json&what=revisions&revids='+rvid;
startDownload(url, null, autoEdit2);
} else { autoEdit2(); }
}
function autoEdit2(d) {
var summary=getParamValue('autosummary');
var summaryprompt=getParamValue('autosummaryprompt');
var summarynotice='';
if (d && d.data && getParamValue('autorv')) {
var s = getRvSummary(summary, d.data);
if (s===false) {
summaryprompt=true;
summarynotice=popupString('Failed to get revision information, please edit manually.\n\n');
summary = simplePrintf(summary, [getParamValue('autorv'), '(unknown)', '(unknown)']);
} else { summary = s; }
}
if (summaryprompt) {
var txt= summarynotice +
popupString('Enter a non-empty edit summary or press cancel to abort');
var response=prompt(txt, summary);
if (response) { summary=response; }
else { return; }
}
if (summary) { document.editform.wpSummary.value=summary; }
// Attempt to avoid possible premature clicking of the save button
// (maybe delays in updates to the DOM are to blame?? or a red herring)
setTimeout(autoEdit3, 100);
}
function autoClickToken() {
return document.cookie.substr(document.cookie.indexOf("session=")+8,4);
}
function autoEdit3() {
if (getParamValue('actoken') != autoClickToken()) return;
var btn=getParamValue('autoclick');
if (btn) {
if (document.editform && document.editform[btn]) {
var button=document.editform[btn];
var msg=tprintf('The %s button has been automatically clicked. Please wait for the next page to load.',
[ button.value ]);
bannerMessage(msg);
document.title='('+document.title+')';
button.click();
} else {
alert(tprintf('Could not find button %s. Please check the settings in your javascript file.',
[ btn ]));
}
}
}
function bannerMessage(s) {
var headings=document.getElementsByTagName('h1');
if (headings) {
var div=document.createElement('div');
div.innerHTML='<font size=+1><b>' + s + '</b></font>';
headings[0].parentNode.insertBefore(div, headings[0]);
}
}
function getRvSummary(template, json) {
var o=getJsObj(json);
try {
var edit = anyChild(o.pages).revisions[0];
} catch (badness) {return false;}
var timestamp = edit.timestamp.split(/[A-Z]/g).join(' ').replace(/^ *| *$/g, '');
return simplePrintf(template, [edit.revid, timestamp, edit.user]);
}
hookEvent('load', autoEdit);
//</NOLITE>
// ENDFILE: autoedit.js
// STARTFILE: downloader.js
/**
@fileoverview
{@link Downloader}, a xmlhttprequest wrapper, and helper functions.
*/
/**
Creates a new Downloader
@constructor
@class The Downloader class. Create a new instance of this class to download stuff.
@param {String} url The url to download. This can be omitted and supplied later.
*/
function Downloader(url) {
// Source: http://jibbering.com/2002/4/httprequest.html
/** xmlhttprequest object which we're wrapping */
this.http = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation,
// we can cope with old IE versions.
// and security blocked creation of the objects.
try {
this.http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
this.http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
// this.http = false;
}
}
@end @*/
if (! this.http && typeof XMLHttpRequest!='undefined') { this.http = new XMLHttpRequest(); }
/**
The url to download
@type String
*/
this.url = url;
/**
A universally unique ID number
@type integer
*/
this.id=null;
/**
Modification date, to be culled from the incoming headers
@type Date
@private
*/
this.lastModified = null;
/**
What to do when the download completes successfully
@type Function
@private
*/
this.callbackFunction = null;
/**
What to do on failure
@type Function
@private
*/
this.onFailure = null;
/**
Flag set on <code>abort</code>
@type boolean
*/
this.aborted = false;
/**
HTTP method. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html for possibilities.
@type String
*/
this.method='GET';
/**
Async flag.
@type boolean
*/
this.async=true;
}
new Downloader();
/** Submits the http request. */
Downloader.prototype.send = function (x) {
if (!this.http) { return null; }
return this.http.send(x);
};
/** Aborts the download, setting the <code>aborted</code> field to true. */
Downloader.prototype.abort = function () {
if (!this.http) { return null; }
this.aborted=true;
return this.http.abort();
};
/** Returns the downloaded data. */
Downloader.prototype.getData = function () {if (!this.http) { return null; } return this.http.responseText;};
/** Prepares the download. */
Downloader.prototype.setTarget = function () {
if (!this.http) { return null; }
this.http.open(this.method, this.url, this.async);
};
/** Gets the state of the download. */
Downloader.prototype.getReadyState=function () {if (!this.http) { return null; } return this.http.readyState;};
pg.misc.downloadsInProgress = { };
/** Starts the download.
Note that setTarget {@link Downloader#setTarget} must be run first
*/
Downloader.prototype.start=function () {
if (!this.http) { return; }
pg.misc.downloadsInProgress[this.id] = this;
this.http.send(null);
};
/** Gets the 'Last-Modified' date from the download headers.
Should be run after the download completes.
Returns <code>null</code> on failure.
@return {Date}
*/
Downloader.prototype.getLastModifiedDate=function () {
if(!this.http) { return null; }
var lastmod=null;
try {
lastmod=this.http.getResponseHeader('Last-Modified');
} catch (err) {}
if (lastmod) { return new Date(lastmod); }
return null;
};
/** Sets the callback function.
@param {Function} f callback function, called as <code>f(this)</code> on success
*/
Downloader.prototype.setCallback = function (f) {
if(!this.http) { return; }
this.http.onreadystatechange = f;
};
Downloader.prototype.getStatus = function() { if (!this.http) { return null; } return this.http.status; };
//////////////////////////////////////////////////
// helper functions
/** Creates a new {@link Downloader} and prepares it for action.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function newDownload(url, id, callback, onfailure) {
var d=new Downloader(url);
if (!d.http) { return 'ohdear'; }
d.id=id;
d.setTarget();
if (!onfailure) {
onfailure=2;
}
var f = function () {
if (d.getReadyState() == 4) {
delete pg.misc.downloadsInProgress[this.id];
try {
if ( d.getStatus() == 200 ) {
d.data=d.getData();
d.lastModified=d.getLastModifiedDate();
callback(d);
} else if (typeof onfailure == typeof 1) {
if (onfailure > 0) {
// retry
newDownload(url, id, callback, onfailure - 1);
}
} else if (typeof onfailure == 'function') {
onfailure(d,url,id,callback);
}
} catch (somerr) { /* ignore it */ }
}
};
d.setCallback(f);
return d;
}
/** Simulates a download from cached data.
The supplied data is put into a {@link Downloader} as if it had downloaded it.
@param {String} url The url.
@param {integer} id The ID.
@param {Function} callback The callback, which is invoked immediately as <code>callback(d)</code>,
where <code>d</code> is the new {@link Downloader}.
@param {String} data The (cached) data.
@param {Date} lastModified The (cached) last modified date.
*/
function fakeDownload(url, id, callback, data, lastModified, owner) {
var d=newDownload(url,callback);
d.owner=owner;
d.id=id; d.data=data;
d.lastModified=lastModified;
return callback(d);
}
/**
Starts a download.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function startDownload(url, id, callback) {
var d=newDownload(url, id, callback);
if (typeof d == typeof '' ) { return d; }
d.start();
return d;
}
/**
Aborts all downloads which have been started.
*/
function abortAllDownloads() {
for ( var x in pg.misc.downloadsInProgress ) {
try {
pg.misc.downloadsInProgress[x].aborted=true;
pg.misc.downloadsInProgress[x].abort();
delete pg.misc.downloadsInProgress[x];
} catch (e) { }
}
}
// ENDFILE: downloader.js
// STARTFILE: livepreview.js
// TODO: location is often not correct (eg relative links in previews)
/**
* InstaView - a Mediawiki to HTML converter in JavaScript
* Version 0.6.1
* Copyright (C) Pedro Fayolle 2005-2006
* http://en.wikipedia.org/wiki/User:Pilaf
* Distributed under the BSD license
*
* Changelog:
*
* 0.6.1
* - Fixed problem caused by \r characters
* - Improved inline formatting parser
*
* 0.6
* - Changed name to InstaView
* - Some major code reorganizations and factored out some common functions
* - Handled conversion of relative links (i.e. [[/foo]])
* - Fixed misrendering of adjacent definition list items
* - Fixed bug in table headings handling
* - Changed date format in signatures to reflect Mediawiki's
* - Fixed handling of [[:Image:...]]
* - Updated MD5 function (hopefully it will work with UTF-8)
* - Fixed bug in handling of links inside images
*
* To do:
* - Better support for <math>
* - Full support for <nowiki>
* - Parser-based (as opposed to RegExp-based) inline wikicode handling (make it one-pass and bullet-proof)
* - Support for templates (through AJAX)
* - Support for coloured links (AJAX)
*/
var Insta = {}
function setupLivePreview() {
// options
Insta.conf =
{
baseUrl: '',
user: {},
wiki: {
lang: pg.wiki.lang,
interwiki: pg.wiki.interwiki,
default_thumb_width: 180
},
paths: {
articles: '/' + joinPath([pg.wiki.prePath, pg.wiki.articlePath]) + '/',
math: '/math/', // FIXME
images: ( window.getImageUrlStart ? getImageUrlStart(pg.wiki.hostname) : ''),
images_fallback: 'http://upload.wikimedia.org/wikipedia/commons/',
magnify_icon: 'skins/common/images/magnify-clip.png'
},
locale: {
user: pg.ns.user,
image: pg.ns.image,
category: pg.ns.category,
// shouldn't be used in popup previews, i think
months: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
}
}
// options with default values or backreferences
with (Insta.conf) {
user.name = user.name || 'Wikipedian'
user.signature = '[['+locale.user+':'+user.name+'|'+user.name+']]'
//paths.images = 'http://upload.wikimedia.org/wikipedia/' + wiki.lang + '/'
}
// define constants
Insta.BLOCK_IMAGE = new RegExp('^\\[\\[(?:Image|'+Insta.conf.locale.image+
'):.*?\\|.*?(?:frame|thumbnail|thumb|none|right|left|center)', 'i');
}
Insta.dump = function(from, to)
{
if (typeof from == 'string') from = document.getElementById(from)
if (typeof to == 'string') to = document.getElementById(to)
to.innerHTML = this.convert(from.value)
}
Insta.convert = function(wiki)
{
var ll = (typeof wiki == 'string')? wiki.replace(/\r/g,'').split(/\n/): wiki, // lines of wikicode
o='', // output
p=0, // para flag
$r // result of passing a regexp to $()
// some shorthands
function remain() { return ll.length }
function sh() { return ll.shift() } // shift
function ps(s) { o+=s } // push
function f() // similar to C's printf, uses ? as placeholders, ?? to escape question marks
{
var i=1,a=arguments,f=a[0],o='',c,p
for (;i<a.length; i++) if ((p=f.indexOf('?'))+1) {
// allow character escaping
i -= c=f.charAt(p+1)=='?'?1:0
o += f.substring(0,p)+(c?'?':a[i])
f=f.substr(p+1+c)
} else break;
return o+f
}
function html_entities(s) { return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">") }
function max(a,b) { return (a>b)?a:b }
function min(a,b) { return (a<b)?a:b }
// return the first non matching character position between two strings
function str_imatch(a, b)
{
for (var i=0, l=min(a.length, b.length); i<l; i++) if (a.charAt(i)!=b.charAt(i)) break
return i
}
// compare current line against a string or regexp
// if passed a string it will compare only the first string.length characters
// if passed a regexp the result is stored in $r
function $(c) { return (typeof c == 'string') ? (ll[0].substr(0,c.length)==c) : ($r = ll[0].match(c)) }
function $$(c) { return ll[0]==c } // compare current line against a string
function _(p) { return ll[0].charAt(p) } // return char at pos p
function endl(s) { ps(s); sh() }
function parse_list()
{
var prev='';
while (remain() && $(/^([*#:;]+)(.*)$/)) {
var l_match = $r
sh()
var ipos = str_imatch(prev, l_match[1])
// close uncontinued lists
for (var i=prev.length-1; i >= ipos; i--) {
var pi = prev.charAt(i)
if (pi=='*') ps('</ul>')
else if (pi=='#') ps('</ol>')
// close a dl only if the new item is not a dl item (:, ; or empty)
else switch (l_match[1].charAt(i)) { case'':case'*':case'#': ps('</dl>') }
}
// open new lists
for (var i=ipos; i<l_match[1].length; i++) {
var li = l_match[1].charAt(i)
if (li=='*') ps('<ul>')
else if (li=='#') ps('<ol>')
// open a new dl only if the prev item is not a dl item (:, ; or empty)
else switch(prev.charAt(i)) { case'':case'*':case'#': ps('<dl>') }
}
switch (l_match[1].charAt(l_match[1].length-1)) {
case '*': case '#':
ps('<li>' + parse_inline_nowiki(l_match[2])); break
case ';':
ps('<dt>')
var dt_match
// handle ;dt :dd format
if (dt_match = l_match[2].match(/(.*?)(:.*?)$/)) {
ps(parse_inline_nowiki(dt_match[1]))
ll.unshift(dt_match[2])
} else ps(parse_inline_nowiki(l_match[2]))
break
case ':':
ps('<dd>' + parse_inline_nowiki(l_match[2]))
}
prev=l_match[1]
}
// close remaining lists
for (var i=prev.length-1; i>=0; i--)
ps(f('</?>', (prev.charAt(i)=='*')? 'ul': ((prev.charAt(i)=='#')? 'ol': 'dl')))
}
function parse_table()
{
endl(f('<table?>', $(/^\{\|( .*)$/)? $r[1]: ''))
for (;remain();) if ($('|')) switch (_(1)) {
case '}': endl('</table>'); return
case '-': endl(f('<tr ?>', $(/\|-*(.*)/)[1])); break
default: parse_table_data()
}
else if ($('!')) parse_table_data()
else sh()
}
function parse_table_data()
{
var td_line, match_i
// 1: "|+", '|' or '+'
// 2: ??
// 3: attributes ??
// TODO: finish commenting this regexp
var td_match = sh().match(/^(\|\+|\||!)((?:([^[|]*?)\|(?!\|))?(.*))$/)
if (td_match[1] == '|+') ps('<caption');
else ps('<t' + ((td_match[1]=='|')?'d':'h'))
if (typeof td_match[3] != 'undefined') {
ps(' ' + td_match[3])
match_i = 4
} else match_i = 2
ps('>')
if (td_match[1] != '|+') {
// use || or !! as a cell separator depending on context
// NOTE: when split() is passed a regexp make sure to use non-capturing brackets
td_line = td_match[match_i].split((td_match[1] == '|')? '||': /(?:\|\||!!)/)
ps(parse_inline_nowiki(td_line.shift()))
while (td_line.length) ll.unshift(td_match[1] + td_line.pop())
} else ps(td_match[match_i])
var tc = 0, td = []
for (;remain(); td.push(sh()))
if ($('|')) {
if (!tc) break // we're at the outer-most level (no nested tables), skip to td parse
else if (_(1)=='}') tc--
}
else if (!tc && $('!')) break
else if ($('{|')) tc++
if (td.length) ps(Insta.convert(td))
}
function parse_pre()
{
ps('<pre>')
do endl(parse_inline_nowiki(ll[0].substring(1)) + "\n"); while (remain() && $(' '))
ps('</pre>')
}
function parse_block_image()
{
ps(parse_image(sh()))
}
function parse_image(str)
{
//<NOLITE>
// get what's in between "[[Image:" and "]]"
var tag = str.substring(Insta.conf.locale.image.length + 3, str.length - 2);
var width;
var attr = [], filename, caption = '';
var thumb=0, frame=0, center=0;
var align='';
if (tag.match(/\|/)) {
// manage nested links
var nesting = 0;
var last_attr;
for (var i = tag.length-1; i > 0; i--) {
if (tag.charAt(i) == '|' && !nesting) {
last_attr = tag.substr(i+1);
tag = tag.substring(0, i);
break;
} else switch (tag.substr(i-1, 2)) {
case ']]':
nesting++;
i--;
break;
case '[[':
nesting--;
i--;
}
}
attr = tag.split(/\s*\|\s*/);
attr.push(last_attr);
filename = attr.shift();
var w_match;
for (;attr.length; attr.shift())
if (w_match = attr[0].match(/^(\d*)(?:[px]*\d*)?px$/)) width = w_match[1]
else switch(attr[0]) {
case 'thumb':
case 'thumbnail':
thumb=true;
case 'frame':
frame=true;
break;
case 'none':
case 'right':
case 'left':
center=false;
align=attr[0];
break;
case 'center':
center=true;
align='none';
break;
default:
if (attr.length == 1) caption = attr[0];
}
} else filename = tag;
var o='';
if (frame) {
if (align=='') align = 'right';
o += f("<div class='thumb t?'>", align);
if (thumb) {
if (!width) width = Insta.conf.wiki.default_thumb_width;
o += f("<div style='width:?px;'>?", 2+width*1, make_image(filename, caption, width)) +
f("<div class='thumbcaption'><div class='magnify' style='float:right'><a href='?' class='internal' title='Enlarge'><img src='?'></a></div>?</div>",
Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename,
Insta.conf.paths.magnify_icon,
parse_inline_nowiki(caption)
)
} else {
o += '<div>' + make_image(filename, caption) + f("<div class='thumbcaption'>?</div>", parse_inline_nowiki(caption))
}
o += '</div></div>';
} else if (align != '') {
o += f("<div class='float?'><span>?</span></div>", align, make_image(filename, caption, width));
} else {
return make_image(filename, caption, width);
}
return center? f("<div class='center'>?</div>", o): o;
//</NOLITE>
}
function parse_inline_nowiki(str)
{
var start, lastend=0
var substart=0, nestlev=0, open, close, subloop;
var html='';
while (-1 != (start = str.indexOf('<nowiki>', substart))) {
html += parse_inline_wiki(str.substring(lastend, start));
start += 8;
substart = start;
subloop = true;
do {
open = str.indexOf('<nowiki>', substart);
close = str.indexOf('</nowiki>', substart);
if (close<=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));
}
function make_image(filename, caption, width)
{
//<NOLITE>
// uppercase first letter in file name
filename = filename.charAt(0).toUpperCase() + filename.substr(1);
// replace spaces with underscores
filename = filename.replace(/ /g, '_');
caption = strip_inline_wiki(caption);
var md5 = hex_md5(filename);
var source = md5.charAt(0) + '/' + md5.substr(0,2) + '/' + filename;
if (width) width = "width='" + width + "px'";
var img = f("<img onerror=\"this.onerror=null;this.src='?'\" src='?' ? ?>", Insta.conf.paths.images_fallback + source, Insta.conf.paths.images + source, (caption!='')? "alt='" + caption + "'" : '', width);
return f("<a class='image' ? href='?'>?</a>", (caption!='')? "title='" + caption + "'" : '', Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename, img);
//</NOLITE>
}
function parse_inline_images(str)
{
//<NOLITE>
var start, substart=0, nestlev=0;
var loop, close, open, wiki, html;
while (-1 != (start=str.indexOf('[[', substart))) {
if(str.substr(start+2).match(RegExp('^' + Insta.conf.locale.image + ':','i'))) {
loop=true;
substart=start;
do {
substart+=2;
close=str.indexOf(']]',substart);
open=str.indexOf('[[',substart);
if (close<=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;
}
//</NOLITE>
return str;
}
// the output of this function doesn't respect the FILO structure of HTML
// but since most browsers can handle it I'll save myself the hassle
function parse_inline_formatting(str)
{
var em,st,i,li,o='';
while ((i=str.indexOf("''",li))+1) {
o += str.substring(li,i);
li=i+2;
if (str.charAt(i+2)=="'") {
li++;
st=!st;
o+=st?'<strong>':'</strong>';
} else {
em=!em;
o+=em?'<em>':'</em>';
}
}
return o+str.substr(li);
}
function parse_inline_wiki(str)
{
var aux_match;
str = parse_inline_images(str);
str = parse_inline_formatting(str);
// math
while (aux_match = str.match(/<(?:)math>(.*?)<\/math>/i)) {
var math_md5 = hex_md5(aux_match[1]);
str = str.replace(aux_match[0], f("<img src='?.png'>", Insta.conf.paths.math+math_md5));
}
// Build a Mediawiki-formatted date string
var date = new Date;
var minutes = date.getUTCMinutes();
if (minutes < 10) minutes = '0' + minutes;
var date = f("?:?, ? ? ? (UTC)", date.getUTCHours(), minutes, date.getUTCDate(), Insta.conf.locale.months[date.getUTCMonth()], date.getUTCFullYear());
// text formatting
return str.
// signatures
replace(/~{5}(?!~)/g, date).
replace(/~{4}(?!~)/g, Insta.conf.user.name+' '+date).
replace(/~{3}(?!~)/g, Insta.conf.user.name).
// [[:Category:...]], [[:Image:...]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):[^|]*?)\\]\\](\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$1$2</a>").
// remove straight category and interwiki tags
replace(RegExp('\\[\\[(?:'+Insta.conf.locale.category+'|'+Insta.conf.wiki.interwiki+'):.*?\\]\\]','gi'),'').
// [[:Category:...|Links]], [[:Image:...|Links]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):.*?)\\|([^\\]]+?)\\]\\](\\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$2$3</a>").
// [[/Relative links]]
replace(/\[\[(\/[^|]*?)\]\]/g, f("<a href='?$1'>$1</a>", Insta.conf.baseUrl)).
// [[/Replaced|Relative links]]
replace(/\[\[(\/.*?)\|(.+?)\]\]/g, f("<a href='?$1'>$2</a>", Insta.conf.baseUrl)).
// [[Common links]]
replace(/\[\[([^|]*?)\]\](\w*)/g, f("<a href='?$1'>$1$2</a>", Insta.conf.paths.articles)).
// [[Replaced|Links]]
replace(/\[\[(.*?)\|([^\]]+?)\]\](\w*)/g, f("<a href='?$1'>$2$3</a>", Insta.conf.paths.articles)).
// [[Stripped:Namespace|Namespace]]
replace(/\[\[([^\]]*?:)?(.*?)( *\(.*?\))?\|\]\]/g, f("<a href='?$1$2$3'>$2</a>", Insta.conf.paths.articles)).
// External links
replace(/\[(https?|news|ftp|mailto|gopher|irc):(\/*)([^\]]*?) (.*?)\]/g, "<a class='external' href='$1:$2$3'>$4</a>").
replace(/\[http:\/\/(.*?)\]/g, "<a class='external' href='http://$1'>[#]</a>").
replace(/\[(news|ftp|mailto|gopher|irc):(\/*)(.*?)\]/g, "<a class='external' href='$1:$2$3'>$1:$2$3</a>").
replace(/(^| )(https?|news|ftp|mailto|gopher|irc):(\/*)([^ $]*[^.,!?;: $])/g, "$1<a class='external' href='$2:$3$4'>$2:$3$4</a>").
replace('__NOTOC__','').
replace('__NOEDITSECTION__','');
}
function strip_inline_wiki(str)
{
return str
.replace(/\[\[[^\]]*\|(.*?)\]\]/g,'$1')
.replace(/\[\[(.*?)\]\]/g,'$1')
.replace(/''(.*?)''/g,'$1');
}
// begin parsing
for (;remain();) if ($(/^(={1,6})(.*)\1(.*)$/)) {
p=0
endl(f('<h?>?</h?>?', $r[1].length, parse_inline_nowiki($r[2]), $r[1].length, $r[3]))
} else if ($(/^[*#:;]/)) {
p=0
parse_list()
} else if ($(' ')) {
p=0
parse_pre()
} else if ($('{|')) {
p=0
parse_table()
} else if ($(/^----+$/)) {
p=0
endl('<hr>')
} else if ($(Insta.BLOCK_IMAGE)) {
p=0
parse_block_image()
} else {
// handle paragraphs
if ($$('')) {
if (p = (remain()>1 && ll[1]==(''))) endl('<p><br>')
} else {
if(!p) {
ps('<p>')
p=1
}
ps(parse_inline_nowiki(ll[0]) + ' ')
}
sh();
}
return o
};
window.wiki2html=function(txt,baseurl) {
Insta.conf.baseUrl=baseurl;
return Insta.convert(txt);
};
// ENDFILE: livepreview.js
// STARTFILE: pageinfo.js
//<NOLITE>
function popupFilterPageSize(data) {
return formatBytes(data.length);
}
function popupFilterCountLinks(data) {
var num=countLinks(data);
return String(num) + ' ' + ((num!=1)?popupString('wikiLinks'):popupString('wikiLink'));
}
function popupFilterCountImages(data) {
var num=countImages(data);
return String(num) + ' ' + ((num!=1)?popupString('images'):popupString('image'));
}
function popupFilterCountCategories(data) {
var num=countCategories(data);
return String(num) + ' ' + ((num!=1)?popupString('categories'):popupString('category'));
}
function popupFilterLastModified(data,download) {
var lastmod=download.lastModified;
var now=new Date();
var age=now-lastmod;
if (lastmod && getValueOf('popupLastModified')) {
return (tprintf('%s old', [formatAge(age)])).replace(RegExp(' ','g'), ' ');
}
return '';
}
function formatAge(age) {
// coerce into a number
var a=0+age, aa=a;
var seclen = 1000;
var minlen = 60*seclen;
var hourlen = 60*minlen;
var daylen = 24*hourlen;
var weeklen = 7*daylen;
var numweeks = (a-a%weeklen)/weeklen; a = a-numweeks*weeklen; var sweeks = addunit(numweeks, 'week');
var numdays = (a-a%daylen)/daylen; a = a-numdays*daylen; var sdays = addunit(numdays, 'day');
var numhours = (a-a%hourlen)/hourlen; a = a-numhours*hourlen; var shours = addunit(numhours,'hour');
var nummins = (a-a%minlen)/minlen; a = a-nummins*minlen; var smins = addunit(nummins, 'minute');
var numsecs = (a-a%seclen)/seclen; a = a-numsecs*seclen; var ssecs = addunit(numsecs, 'second');
if (aa > 4*weeklen) { return sweeks; }
if (aa > weeklen) { return sweeks + ' ' + sdays; }
if (aa > daylen) { return sdays + ' ' + shours; }
if (aa > 6*hourlen) { return shours; }
if (aa > hourlen) { return shours + ' ' + smins; }
if (aa > 10*minlen) { return smins; }
if (aa > minlen) { return smins + ' ' + ssecs; }
return ssecs;
}
function addunit(num,str) { return '' + num + ' ' + ((num!=1) ? popupString(str+'s') : popupString(str)) ;}
function runPopupFilters(list, data, download) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i] && typeof list[i] == 'function') {
var s=list[i](data, download, download.owner.article);
if (s) { ret.push(s); }
}
}
return ret;
}
function getPageInfo(data, download) {
if (!data || data.length === 0) { return popupString('Empty page'); }
var popupFilters=getValueOf('popupFilters') || [];
var extraPopupFilters = getValueOf('extraPopupFilters') || [];
var pageInfoArray = runPopupFilters(popupFilters.concat(extraPopupFilters), data, download);
var pageInfo=pageInfoArray.join(', ');
if (pageInfo !== '' ) { pageInfo = upcaseFirst(pageInfo); }
return pageInfo;
}
// this could be improved!
function countLinks(wikiText) { return wikiText.split('[[').length - 1; }
// if N = # matches, n = # brackets, then
// String.parenSplit(regex) intersperses the N+1 split elements
// with Nn other elements. So total length is
// L= N+1 + Nn = N(n+1)+1. So N=(L-1)/(n+1).
function countImages(wikiText) {
return (wikiText.parenSplit(pg.re.image).length - 1) / (pg.re.imageBracketCount + 1);
}
function countCategories(wikiText) {
return (wikiText.parenSplit(pg.re.category).length - 1) / (pg.re.categoryBracketCount + 1);
}
function popupFilterStubDetect(data, download, article) {
var counts=stubCount(data, article);
if (counts.real) { return popupString('stub'); }
if (counts.sect) { return popupString('section stub'); }
return '';
}
function popupFilterDisambigDetect(data, download, article) {
if (getValueOf('popupOnlyArticleDabStub') && article.namespace()) { return ''; }
return (isDisambig(data, article)) ? popupString('disambig') : '';
}
function formatBytes(num) {
return (num > 949) ? (Math.round(num/100)/10+popupString('kB')) : (num +' ' + popupString('bytes')) ;
}
//</NOLITE>
// ENDFILE: pageinfo.js
// STARTFILE: titles.js
/**
@fileoverview Defines the {@link Title} class, and associated crufty functions.
<code>Title</code> deals with article titles and their various
forms. {@link Stringwrapper} is the parent class of
<code>Title</code>, which exists simply to make things a little
neater.
*/
/**
Creates a new Stringwrapper.
@constructor
@class the Stringwrapper class. This base class is not really
useful on its own; it just wraps various common string operations.
*/
function Stringwrapper() {
/**
Wrapper for this.toString().indexOf()
@param {String} x
@type integer
*/
this.indexOf=function(x){return this.toString().indexOf(x);};
/**
Returns this.value.
@type String
*/
this.toString=function(){return this.value;};
/**
Wrapper for {@link String#parenSplit} applied to this.toString()
@param {RegExp} x
@type Array
*/
this.parenSplit=function(x){return this.toString().parenSplit(x);};
/**
Wrapper for this.toString().substring()
@param {String} x
@param {String} y (optional)
@type String
*/
this.substring=function(x,y){
if (typeof y=='undefined') { return this.toString().substring(x); }
return this.toString().substring(x,y);
};
/**
Wrapper for this.toString().split()
@param {String} x
@type Array
*/
this.split=function(x){return this.toString().split(x);};
/**
Wrapper for this.toString().replace()
@param {String} x
@param {String} y
@type String
*/
this.replace=function(x,y){ return this.toString().replace(x,y); };
}
/**
Creates a new <code>Title</code>.
@constructor
@class The Title class. Holds article titles and converts them into
various forms. Also deals with anchors, by which we mean the bits
of the article URL after a # character, representing locations
within an article.
@param {String} value The initial value to assign to the
article. This must be the canonical title (see {@link
Title#value}. Omit this in the constructor and use another function
to set the title if this is unavailable.
*/
function Title(val) {
/**
The canonical article title. This must be in UTF-8 with no
entities, escaping or nasties. Also, underscores should be
replaced with spaces.
@type String
@private
*/
this.value=null;
/**
The canonical form of the anchor. This should be exactly as
it appears in the URL, i.e. with the .C3.0A bits in.
@type String
*/
this.anchor='';
this.setUtf(val);
}
Title.prototype=new Stringwrapper();
/**
Returns the canonical representation of the article title, optionally without anchor.
@param {boolean} omitAnchor
@fixme Decide specs for anchor
@return String The article title and the anchor.
*/
Title.prototype.toString=function(omitAnchor) {
return this.value + ( (!omitAnchor && this.anchor) ? '#' + this.anchorString() : '' );
};
Title.prototype.anchorString=function() {
if (!this.anchor) { return ''; }
var split=this.anchor.parenSplit(/((?:[.][0-9A-F]{2})+)/);
var len=split.length;
for (var j=1; j<len; j+=2) {
// FIXME s/decodeURI/decodeURIComponent/g ?
split[j]=decodeURIComponent(split[j].split('.').join('%')).split('_').join(' ');
}
return split.join('');
};
Title.prototype.urlAnchor=function() {
var split=this.anchor.parenSplit('/((?:[%][0-9A-F]{2})+)/');
var len=split.length;
for (var j=1; j<len; j+=2) {
split[j]=split[j].split('%').join('.');
}
return split.join('');
};
Title.prototype.anchorFromUtf=function(str) {
this.anchor=encodeURIComponent(str).split('.').join('%2E').split('%').join('.');
};
Title.fromURL=function(h) {
return new Title().fromURL(h);
};
Title.prototype.fromURL=function(h) {
if (typeof h != 'string') {
this.value=null;
return this;
}
// NOTE : playing with decodeURI, encodeURI, escape, unescape,
// we seem to be able to replicate the IE borked encoding
// IE doesn't do this new-fangled utf-8 thing.
// and it's worse than that.
// IE seems to treat the query string differently to the rest of the url
// the query is treated as bona-fide utf8, but the first bit of the url is pissed around with
// we fix up & for all browsers, just in case.
var splitted=h.split('?');
splitted[0]=splitted[0].split('&').join('%26');
if (pg.flag.linksLikeIE6) {
splitted[0]=encodeURI(decode_utf8(splitted[0]));
}
h=splitted.join('?');
var contribs=pg.re.contribs.exec(h);
if (contribs !== null) {
if (contribs[1]=='title=') { contribs[3]=contribs[3].split('+').join(' '); }
var u=new Title(contribs[3]);
this.setUtf(this.decodeNasties(pg.ns.user + ':' + u.stripNamespace()));
return this;
}
var email=pg.re.email.exec(h);
if (email !== null) {
this.setUtf(this.decodeNasties(pg.ns.user + ':' + new Title(email[3]).stripNamespace()));
return this;
}
var backlinks=pg.re.backlinks.exec(h);
if (backlinks) {
this.setUtf(this.decodeNasties(new Title(backlinks[3])));
return this;
}
// no more special cases to check --
// hopefully it's not a disguised user-related or specially treated special page
var m=pg.re.main.exec(h);
if(m===null) { this.value=null; }
else {
var fromBotInterface = /[?](.+[&])?title=/.test(h);
if (fromBotInterface) {
m[2]=m[2].split('+').join('_');
}
var extracted = m[2] + (m[3] ? '#' + m[3] : '');
this.setUtf(this.decodeNasties(extracted));
}
return this;
};
Title.prototype.decodeNasties=function(txt) {
var ret= this.decodeEscapes(decodeURI(txt));
ret = ret.replace(/[_ ]*$/, '');
return ret;
};
Title.prototype.decodeEscapes=function(txt) {
var split=txt.parenSplit(/((?:[%][0-9A-Fa-f]{2})+)/);
var len=split.length;
for (var i=1; i<len; i=i+2) {
// FIXME is decodeURIComponent better?
split[i]=unescape(split[i]);
}
return split.join('');
};
Title.fromAnchor=function(a) {
return new Title().fromAnchor(a);
};
Title.prototype.fromAnchor=function(a) {
if (!a) { this.value=null; return this; }
return this.fromURL(a.href);
};
Title.fromWikiText=function(txt) {
return new Title().fromWikiText(txt);
};
Title.prototype.fromWikiText=function(txt) {
// FIXME - testing needed
if (!pg.flag.linksLikeIE6) { txt=myDecodeURI(txt); }
this.setUtf(txt);
return this;
};
Title.prototype.hintValue=function(){
if(!this.value) { return ''; }
return safeDecodeURI(this.value);
};
//<NOLITE>
Title.prototype.toUserName=function(withNs) {
if (this.namespace() != pg.ns.user && this.namespace() != pg.ns.usertalk) {
this.value=null;
return;
}
this.value = (withNs ? pg.ns.user + ':' : '') + this.stripNamespace().split('/')[0];
};
Title.prototype.userName=function(withNs) {
var t=(new Title(this.value));
t.toUserName(withNs);
if (t.value) { return t; }
return null;
};
Title.prototype.toTalkPage=function() {
// convert article to a talk page, or if we can't return null
// or, in other words, return null if this ALREADY IS a talk page
// and return the corresponding talk page otherwise
if (this.value===null) { return null; }
var talkRegex=namespaceListToRegex(pg.ns.talkList);
if (talkRegex.exec(this.value)) { this.value=null; return null;}
var nsReg=namespaceListToRegex(pg.ns.withTalkList);
var splitted=this.value.parenSplit(nsReg);
if (splitted.length<2) {
this.value= (pg.ns.talkList[0]+':'+this.value).split(' ').join('_');
return this.value;
}
for (var i=0; i< pg.ns.withTalkList.length; ++i) {
if (splitted[1]==pg.ns.withTalkList[i]) {
splitted[1]=pg.ns.talkList[i];
this.value=splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return null;
};
//</NOLITE>
Title.prototype.namespace=function() {
var n=this.value.indexOf(':');
if (n<0) { return ''; }
var list=pg.ns.list;
for (var i=0; i<list.length; ++i) {
if (upcaseFirst(list[i]) == this.value.substring(0,n)) { return list[i]; }
}
return '';
};
//<NOLITE>
Title.prototype.talkPage=function() {
var t=new Title(this.value);
t.toTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.isTalkPage=function() {
if (this.talkPage()===null) { return true; }
return false;
};
Title.prototype.toArticleFromTalkPage=function() {
var talkRegex=namespaceListToRegex(pg.ns.talkList);
var splitted=this.value.parenSplit(talkRegex);
if (splitted.length < 2 || splitted[0].length > 0) { this.value=null; return null; }
if (splitted[1]==pg.ns.talkList[0]) {
splitted[1]='';
this.value=splitted.join(':').substring(2).split(' ').join('_');
return this.value;
}
for (var i=1; i< pg.ns.talkList.length; ++i) {
if (splitted[1]==pg.ns.talkList[i] || splitted[1]==pg.ns.talkList[i].split(' ').join('_')) {
splitted[1]=pg.ns.withTalkList[i];
this.value= splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return this.value;
};
Title.prototype.articleFromTalkPage=function() {
var t=new Title(this.value);
t.toArticleFromTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.articleFromTalkOrArticle=function() {
var t=new Title(this.value);
if ( t.toArticleFromTalkPage() ) { return t; }
return this;
};
Title.prototype.isIpUser=function() {
return pg.re.ipUser.test(this.userName());
};
//</NOLITE>
Title.prototype.stripNamespace=function(){ // returns a string, not a Title
// this isn't very sophisticated
// it just removes everything up to the final :
// BUG: probably does silly things for images with colons in the name - check it out
var list = this.value.split(':');
return list[list.length-1];
};
Title.prototype.setUtf=function(value){
if (!value) { this.value=''; return; }
var anch=value.indexOf('#');
if(anch < 0) { this.value=value.split('_').join(' '); this.anchor=''; return; }
this.value=value.substring(0,anch).split('_').join(' ');
this.anchor=value.substring(anch+1);
this.ns=null; // wait until namespace() is called
};
Title.prototype.setUrl=function(urlfrag) {
var anch=urlfrag.indexOf('#');
this.value=safeDecodeURI(urlfrag.substring(0,anch));
this.anchor=value.substring(anch+1);
};
Title.prototype.append=function(x){
this.setUtf(this.value + x);
};
Title.prototype.urlString=function(x) {
x || ( x={} );
var v=this.toString(true);
if (!x.omitAnchor && this.anchor) { v+= '#' + this.urlAnchor(); }
if (!x.keepSpaces) { v=v.split(' ').join('_'); }
return encodeURI(v).split('&').join('%26').split('?').join('%3F').split('+').join('%2B');
};
Title.prototype.removeAnchor=function() {
return new Title(this.toString(true));
};
Title.prototype.toUrl=function() {
return pg.wiki.titlebase + this.urlString();
};
function paramValue(param, url) {
var s=url.parenSplit(RegExp('[?&]' + literalizeRegex(param) + '=([^?&]*)'));
if (!url) { return null; }
return s[1] || null;
}
function parseParams(url) {
var ret={};
if (url.indexOf('?')==-1) { return ret; }
var s=url.split('?').slice(1).join();
var t=s.split('&');
for (var i=0; i<t.length; ++i) {
var z=t[i].split('=');
z.push(null);
ret[z[0]]=z[1];
}
return ret;
}
// all sorts of stuff here
// FIXME almost everything needs to be rewritten
function oldidFromAnchor(a) { return paramValue('oldid', a.href); }
//function diffFromAnchor(a) { return paramValue('diff', a.href); }
function wikiMarkupToAddressFragment (str) { // for images
var ret = safeDecodeURI(str);
ret = ret.split(' ').join('_');
ret = encodeURI(ret);
return ret;
}
// (a) myDecodeURI (first standard decodeURI, then pg.re.urlNoPopup)
// (b) change spaces to underscores
// (c) encodeURI (just the straight one, no pg.re.urlNoPopup)
function myDecodeURI (str) {
var ret;
// FIXME decodeURIComponent??
try { ret=decodeURI(str.toString()); }
catch (summat) { return str; }
for (var i=0; i<pg.misc.decodeExtras.length; ++i) {
var from=pg.misc.decodeExtras[i].from;
var to=pg.misc.decodeExtras[i].to;
ret=ret.split(from).join(to);
}
return ret;
}
function safeDecodeURI(str) { var ret=myDecodeURI(str); return ret || str; }
///////////
// TESTS //
///////////
//<NOLITE>
function isIpUser(user) {return pg.re.ipUser.test(user);}
function isDisambig(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
return ! article.isTalkPage() && pg.re.disambig.test(data);
}
function stubCount(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
var sectStub=0;
var realStub=0;
if (pg.re.stub.test(data)) {
var s=data.parenSplit(pg.re.stub);
for (var i=1; i<s.length; i=i+2) {
if (s[i]) { ++sectStub; }
else { ++realStub; }
}
}
return { real: realStub, sect: sectStub };
}
function isValidImageName(str){ // extend as needed...
return ( str.indexOf('{') == -1 );
}
function isInStrippableNamespace(article) {
return ( findInArray( pg.ns.nonArticleList, article.namespace() ) > -1 );
}
function isInMainNamespace(article) { return !isInStrippableNamespace(article); }
function anchorContainsImage(a) {
// iterate over children of anchor a
// see if any are images
if (a===null) { return false; }
kids=a.childNodes;
for (var i=0; i<kids.length; ++i) { if (kids[i].nodeName=='IMG') { return true; } }
return false;
}
//</NOLITE>
function isPopupLink(a) {
// NB for performance reasons, TOC links generally return true
// they should be stripped out later
if (!markNopopupSpanLinks.done) { markNopopupSpanLinks(); }
if (a.inNopopupSpan || a.className=='sortheader') { return false; }
// FIXME is this faster inline?
if (a.onmousedown || a.getAttribute('nopopup')) { return false; }
var h=a.href;
if (!pg.re.basenames.test(h)) { return false; }
if ( !pg.re.urlNoPopup.test(h) ) { return true; }
return (
(pg.re.email.test(h) || pg.re.contribs.test(h) || pg.re.backlinks.test(h)) &&
h.indexOf('&limit=') == -1 );
}
function markNopopupSpanLinks() {
var s=document.getElementsByTagName('span');
for (var i=0; i<s.length; ++i) {
if (s[i].className && s[i].className.toLowerCase()=='nopopups') {
var as=s[i].getElementsByTagName('a');
for (var j=0; j<as.length; ++j) {
as[j].inNopopupSpan=true;
}
}
}
markNopopupSpanLinks.done=true;
}
// ENDFILE: titles.js
// STARTFILE: cookies.js
//<NOLITE>
//////////////////////////////////////////////////
// Cookie handling
// from http://www.quirksmode.org/js/cookies.html
var Cookie= {
create: function(name,value,days)
{
var expires;
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}
else { expires = ""; }
document.cookie = name+"="+value+expires+"; path=/";
},
read: function(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') { c = c.substring(1,c.length); }
if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length,c.length); }
}
return null;
},
erase: function(name)
{
Cookie.create(name,"",-1);
}
};
//</NOLITE>
// ENDFILE: cookies.js
// STARTFILE: getpage.js
//////////////////////////////////////////////////
// Wiki-specific downloading
//
// Schematic for a getWiki call
//
// getWiki->-getPageWithCaching
// |
// false | true
// getPage<-[findPictureInCache]->-onComplete(a fake download)
// \.
// (async)->addPageToCache(download)->-onComplete(download)
/** @todo {document}
@param {Title} article
@param {Function} onComplete
@param {integer} oldid
@param {Navapopup} owner
*/
function getWiki(article, onComplete, oldid, owner) {
// set ctype=text/css to get around opera gzip bug
var url = pg.wiki.titlebase + article.removeAnchor().urlString() +
'&action=raw&ctype=text/css';
if (oldid || oldid===0 || oldid==='0') { url += '&oldid='+oldid; }
url += '&maxage=0&smaxage=0';
getPageWithCaching(url, onComplete, owner);
}
// check cache to see if page exists
function getPageWithCaching(url, onComplete, owner) {
log('getPageWithCaching, url='+url);
var i=findInPageCache(url);
if (i > -1) {
var d=fakeDownload(url, owner.idNumber, onComplete,
pg.cache.pages[i].data, pg.cache.pages[i].lastModified,
owner);
} else {
var d=getPage(url, onComplete, owner);
if (d && owner && owner.addDownload) {
owner.addDownload(d);
d.owner=owner;
}
}
}
function getPage(url, onComplete, owner) {
log('getPage');
var callback= function (d) { if (!d.aborted) {addPageToCache(d); onComplete(d);} };
return startDownload(url, owner.idNumber, callback);
}
function findInPageCache(url) {
for (var i=0; i<pg.cache.pages.length; ++i) {
if (url==pg.cache.pages[i].url) { return i; }
}
return -1;
}
function addPageToCache(download) {
log('addPageToCache '+download.url);
var page = {url: download.url, data: download.data, lastModified: download.lastModified};
return pg.cache.pages.push(page);
}
// ENDFILE: getpage.js
// STARTFILE: md5-2.2alpha.js
//<NOLITE>
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }
function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }
function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }
function hex_hmac_md5(k, d)
{ return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function b64_hmac_md5(k, d)
{ return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function any_hmac_md5(k, d, e)
{ return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
/*
* Calculate the MD5 of a raw string
*/
function rstr_md5(s)
{
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
}
/*
* Calculate the HMAC-MD5, of a key and some data (raw strings)
*/
function rstr_hmac_md5(key, data)
{
var bkey = rstr2binl(key);
if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
}
/*
* Convert a raw string to a hex string
*/
function rstr2hex(input)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var output = "";
var x;
for(var i = 0; i < input.length; i++)
{
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F)
+ hex_tab.charAt( x & 0x0F);
}
return output;
}
/*
* Convert a raw string to a base-64 string
*/
function rstr2b64(input)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var output = "";
var len = input.length;
for(var i = 0; i < len; i += 3)
{
var triplet = (input.charCodeAt(i) << 16)
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
| (i + 2 < len ? input.charCodeAt(i+2) : 0);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > input.length * 8) output += b64pad;
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
}
}
return output;
}
/*
* Convert a raw string to an arbitrary string encoding
*/
function rstr2any(input, encoding)
{
var divisor = encoding.length;
var remainders = Array();
var i, q, x, quotient;
/* Convert to an array of 16-bit big-endian values, forming the dividend */
var dividend = Array(input.length / 2);
for(i = 0; i < dividend.length; i++)
{
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
}
/*
* Repeatedly perform a long division. The binary array forms the dividend,
* the length of the encoding is the divisor. Once computed, the quotient
* forms the dividend for the next step. We stop when the dividend is zero.
* All remainders are stored for later use.
*/
while(dividend.length > 0)
{
quotient = Array();
x = 0;
for(i = 0; i < dividend.length; i++)
{
x = (x << 16) + dividend[i];
q = Math.floor(x / divisor);
x -= q * divisor;
if(quotient.length > 0 || q > 0)
quotient[quotient.length] = q;
}
remainders[remainders.length] = x;
dividend = quotient;
}
/* Convert the remainders to the output string */
var output = "";
for(i = remainders.length - 1; i >= 0; i--)
output += encoding.charAt(remainders[i]);
return output;
}
/*
* Encode a string as utf-8.
* For efficiency, this assumes the input is valid utf-16.
*/
function str2rstr_utf8(input)
{
var output = "";
var i = -1;
var x, y;
while(++i < input.length)
{
/* Decode utf-16 surrogate pairs */
x = input.charCodeAt(i);
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
{
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++;
}
/* Encode output as utf-8 */
if(x <= 0x7F)
output += String.fromCharCode(x);
else if(x <= 0x7FF)
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
0x80 | ( x & 0x3F));
else if(x <= 0xFFFF)
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
else if(x <= 0x1FFFFF)
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
0x80 | ((x >>> 12) & 0x3F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
}
return output;
}
/*
* Encode a string as utf-16
*/
function str2rstr_utf16le(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
(input.charCodeAt(i) >>> 8) & 0xFF);
return output;
}
function str2rstr_utf16be(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
input.charCodeAt(i) & 0xFF);
return output;
}
/*
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*/
function rstr2binl(input)
{
var output = Array(input.length >> 2);
for(var i = 0; i < output.length; i++)
output[i] = 0;
for(var i = 0; i < input.length * 8; i += 8)
output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
return output;
}
/*
* Convert an array of little-endian words to a string
*/
function binl2rstr(input)
{
var output = "";
for(var i = 0; i < input.length * 32; i += 8)
output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
return output;
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length.
*/
function binl_md5(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
//</NOLITE>
// ENDFILE: md5-2.2alpha.js
// STARTFILE: parensplit.js
//////////////////////////////////////////////////
// parenSplit
// String.prototype.parenSplit should do what ECMAscript says
// String.prototype.split does, interspersing paren matches between
// the split elements
if (String('abc'.split(/(b)/))!='a,b,c') {
// broken String.split, e.g. konq, IE
String.prototype.parenSplit=function (re) {
re=nonGlobalRegex(re);
var s=this;
var m=re.exec(s);
var ret=[];
while (m && s) {
// without the following loop, we have
// 'ab'.parenSplit(/a|(b)/) != 'ab'.split(/a|(b)/)
for(var i=0; i<m.length; ++i) {
if (typeof m[i]=='undefined') m[i]='';
}
ret.push(s.substring(0,m.index));
ret = ret.concat(m.slice(1));
s=s.substring(m.index + m[0].length);
m=re.exec(s);
}
ret.push(s);
return ret;
};
} else {
String.prototype.parenSplit=function (re) { return this.split(re); };
String.prototype.parenSplit.isNative=true;
}
function nonGlobalRegex(re) {
var s=re.toString();
flags='';
for (var j=s.length; s.charAt(j) != '/'; --j) {
if (s.charAt(j) != 'g') { flags += s.charAt(j); }
}
var t=s.substring(1,j);
return RegExp(t,flags);
}
// ENDFILE: parensplit.js
// STARTFILE: tools.js
// IE madness with encoding
// ========================
//
// suppose throughout that the page is in utf8, like wikipedia
//
// if a is an anchor DOM element and a.href should consist of
//
// http://host.name.here/wiki/foo?bar=baz
//
// then IE gives foo as "latin1-encoded" utf8; we have foo = decode_utf8(decodeURI(foo_ie))
// but IE gives bar=baz correctly as plain utf8
//
// ---------------------------------
//
// IE's xmlhttp doesn't understand utf8 urls. Have to use encodeURI here.
//
// ---------------------------------
//
// summat else
// Source: http://aktuell.de.selfhtml.org/artikel/javascript/utf8b64/utf8.htm
//<NOLITE>
function encode_utf8(rohtext) {
// dient der Normalisierung des Zeilenumbruchs
rohtext = rohtext.replace(/\r\n/g,"\n");
var utftext = "";
for(var n=0; n<rohtext.length; n++)
{
// ermitteln des Unicodes des aktuellen Zeichens
var c=rohtext.charCodeAt(n);
// alle Zeichen von 0-127 => 1byte
if (c<128)
utftext += String.fromCharCode(c);
// alle Zeichen von 127 bis 2047 => 2byte
else if((c>127) && (c<2048)) {
utftext += String.fromCharCode((c>>6)|192);
utftext += String.fromCharCode((c&63)|128);}
// alle Zeichen von 2048 bis 66536 => 3byte
else {
utftext += String.fromCharCode((c>>12)|224);
utftext += String.fromCharCode(((c>>6)&63)|128);
utftext += String.fromCharCode((c&63)|128);}
}
return utftext;
}
function getJsObj(json) {
var jsobj;
try {
eval('jsobj='+json);
return jsobj;
} catch (someError) {
log('Something went wrong with getJsobj, json='+json);
return 1;
}
}
function anyChild(obj) {
for (var p in obj) {
return obj[p];
}
return null;
}
//</NOLITE>
function decode_utf8(utftext) {
var plaintext = ""; var i=0, c=0, c1=0, c2=0;
// while-Schleife, weil einige Zeichen uebersprungen werden
while(i<utftext.length)
{
c = utftext.charCodeAt(i);
if (c<128) {
plaintext += String.fromCharCode(c);
i++;}
else if((c>191) && (c<224)) {
c2 = utftext.charCodeAt(i+1);
plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
i+=2;}
else {
c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
i+=3;}
}
return plaintext;
}
function upcaseFirst(str) {
if (typeof str != typeof '' || str=='') return '';
return str.charAt(0).toUpperCase() + str.substring(1);
}
function findInArray(arr, foo) {
if (!arr || !arr.length) { return -1; }
var len=arr.length;
for (var i=0; i<len; ++i) { if (arr[i]==foo) { return i; } }
return -1;
}
function nextOne (array, value) {
// NB if the array has two consecutive entries equal
// then this will loop on successive calls
var i=findInArray(array, value);
if (i<0) { return null; }
return array[i+1];
}
function literalizeRegex(str){
return str.replace(RegExp('([-.|()\\+?*^${}\\[\\]])', 'g'), '\\$1');
}
String.prototype.entify=function() {
//var shy='­';
return this.split('&').join('&').split('<').join('<').split('>').join('>'/*+shy*/).split('"').join('"');
};
function findThis(array, value) {
if (typeof array.length == 'undefined') { return null; }
for (var i=0; i<array.length; ++i) {
if (array[i]==value) { return i; }
}
return null;
}
function removeNulls(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i]) {
ret.push(list[i]);
}
}
return ret;
}
function joinPath(list) {
return removeNulls(list).join('/');
}
function simplePrintf(str, subs) {
if (!str || !subs) { return str; }
var ret=[];
var s=str.parenSplit(/(%s|\$[0-9]+)/);
var i=0;
do {
ret.push(s.shift());
if ( !s.length ) { break; }
var cmd=s.shift();
if (cmd == '%s') {
if ( i < subs.length ) { ret.push(subs[i]); } else { ret.push(cmd); }
++i;
} else {
var j=parseInt( cmd.replace('$', ''), 10 ) - 1;
if ( j > -1 && j < subs.length ) { ret.push(subs[j]); } else { ret.push(cmd); }
}
} while (s.length > 0);
return ret.join('');
}
function max(a,b){return a<b ? b : a;}
function min(a,b){return a>b ? b : a;}
function isString(x) { return (typeof x === 'string' || x instanceof String); }
//function isNumber(x) { return (typeof x === 'number' || x instanceof Number); }
function isRegExp(x) { return x instanceof RegExp; }
function isArray (x) { return x instanceof Array; }
function isObject(x) { return x instanceof Object; }
function isFunction(x) {
return !isRegExp(x) && (typeof x === 'function' || x instanceof Function);
}
function repeatString(s,mult) {
var ret='';
for (var i=0; i<mult; ++i) { ret += s; }
return ret;
}
function zeroFill(s, min) {
min = min || 2;
var t=s.toString();
return repeatString('0', min - t.length) + t;
}
function map(f, o) {
if (isArray(o)) { return map_array(f,o); }
return map_object(f,o);
}
function map_array(f,o) {
var ret=[];
for (var i=0; i<o.length; ++i) {
ret.push(f(o[i]));
}
return ret;
}
function map_object(f,o) {
var ret={};
for (var i in o) { ret[o]=f(o[i]); }
return ret;
}
// ENDFILE: tools.js
// STARTFILE: dab.js
//<NOLITE>
//////////////////////////////////////////////////
// Dab-fixing code
//
function retargetDab(newTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) {
log('retargetDab: newTarget='+newTarget + ' oldTarget=' + oldTarget);
return changeLinkTargetLink(
{newTarget: newTarget,
text: newTarget.split(' ').join(' '),
hint: tprintf('disambigHint', [newTarget]),
summary: simplePrintf(
getValueOf('popupFixDabsSummary'), [friendlyCurrentArticleName, newTarget ]),
clickButton: 'wpDiff', minor: true, oldTarget: oldTarget,
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit});
}
function listLinks(wikitext, oldTarget, titleToEdit) {
// mediawiki strips trailing spaces, so we do the same
// testcase: http://en.wikipedia.org/w/index.php?title=Radial&oldid=97365633
var reg=RegExp('\\[\\[([^|]*?) *(\\||\\]\\])', 'gi');
var ret=[];
var splitted=wikitext.parenSplit(reg);
// ^[a-z]+ should match interwiki links, hopefully (case-insensitive)
// and ^[a-z]* should match those and [[:Category...]] style links too
var omitRegex=RegExp('^[a-z]*:|^[Ss]pecial:|^[Ii]mage|^[Cc]ategory');
var friendlyCurrentArticleName= oldTarget.toString();
for (var i=1; i<splitted.length; i=i+3) {
if (typeof splitted[i] == typeof 'string' && splitted[i].length>0 && !omitRegex.test(splitted[i])) {
ret.push( retargetDab(splitted[i], oldTarget, friendlyCurrentArticleName, titleToEdit) );
} /* if */
} /* for loop */
ret = rmDupesFromSortedList(ret.sort());
var wikTarget='wiktionary:' + friendlyCurrentArticleName.replace( RegExp('^(.+)\\s+[(][^)]+[)]\\s*$'), '$1' );
ret.push( retargetDab(wikTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) );
ret.push(changeLinkTargetLink(
{ newTarget: null,
text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this disambig page from this article"),
clickButton: "wpDiff", oldTarget: oldTarget,
summary: simplePrintf(getValueOf('popupRmDabLinkSummary'), [friendlyCurrentArticleName]),
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit
}));
return ret;
}
function rmDupesFromSortedList(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (ret.length===0 || list[i]!=ret[ret.length-1]) { ret.push(list[i]); }
}
return ret;
}
function makeFixDab(data, navpop) {
// grab title from parent popup if there is one; default exists in changeLinkTargetLink
var titleToEdit=(navpop.parentPopup && navpop.parentPopup.article.toString());
var list=listLinks(data, navpop.originalArticle, titleToEdit);
if (list.length===0) { log('listLinks returned empty list'); return null; }
var html='<hr>' + popupString('Click to disambiguate this link to:') + '<br>';
html+=list.join(', ');
return html;
}
function makeFixDabs(wikiText, navpop) {
if (getValueOf('popupFixDabs') && isDisambig(wikiText, navpop.article) &&
Title.fromURL(location.href).namespace() != pg.ns.special &&
navpop.article.talkPage() ) {
setPopupHTML(makeFixDab(wikiText, navpop), 'popupFixDab', navpop.idNumber);
}
}
function popupRedlinkHTML(article) {
return changeLinkTargetLink(
{ newTarget: null, text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this page from this article"),
clickButton: "wpDiff",
oldTarget: article.toString(),
summary: simplePrintf(getValueOf('popupRedlinkSummary'), [article.toString()])});
}
//</NOLITE>
// ENDFILE: dab.js
// STARTFILE: htmloutput.js
function appendPopupContent(obj, elementId, popupId, onSuccess) {
return setPopupHTML(obj, elementId, popupId, onSuccess, true);
}
// this has to use a timer loop as we don't know if the DOM element exists when we want to set the text
function setPopupHTML (str, elementId, popupId, onSuccess, append) {
if (elementId=='popupPreview') {
}
if (typeof popupId === 'undefined') {
//console.error('popupId is not defined in setPopupHTML, html='+str.substring(0,100));
popupId = pg.idNumber;
}
var popupElement=document.getElementById(elementId+popupId);
if (popupElement) {
if (!append) { popupElement.innerHTML=''; }
if (isString(str)) {
popupElement.innerHTML+=str;
} else {
popupElement.appendChild(str);
}
if (onSuccess) { onSuccess(); }
setTimeout(checkPopupPosition, 100);
return true;
} else {
// call this function again in a little while...
setTimeout(function(){
setPopupHTML(str,elementId,popupId,onSuccess);
}, 600);
}
return null;
}
//<NOLITE>
function setImageStatus(str, id) {return; } // setPopupHTML(str, 'popupImageStatus', id);}
function setPopupTrailer(str,id) {return setPopupHTML(str, 'popupData', id);}
//</NOLITE>
function fillEmptySpans(args) { return fillEmptySpans2(args); }
// args.navpopup is mandatory
// optional: args.redir, args.redirTarget
// FIXME: ye gods, this is ugly stuff
function fillEmptySpans2(args) { // if redir is present and true then redirTarget is mandatory
var redir=true;
if (typeof args != 'object' || typeof args.redir == 'undefined' || !args.redir) { redir=false; }
var a=args.navpopup.parentAnchor;
var article, hint=null, oldid=null, params={};
if (redir && typeof args.redirTarget == typeof {}) {
article=args.redirTarget;
//hint=article.hintValue();
} else {
article=(new Title()).fromAnchor(a);
hint=a.originalTitle || article.hintValue();
params=parseParams(a.href);
oldid=(getValueOf('popupHistoricalLinks')) ? params.oldid : null;
rcid=params.rcid;
}
var x={ article:article, hint: hint, oldid: oldid, rcid: rcid, navpop:args.navpopup, params:params };
var structure=pg.structures[getValueOf('popupStructure')];
if (typeof structure != 'object') {
setPopupHTML('popupError', 'Unknown structure (this should never happen): '+
pg.option.popupStructure, args.navpopup.idNumber);
return;
}
var spans=flatten(pg.misc.layout);
var numspans = spans.length;
var redirs=pg.misc.redirSpans;
for (var i=0; i<numspans; ++i) {
var f=findThis(redirs, spans[i]);
//log('redir='+redir+', f='+f+', spans[i]='+spans[i]);
if ( (f!==null && !redir) || (f===null && redir) ) {
//log('skipping this set of the loop');
continue;
}
var structurefn=structure[spans[i]];
var setfn = setPopupHTML;
if (getValueOf('popupActiveNavlinks') && spans[i].indexOf('popupTopLinks')==0) {
setfn = setPopupTipsAndHTML;
}
switch (typeof structurefn) {
case 'function':
//log('running '+spans[i]+'({article:'+x.article+', hint:'+x.hint+', oldid: '+x.oldid+'})');
setfn(structurefn(x), spans[i], args.navpopup.idNumber);
break;
case 'string':
setfn(structurefn, spans[i], args.navpopup.idNumber);
break;
default:
errlog('unknown thing with label '+spans[i]);
break;
}
}
}
// flatten an array
function flatten(list, start) {
var ret=[];
if (typeof start == 'undefined') { start=0; }
for (var i=start; i<list.length; ++i) {
if (typeof list[i] == typeof []) {
return ret.concat(flatten(list[i])).concat(flatten(list, i+1));
}
else { ret.push(list[i]); }
}
return ret;
}
// Generate html for whole popup
function popupHTML (a) {
getValueOf('popupStructure');
var structure=pg.structures[pg.option.popupStructure];
if (typeof structure != 'object') {
//return 'Unknown structure: '+pg.option.popupStructure;
// override user choice
pg.option.popupStructure=pg.optionDefault.popupStructure;
return popupHTML(a);
}
if (typeof structure.popupLayout != 'function') { return 'Bad layout'; }
pg.misc.layout=structure.popupLayout();
if (typeof structure.popupRedirSpans == 'function') { pg.misc.redirSpans=structure.popupRedirSpans(); }
else { pg.misc.redirSpans=[]; }
return makeEmptySpans(pg.misc.layout, a.navpopup);
}
function makeEmptySpans (list, navpop) {
var ret='';
for (var i=0; i<list.length; ++i) {
if (typeof list[i] == typeof '') {
ret += emptySpanHTML(list[i], navpop.idNumber, 'div');
} else if (typeof list[i] == typeof [] && list[i].length > 0 ) {
ret = ret.parenSplit(RegExp('(</[^>]*?>$)')).join(makeEmptySpans(list[i], navpop));
} else if (typeof list[i] == typeof {} && list[i].nodeType ) {
ret += emptySpanHTML(list[i].name, navpop.idNumber, list[i].nodeType);
}
}
return ret;
}
function emptySpanHTML(name, id, tag, classname) {
tag = tag || 'span';
if (!classname) { classname = emptySpanHTML.classAliases[name]; }
classname = classname || name;
if (name == getValueOf('popupDragHandle')) { classname += ' popupDragHandle'; }
return simplePrintf('<%s id="%s" class="%s"></%s>', [tag, name + id, classname, tag]);
}
emptySpanHTML.classAliases={ 'popupSecondPreview': 'popupPreview' };
// generate html for popup image
// <a id="popupImageLinkn"><img id="popupImagen">
// where n=idNumber
function imageHTML(article, idNumber) {
return simplePrintf('<a id="popupImageLink$1">' +
'<img align="right" valign="top" id="popupImg$1" style="display: none;"></img>' +
'</a>', [ idNumber ]);
}
function popTipsSoonFn(id, when, popData) {
when || ( when=250 );
var popTips=function(){ setupTooltips(document.getElementById(id), false, true, popData); };
return function() { setTimeout( popTips, when, popData ); };
}
function setPopupTipsAndHTML(html, divname, idnumber, popData) {
setPopupHTML(html, divname, idnumber,
getValueOf('popupSubpopups') ?
popTipsSoonFn(divname + idnumber, null, popData) :
null);
}
// ENDFILE: htmloutput.js
// STARTFILE: mouseout.js
//////////////////////////////////////////////////
// fuzzy checks
function fuzzyCursorOffMenus(x,y, fuzz, parent) {
if (!parent) { return null; }
var uls=parent.getElementsByTagName('ul');
for (var i=0; i<uls.length; ++i) {
if (uls[i].className=='popup_menu') {
if (uls[i].offsetWidth > 0) return false;
} // else {document.title+='.';}
}
return true;
}
function checkPopupPosition () { // stop the popup running off the right of the screen
// FIXME avoid pg.current.link
pg.current.link && pg.current.link.navpopup &&
pg.current.link.navpopup.limitHorizontalPosition();
}
function mouseOutWikiLink () {
if (!window.popupsReady || !window.popupsReady()) { return; }
//console ('mouseOutWikiLink');
var a=this;
if (a.navpopup==null) return;
if ( ! a.navpopup.isVisible() ) {
a.navpopup.banish();
return;
}
Navpopup.tracker.addHook(posCheckerHook(a.navpopup));
}
function posCheckerHook(navpop) {
return function() {
if (!navpop.isVisible()) { return true; /* remove this hook */ }
if (Navpopup.tracker.dirty) {
return false;
}
var x=Navpopup.tracker.x, y=Navpopup.tracker.y;
var mouseOverNavpop = navpop.isWithin(x,y,navpop.fuzz, navpop.mainDiv) ||
!fuzzyCursorOffMenus(x,y,navpop.fuzz, navpop.mainDiv);
// FIXME it'd be prettier to do this internal to the Navpopup objects
var t=getValueOf('popupHideDelay');
if (t) { t = t * 1000; }
if (!t) {
if(!mouseOverNavpop) {
navpop.banish();
return true; /* remove this hook */
}
return false;
}
// we have a hide delay set
var d=+(new Date());
if ( !navpop.mouseLeavingTime ) {
navpop.mouseLeavingTime = d;
return false;
}
if ( mouseOverNavpop ) {
navpop.mouseLeavingTime=null;
return false;
}
if (d - navpop.mouseLeavingTime > t) {
navpop.mouseLeavingTime=null;
navpop.banish(); return true; /* remove this hook */
}
return false;
};
}
function runStopPopupTimer(navpop) {
// at this point, we should have left the link but remain within the popup
// so we call this function again until we leave the popup.
if (!navpop.stopPopupTimer) {
navpop.stopPopupTimer=setInterval(posCheckerHook(navpop), 500);
navpop.addHook(function(){clearInterval(navpop.stopPopupTimer);},
'hide', 'before');
}
}
// ENDFILE: mouseout.js
// STARTFILE: previewmaker.js
/**
@fileoverview
Defines the {@link Previewmaker} object, which generates short previews from wiki markup.
*/
/**
Creates a new Previewmaker
@constructor
@class The Previewmaker class. Use an instance of this to generate short previews from Wikitext.
@param {String} wikiText The Wikitext source of the page we wish to preview.
@param {String} baseUrl The url we should prepend when creating relative urls.
@param {Navpopup} owner The navpop associated to this preview generator
*/
function Previewmaker(wikiText, baseUrl, owner) {
/** The wikitext which is manipulated to generate the preview. */
this.originalData=wikiText;
this.setData();
this.baseUrl=baseUrl;
this.owner=owner;
this.maxCharacters=getValueOf('popupMaxPreviewCharacters');
this.maxSentences=getValueOf('popupMaxPreviewSentences');
}
Previewmaker.prototype.setData=function() {
var maxSize=max(10000, 2*this.maxCharacters);
this.data=this.originalData.substring(0,maxSize);
};
/** Remove HTML comments
@private
*/
Previewmaker.prototype.killComments = function () {
// this also kills trailing spaces and one trailing newline, eg [[diamyo]]
this.data=this.data.replace(RegExp('<!--[\\s\\S]*?--> *\\n?', 'g'), '');
};
/**
@private
*/
Previewmaker.prototype.killDivs = function () {
// say goodbye, divs (can be nested, so use * not *?)
this.data=this.data.replace(RegExp('< *div[^>]* *>[\\s\\S]*?< */ *div *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killGalleries = function () {
this.data=this.data.replace(RegExp('< *gallery[^>]* *>[\\s\\S]*?< */ *gallery *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.kill = function(opening, closing, subopening, subclosing, repl) {
var oldk=this.data;
var k=this.killStuff(this.data, opening, closing, subopening, subclosing, repl);
while (k.length < oldk.length) {
oldk=k;
k=this.killStuff(k, opening, closing, subopening, subclosing, repl);
}
this.data=k;
};
/**
@private
*/
Previewmaker.prototype.killStuff = function (txt, opening, closing, subopening, subclosing, repl) {
var op=this.makeRegexp(opening);
var cl=this.makeRegexp(closing, '^');
var sb=subopening ? this.makeRegexp(subopening, '^') : null;
var sc=subclosing ? this.makeRegexp(subclosing, '^') : cl;
if (!op || !cl) {
alert('Navigation Popups error: op or cl is null! something is wrong.');
return;
}
if (!op.test(txt)) { return txt; }
var ret='';
var opResult = op.exec(txt);
ret = txt.substring(0,opResult.index);
txt=txt.substring(opResult.index+opResult[0].length);
var depth = 1;
while (txt.length > 0) {
var removal=0;
if (depth==1 && cl.test(txt)) {
depth--;
removal=cl.exec(txt)[0].length;
} else if (depth > 1 && sc.test(txt)) {
depth--;
removal=sc.exec(txt)[0].length;
}else if (sb && sb.test(txt)) {
depth++;
removal=sb.exec(txt)[0].length;
}
if ( !removal ) { removal = 1; }
txt=txt.substring(removal);
if (depth==0) { break; }
}
return ret + (repl || '') + txt;
};
/**
@private
*/
Previewmaker.prototype.makeRegexp = function (x, prefix, suffix) {
prefix = prefix || '';
suffix = suffix || '';
var reStr='';
var flags='';
if (isString(x)) {
reStr=prefix + literalizeRegex(x) + suffix;
} else if (isRegExp(x)) {
var s=x.toString().substring(1);
var sp=s.split('/');
flags=sp[sp.length-1];
sp[sp.length-1]='';
s=sp.join('/');
s=s.substring(0,s.length-1);
reStr= prefix + s + suffix;
} else {
log ('makeRegexp failed');
}
log ('makeRegexp: got reStr=' + reStr + ', flags=' + flags);
return RegExp(reStr, flags);
};
/**
@private
*/
Previewmaker.prototype.killBoxTemplates = function () {
// taxobox removal... in fact, there's a saudiprincebox_begin, so let's be more general
// also, have float_begin, ... float_end
this.kill(RegExp('[{][{][^{}\\s|]*?(float|box)[_ ](begin|start)', 'i'), /[}][}]\s*/, '{{');
// infoboxes etc
// from [[User:Zyxw/popups.js]]: kill frames too
this.kill(RegExp('[{][{][^{}\\s|]*?(infobox|elementbox|frame)[_ ]', 'i'), /[}][}]\s*/, '{{');
};
/**
@private
*/
Previewmaker.prototype.killTemplates = function () {
this.kill('{{', '}}', '{', '}', ' ');
};
/**
@private
*/
Previewmaker.prototype.killTables = function () {
// tables are bad, too
// this can be slow, but it's an inprovement over a browser hang
// torture test: [[Comparison_of_Intel_Central_Processing_Units]]
this.kill('{|', /[|]}\s*/, '{|');
this.kill(/<table.*?>/i, /<\/table.*?>/i, /<table.*?>/i);
// remove lines starting with a pipe for the hell of it (?)
this.data=this.data.replace(RegExp('^[|].*$', 'mg'), '');
};
/**
@private
*/
Previewmaker.prototype.killImages = function () {
// images and categories are a nono
this.kill(RegExp('[[][[]\\s*(' + pg.ns.image + '|' + pg.ns.category + ')\\s*:', 'i'),
/\]\]\s*/, '[', ']');
};
/**
@private
*/
Previewmaker.prototype.killHTML = function () {
// kill <ref ...>...</ref>
this.kill(/<ref\b.*?>/i, /<\/ref>/i);
// let's also delete entire lines starting with <. it's worth a try.
this.data=this.data.replace(RegExp('(^|\\n) *<.*', 'g'), '\n');
// and those pesky html tags, but not <nowiki> or <blockquote>
var splitted=this.data.parenSplit(/(<.*?>)/);
var len=splitted.length;
for (var i=1; i<len; i=i+2) {
switch (splitted[i]) {
case '<nowiki>':
case '</nowiki>':
break;
default:
if (! /^< *\/? *blockquote\b/i.test(splitted[i])) {
splitted[i]='';
}
}
}
this.data=splitted.join('');
};
/**
@private
*/
Previewmaker.prototype.killChunks = function() { // heuristics alert
// chunks of italic text? you crazy, man?
var italicChunkRegex=new RegExp
("((^|\\n)\\s*:*\\s*''[^']([^']|'''|'[^']){20}(.|\\n[^\\n])*''[.!?\\s]*\\n)+", 'g');
// keep stuff separated, though, so stick in \n (fixes [[Union Jack]]?
this.data=this.data.replace(italicChunkRegex, '\n');
};
/**
@private
*/
Previewmaker.prototype.mopup = function () {
// we simply *can't* be doing with horizontal rules right now
this.data=this.data.replace(RegExp('^-{4,}','mg'),'');
// no indented lines
this.data=this.data.replace(RegExp('(^|\\n) *:[^\\n]*','g'), '');
// replace __TOC__, __NOTOC__ and whatever else there is
// this'll probably do
this.data=this.data.replace(RegExp('^__[A-Z_]*__ *$', 'gmi'),'');
};
/**
@private
*/
Previewmaker.prototype.firstBit = function () {
// dont't be givin' me no subsequent paragraphs, you hear me?
/// first we "normalize" section headings, removing whitespace after, adding before
var d=this.data;
if (getValueOf('popupPreviewCutHeadings')) {
this.data=this.data.replace(RegExp('\\s*(==+[^=]*==+)\\s*', 'g'), '\n\n$1 ');
/// then we want to get rid of paragraph breaks whose text ends badly
this.data=this.data.replace(RegExp('([:;]) *\\n{2,}', 'g'), '$1\n');
this.data=this.data.replace(RegExp('^[\\s\\n]*'), '');
stuff=(RegExp('^([^\\n]|\\n[^\\n\\s])*')).exec(this.data);
if (stuff) { d = stuff[0]; }
if (!getValueOf('popupPreviewFirstParOnly')) { d = this.data; }
/// now put \n\n after sections so that bullets and numbered lists work
d=d.replace(RegExp('(==+[^=]*==+)\\s*', 'g'), '$1\n\n');
}
// superfluous sentences are RIGHT OUT.
// note: exactly 1 set of parens here needed to make the slice work
d = d.parenSplit(RegExp('([!?.]+["'+"'"+']*\\s)','g'));
// leading space is bad, mmkay?
d[0]=d[0].replace(RegExp('^\\s*'), '');
var notSentenceEnds=RegExp('([^.][a-z][.] *[a-z]|etc|sic|Dr|Mr|Mrs|Ms|St|no|op|cit|\\[[^\\]]*|\\s[A-Zvclm])$', 'i');
d = this.fixSentenceEnds(d, notSentenceEnds);
this.fullLength=d.join('').length;
var maxChars=getValueOf('popupMaxPreviewCharacters') + this.extraCharacters;
var n=this.maxSentences;
var dd=this.firstSentences(d,n);
do {
dd=this.firstSentences(d,n); --n;
} while ( dd.length > this.maxCharacters && n != 0 );
this.data = dd;
};
/**
@private
*/
Previewmaker.prototype.fixSentenceEnds = function(strs, reg) {
// take an array of strings, strs
// join strs[i] to strs[i+1] & strs[i+2] if strs[i] matches regex reg
var abbrevRe=/\b[a-z][^a-z]*$/i;
for (var i=0; i<strs.length-2; ++i) {
if (reg.test(strs[i])) {
a=[];
for (var j=0; j<strs.length; ++j) {
if (j<i) a[j]=strs[j];
if (j==i) a[i]=strs[i]+strs[i+1]+strs[i+2];
if (j>i+2) a[j-2]=strs[j];
}
return this.fixSentenceEnds(a,reg);
}
// BUGGY STUFF - trying to fix up [[S. C. Johnson & Son]] preview
if (false && abbrevRe.test(strs[i])) {
var j=i, buf='';
do {
buf=buf+strs[i]+strs[i+1];
i=i+2;
} while (i<strs.length-2 && abbrevRe.test(strs[i]));
strs[i]=buf+strs[i];
var a=(j?strs.slice(0,j-1):[]).concat(strs.slice(i));
return this.fixSentenceEnds(a,reg);
}
}
return strs;
};
/**
@private
*/
Previewmaker.prototype.firstSentences = function(strs, howmany) {
var t=strs.slice(0, 2*howmany);
return t.join('');
};
/**
@private
*/
Previewmaker.prototype.killBadWhitespace = function() {
// also cleans up isolated '''', eg [[Suntory Sungoliath]]
this.data=this.data.replace(RegExp('^ *\'+ *$', 'gm'), '');
};
/**
Runs the various methods to generate the preview.
The preview is stored in the <code>html</html> field.
@private
*/
Previewmaker.prototype.makePreview = function() {
if (this.owner.article.namespace()!=pg.ns.template) {
this.killComments();
this.killDivs();
this.killGalleries();
this.killBoxTemplates();
if (getValueOf('popupPreviewKillTemplates')) {
this.killTemplates();
} else {
this.killMultilineTemplates();
}
this.killTables();
this.killImages();
this.killHTML();
this.killChunks();
this.mopup();
this.firstBit();
this.killBadWhitespace();
}
this.html=wiki2html(this.data, this.baseUrl); // needs livepreview
this.fixHTML();
this.stripLongTemplates();
};
Previewmaker.prototype.editSummaryPreview=function() {
var c=this.data;
var re=/^\/[*] +(.*?) +[*]\/(.*)/;
if (re.test(c)) {
var section=c.replace(re, '$1');
var t=new Title().fromURL(this.baseUrl);
t.anchorFromUtf(section);
// work around livepreview brokenness with anchors:
// pass .-escaped anchor instead of literal value
c=c.replace(re, '[[' + t.toString(true).split("'").join('%27') +
'#' + t.anchor.split("'").join('%27') + '|→]]' +
'<span class=autocomment>$1</span>$2');
}
this.html=wiki2html(c, this.baseUrl);
return this.html;
};
//<NOLITE>
/** Test function for debugging preview problems one step at a time.
*/
function previewSteps(txt) {
try {
txt=txt || document.editform.wpTextbox1.value;
} catch (err) {
if (pg.cache.pages.length > 0) {
txt=pg.cache.pages[pg.cache.pages.length-1].data;
} else {
alert('provide text or use an edit page');
}
}
txt=txt.substring(0,10000);
var base=pg.wiki.articlebase + Title.fromURL(document.location.href).urlString();
var p=new Previewmaker(txt, base, pg.current.link.navpopup);
if (this.owner.article.namespace() != pg.ns.template) {
p.killComments(); if (!confirm('done killComments(). Continue?\n---\n' + p.data)) { return; }
p.killDivs(); if (!confirm('done killDivs(). Continue?\n---\n' + p.data)) { return; }
p.killGalleries(); if (!confirm('done killGalleries(). Continue?\n---\n' + p.data)) { return; }
p.killBoxTemplates(); if (!confirm('done killBoxTemplates(). Continue?\n---\n' + p.data)) { return; }
if (getValueOf('popupPreviewKillTemplates')) {
p.killTemplates(); if (!confirm('done killTemplates(). Continue?\n---\n' + p.data)) { return; }
} else {
p.killMultilineTemplates(); if (!confirm('done killMultilineTemplates(). Continue?\n---\n' + p.data)) { return; }
}
p.killTables(); if (!confirm('done killTables(). Continue?\n---\n' + p.data)) { return; }
p.killImages(); if (!confirm('done killImages(). Continue?\n---\n' + p.data)) { return; }
p.killHTML(); if (!confirm('done killHTML(). Continue?\n---\n' + p.data)) { return; }
p.killChunks(); if (!confirm('done killChunks(). Continue?\n---\n' + p.data)) { return; }
p.mopup(); if (!confirm('done mopup(). Continue?\n---\n' + p.data)) { return; }
p.firstBit(); if (!confirm('done firstBit(). Continue?\n---\n' + p.data)) { return; }
p.killBadWhitespace(); if (!confirm('done killBadWhitespace(). Continue?\n---\n' + p.data)) { return; }
}
p.html=wiki2html(p.data, base); // needs livepreview
p.fixHTML(); if (!confirm('done fixHTML(). Continue?\n---\n' + p.html)) { return; }
p.stripLongTemplates(); if (!confirm('done stripLongTemplates(). Continue?\n---\n' + p.html)) { return; }
alert('finished preview - end result follows.\n---\n' + p.html);
}
//</NOLITE>
/**
Works around a quoting bug in livepreview.
<code>wiki2html('[[Foo\'s "bar"]]')</code> gives @literal{<a href='Foo's "bar"'>}
which doesn't do very well. We change this into @literal{<a href="Foo's %22bar%22">}
@private
*/
Previewmaker.prototype.fixHTML = function() {
if(!this.html) return;
// all links seem to have potential issues with quotation marks
var splitted=this.html.parenSplit(/href='([^>]*)'/g);
var ret='';
for (var i=0; i<splitted.length; ++i) {
if(i%2==0) { ret += splitted[i]; continue; }
if(i%2==1) { ret += 'href="' + splitted[i].split('"').join('%22') + '"'; }
}
// fix question marks in wiki links
// maybe this'll break some stuff :-(
ret=ret.replace(RegExp('\(<a href="/' + pg.wiki.articlePath + '/[^"]*\)[?]\(.*?"\)', 'g'), '$1%3F$2');
// FIXME fix up % too
this.html=ret;
};
/**
Generates the preview and displays it in the current popup.
Does nothing if the generated preview is invalid or consists of whitespace only.
Also activates wikilinks in the preview for subpopups if the popupSubpopups option is true.
*/
Previewmaker.prototype.showPreview = function () {
this.makePreview();
if (typeof this.html != typeof '') return;
if (RegExp('^\\s*$').test(this.html)) return;
setPopupHTML('<hr>', 'popupPrePreviewSep', this.owner.idNumber);
setPopupTipsAndHTML(this.html, 'popupPreview', this.owner.idNumber, { owner: this.owner });
var more = (this.fullLength > this.data.length) ? this.moreLink() : '';
setPopupHTML(more, 'popupPreviewMore', this.owner.idNumber);
};
/**
@private
*/
Previewmaker.prototype.moreLink=function() {
var a=document.createElement('a');
a.className='popupMoreLink';
a.innerHTML=popupString('more...');
var savedThis=this;
a.onclick=function() {
savedThis.maxCharacters+=2000;
savedThis.maxSentences+=20;
savedThis.setData();
savedThis.showPreview();
}
return a;
}
/**
@private
*/
Previewmaker.prototype.stripLongTemplates = function() {
// operates on the HTML!
this.html=this.html.replace(RegExp('^.{0,1000}[{][{][^}]*?(<(p|br)( /)?>\\s*){2,}([^{}]*?[}][}])?', 'gi'), '');
this.html=this.html.split('\n').join(' '); // workaround for <pre> templates
this.html=this.html.replace(RegExp('[{][{][^}]*<pre>[^}]*[}][}]','gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killMultilineTemplates = function() {
this.kill('{{{', '}}}');
this.kill(RegExp('\\s*[{][{][^{}]*\\n'), '}}', '{{');
};
// ENDFILE: previewmaker.js
// STARTFILE: querypreview.js
//<NOLITE>
function loadQueryPreview(queryType, article, navpop) {
var art=new Title(article).urlString();
var url=pg.wiki.wikibase + '/query.php?format=json&';
var htmlGenerator=function(a,d){alert('invalid html generator');};
switch (queryType) {
case 'history':
url += 'titles=' + art + '&what=revisions|userinfo&uioptions=timecorrection&rvcomments&rvlimit=' +
getValueOf('popupHistoryPreviewLimit');
htmlGenerator=historyPreviewHTML;
break;
case 'imagelinks':
// redundant case
url += 'titles=' + art + '&what=imagelinks&ilfilter=all';
htmlGenerator=imagelinksPreviewHTML;
break;
case 'category':
url += 'what=category&cptitle=' + art;
htmlGenerator=categoryPreviewHTML;
break;
case 'contribs':
url += 'what=usercontribs|userinfo&uioptions=timecorrection&titles=' + art + '&uccomments' +
'&uclimit=' + getValueOf('popupContribsPreviewLimit');
htmlGenerator=contribsPreviewHTML;
break;
case 'imagepagepreview':
var trail='&what=imageinfo|content|imagelinks&ilfilter=all';
if (!getValueOf('popupImageLinks')) { trail = '&what=imageinfo|content'; }
if (pg.wiki.commons) { trail += '&iishared'; }
url += 'titles=' + art + trail;
htmlGenerator=imagepagePreviewHTML;
break;
case 'sharedimagepage':
url += 'titles=' + art + '&what=content&proxylang=' + pg.wiki.commonslang;
htmlGenerator=sharedImagePagePreviewHTML;
break;
case 'backlinks':
url += 'what=backlinks&titles=' + art;
htmlGenerator=backlinksPreviewHTML;
break;
}
pendingNavpopTask(navpop);
var callback=function(d){
showQueryPreview(queryType, htmlGenerator(article,d,navpop), navpop.idNumber, navpop, d);
};
var go = function(){
getPageWithCaching(url, callback, navpop);
return true;
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_'+queryType+'_QUERY_DATA'); }
}
function showQueryPreview(queryType, html, id, navpop, download) {
var target='popupPreview';
switch (queryType) {
case 'imagelinks':
case 'category':
target='popupPostPreview'; break;
case 'sharedimagepage':
target='popupSecondPreview'; break;
}
setPopupTipsAndHTML(html, target, id);
completedNavpopTask(navpop);
}
function backlinksPreviewHTML(article, download, navpop) {
var jsObj=getJsObj(download.data);
try {
var page=anyChild(jsObj.pages);
var list=page.backlinks;
} catch (someError) { return 'backlinksPreviewHTML went wonky'; }
var html=[];
if (!list) { return popupString('No backlinks found'); }
for (var i=0; i<list.length; ++i) {
var t=new Title(list[i]['*']);
html.push('<a href="' + pg.wiki.titlebase + t.urlString() + '">' + t + '</a>');
}
html=html.join(', ');
if (jsObj.query && jsObj.query.backlinks && jsObj.query.backlinks.next) {
html += popupString(' and more');
}
return html;
}
function sharedImagePagePreviewHTML(article, download, navpop) {
var jsObj=getJsObj(download.data);
try {
var page=anyChild(jsObj.pages);
var content=(page && page.content) ? page.content['*'] : null;
} catch (someError) { return 'sharedimagepage preview failed :( is the query.php extension installed?'; }
var ret='';
if (content) {
var p=prepPreviewmaker(content, article, navpop);
p.makePreview();
if (p.html) { ret += '<hr>' + p.html; }
}
return ret;
}
function imagepagePreviewHTML(article, download, navpop) {
var jsObj=getJsObj(download.data);
try {
var page=anyChild(jsObj['pages']);
var content=(page && page.content) ? page.content['*'] : null;
var a=page.image;
var b=page.sharedimage;
} catch (someError) { return 'imagepage preview failed :( is the query.php extension installed?'; }
var ret='';
if (content) {
var p=prepPreviewmaker(content, article, navpop);
p.makePreview();
if (p.html) { ret += '<hr>' + p.html; }
}
var sharingInfo=getSharingInfo(a,b);
if (sharingInfo) { ret += '<hr>' + sharingInfo; }
if (content!==null && getValueOf('popupSummaryData')) {
var info=getPageInfo(content, download);
log(info);
setPopupTrailer(info, navpop.idNumber);
}
if (!a && b) {
loadQueryPreview('sharedimagepage', article, navpop);
}
showQueryPreview('imagelinks', imagelinksPreviewHTML(article,download), navpop.idNumber, download);
return ret;
}
function getSharingInfo(a,b) {
if (!pg.wiki.commons) { return ''; }
var sharingInfo='';
if (a && b) {
if (checkSameImage(a,b)) {
sharingInfo = popupString('commons dupe');
} else {
sharingInfo = popupString('commons conflict');
}
} else if (a && !b) {
// nothing interesting
if (getValueOf('popupShowNonCommonsImages')) {
sharingInfo = popupString('not commons');
}
} else if (!a && b) {
sharingInfo = popupString('commons only');
} else {
sharingInfo = popupString('No image found');
}
return sharingInfo;
}
function checkSameImage(a,b){
return (a['size']==b['size'] && a['width']==b['width'] && a['bits']==b['bits'] &&
a['media']==b['media'] && a['mime']==b['mime']);
}
function imagelinksPreviewHTML(article, download) {
var jsobj=getJsObj(download.data);
try {
var list=anyChild(jsobj['pages'])['imagelinks'];
if (!list) { return popupString('No image links found'); }
} catch(someError) { return 'Image links preview generation failed :( Is the query.php extension installed?'; }
var ret=[];
for (var i=0; i<list.length; ++i) { ret.push(list[i]['*']); }
if (ret.length === 0) { return popupString('No image links found'); }
return '<h2>' + popupString('File links') + '</h2>' + linkList(ret);
}
function categoryPreviewHTML(article, download) {
var jsobj=getJsObj(download.data);
try{ var list=jsobj['pages']; }
catch(someError) { return 'Category preview failed :( Is the query.php extension installed?'; }
var ret=[];
for (var p in list) { ret.push(list[p]['title']); }
if (ret.length === 0) { return popupString('Empty category'); }
return '<h2>' + tprintf('Category members (%s shown)', [ret.length]) + '</h2>' +linkList(ret);
}
function linkList(list) {
list.sort(function(x,y) { return (x==y ? 0 : (x<y ? -1 : 1)); });
var buf=[];
for (var i=0; i<list.length; ++i) {
buf.push(wikiLink({article: new Title(list[i]),
text: list[i].split(' ').join(' '),
action: 'view'}));
}
return buf.join(', ');
}
function contribsPreviewHTML(article, download, navpop) {
return historyPreviewHTML(article, download, navpop, true);
}
function historyPreviewHTML(article, download, navpop, reallyContribs) {
var jsobj=getJsObj(download.data);
try {
var tz=jsobj.meta.user.timecorrection;
var edits=anyChild(jsobj.pages)[reallyContribs ? 'contributions' : 'revisions'];
} catch (someError) {
return 'Preview failed :-( Is the query.php extension installed?';
}
var timeOffset = getTimeOffset(tz);
Cookie.create('popTz', timeOffset, 1);
var ret=editPreviewTable(article, edits, reallyContribs, timeOffset);
return ret;
}
function getTimeOffset(tz) {
return ( tz && tz.indexOf(':') > -1 ) ? ( parseInt(tz,10)*60 + parseInt(tz.split(':')[1],10) ) : 0;
}
function editPreviewTable(article, h, reallyContribs, timeOffset) {
var html=['<table>'];
var day=null;
var curart=article;
for (var i=0; i<h.length; ++i) {
if (reallyContribs) { var page=h[i]['*']; curart = new Title(page); }
var minor=typeof h[i]['minor']=='undefined' ? '' : '<b>m </b>';
var editDate=adjustDate(getDateFromTimestamp(h[i].timestamp), timeOffset);
var thisDay = dayFormat(editDate);
var thisTime = timeFormat(editDate);
if (thisDay==day) { thisDay=''; }
else { day=thisDay; }
if (thisDay) {
html.push( '<tr><td colspan=3><span class="popup_history_date">' +
thisDay+'</span></td></tr>' );
}
html.push('<tr class="popup_history_row_' + ( (i%2) ? 'odd' : 'even') + '">');
html.push('<td>(<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&diff=prev&oldid=' + h[i]['revid'] + '">' + popupString('last') + '</a>)</td>');
html.push('<td>' +
'<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&oldid=' + h[i]['revid'] + '">' + thisTime + '</a></td>');
var col3url='', col3txt='';
if (!reallyContribs) {
var user=h[i]['user'];
col3url=pg.wiki.titlebase + pg.ns.user + ':' + new Title(user).urlString();
col3txt=user;
} else {
col3url=pg.wiki.titlebase + curart.urlString();
col3txt=page; // FIXME do we have to escape this?
}
html.push('<td>' + (reallyContribs ? minor : '') +
'<a href="' + col3url + '">' + col3txt + '</a></td>');
var comment='';
var c=h[i].comment || h[i]['*'];
if (c) {
comment=new Previewmaker(c, new Title(curart).toUrl()).editSummaryPreview();
}
html.push('<td>' + (!reallyContribs ? minor : '') + comment + '</td>');
html.push('</tr>');
html=[html.join('')];
}
html.push('</table>');
return html.join('');
}
function getDateFromTimestamp(t) {
var s=t.split(/[^0-9]/);
switch(s.length) {
case 0: return null;
case 1: return new Date(s[0]);
case 2: return new Date(s[0], s[1]-1);
case 3: return new Date(s[0], s[1]-1, s[2]);
case 4: return new Date(s[0], s[1]-1, s[2], s[3]);
case 5: return new Date(s[0], s[1]-1, s[2], s[3], s[4]);
case 6: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]);
default: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5], s[6]);
}
}
function adjustDate(d, offset) {
// offset is in minutes
var o=offset * 60 * 1000;
return new Date( +d + o);
}
function dayFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCFullYear(), editDate.getUTCMonth()+1, editDate.getUTCDate()]).join('-'); }
return map(zeroFill, [editDate.getFullYear(), editDate.getMonth()+1, editDate.getDate()]).join('-');
}
function timeFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCHours(), editDate.getUTCMinutes(), editDate.getUTCSeconds()]).join(':'); }
return map(zeroFill, [editDate.getHours(), editDate.getMinutes(), editDate.getSeconds()]).join(':');
}
//</NOLITE>
// ENDFILE: querypreview.js
// STARTFILE: debug.js
////////////////////////////////////////////////////////////////////
// Debugging functions
////////////////////////////////////////////////////////////////////
function log(){}; // dummy to stop errors
function setupDebugging() {
//<NOLITE>
// debugging - change DEBUG to NONE to switch off
if (window.popupDebug) { // popupDebug is set from .version
window.log=function(x) { //if(gMsg!='')gMsg += '\n'; gMsg+=time() + ' ' + x; };
if (pg.debugLevel != log.None) { window.logger.debug(x); }
}
window.errlog=function(x) {
if (pg.debugLevel != log.None) { window.logger.error(x); }
}
pg.debugLevel=Log.DEBUG;
window.logger = new Log(pg.debugLevel, Log.popupLogger);
log('Initializing logger');
} else {
//</NOLITE>
window.log = function(x) {};
window.errlog = function(x) {};
//<NOLITE>
}
//</NOLITE>
}
// ENDFILE: debug.js
// STARTFILE: images.js
//<NOLITE>
// FIXME rewrite ALL of this
// How the URLs for images in the popup come about
// loadPreview
// |
// getWiki
// |<----------------see other schematic for details
// insertPreview (insertPreview = onComplete)
// |
// | insertPreview gets a wikiText fragment from
// | the wikiText downloaded by getWiki
// |
// [wikiMarkupToAddressFragment]
// |
// | mouseOverWikiLink (gets an "address fragment",
// | | no processing needed)
// \->-*loadThisImage---<----loadImages
// |
// [image(Thumb)URL]-->--hopefully valid image urls
// FIXME get rid of pg.idNumber
function sequentialLoadThisImage (image) {
if (!getValueOf('popupImages')) { return false; }
if (!isValidImageName(image)) { return false; }
var imageUrls=getImageUrls(image);
if (!imageUrls) { return null; }
var img=new Image();
img.isNew=true;
img.pg.idNumber=pg.idNumber;
img.counter=1;
img.onload = function () {
// clear status thingy
setImageStatus('');
var i=findThis(imageUrls, this.src);
var goodSrc=this.src;
var setPopupImage=function () {
var popupImage=document.getElementById("popupImage"+this.pg.idNumber);
if (popupImage && typeof popupImage.src != 'undefined') {
clearInterval(pg.timer.image);
popupImage.src=goodSrc;
popupImage.width=getValueOf('popupImageSize');
popupImage.style.display='inline';
setPopupImageLink(image, pg.wiki.imageSources[i].wiki);
return true;
} else { return false; }
};
pg.timer.image=setInterval(setPopupImage, 250);
pg.cache.images.push(goodSrc);
};
img.onerror = function () {
pg.cache.badImageUrls.push(this.src);
};
img.setNext = function () {
var currentSrc=null;
var newSrc;
if (!this.isNew) { currentSrc=this.src; }
this.isNew=false;
newSrc= (currentSrc) ? nextOne(imageUrls, currentSrc) : imageUrls[0];
while (findThis(pg.cache.badImageUrls, newSrc)) {
newSrc=nextOne(imageUrls, newSrc);
if (!newSrc) {
setImageStatus (' :-(');
return;
}
}
setImageStatus(' '+findThis(imageUrls, newSrc));
this.src=newSrc;
};
// start the ball rolling
img.setNext();
}
function loadThisImageAtThisUrl(image, url) {
log('loading "best" image:\n'+url);
pg.misc.gImage=new Title(image.toString());
pg.misc.imageArray = [];
pg.misc.imageArray[0] = new Image();
pg.misc.imageArray[0].src=url;
if (pg.timer.image || pg.timer.image===0) {
clearInterval(pg.timer.image);
pg.counter.checkImages=0;
}
pg.timer.image=setInterval(checkImages, 250);
return;
}
// methinks this is unbelievably silly
// it dovetails with the parallel image loader function
function checkImages() {
//log('checkImages: pg.counter.loop='+pg.counter.loop+'; pg.counter.checkImages='+pg.counter.checkImages);
if (pg.timer.checkImages || pg.timer.checkImages===0) {
clearInterval(pg.timer.checkImages);
pg.timer.checkImages=null;
if (pg.counter.loop > 10) {pg.counter.loop=0; log('too many iterations of checkImages'); return;}
pg.counter.loop++;
} else pg.counter.checkImages++;
var status = ( pg.counter.checkImages % 2 ) ? ':' : '.' ;
setImageStatus(status);
if (pg.counter.checkImages > 100) {
pg.counter.checkImages = 0;
log ('pg.counter.checkImages too big in checkImages; returning');
clearInterval(pg.timer.image);
}
var popupImage=null;
popupImage=document.getElementById("popupImg"+pg.idNumber);
if (popupImage == null) {
// this doesn't seem to happen any more in practise for some reason
// still, I'll leave it in
log('checkImages: document.getElementById("popupImg'+pg.idNumber+'") is null! retrying in 333ms...');
pg.timer.checkImages=setInterval("checkImages()",333);
return;
}
log('checkImages: found element popupImg'+pg.idNumber+', and src='+popupImage.src);
// get the first image to successfully load
// and put it in the popupImage
for(var i = 0; i < pg.misc.imageArray.length; ++i) {
if(isImageOk(pg.misc.imageArray[i])) {
// stop all the gubbins, assign the image and return
log('checkImages: got at pos '+i+', src='+pg.misc.imageArray[i].src);
clearInterval(pg.timer.image);
if(pg.misc.gImage && pg.misc.gImage.namespace() == pg.ns.image) {
popupImage.src=pg.misc.imageArray[i].src;
popupImage.width=getValueOf('popupImageSize');
popupImage.style.display='inline';
// should we check to see if it's already there? maybe...
pg.cache.images.push(pg.misc.imageArray[i].src);
setPopupImageLink(pg.misc.gImage, pg.wiki.imageSources[i].wiki);
stopImagesDownloading();
}
setImageStatus('');
// reset evil nonconstant globals
delete pg.misc.imageArray; pg.misc.imageArray=[];
pg.timer.image=null;
pg.counter.checkImages=0;
pg.counter.loop=0;
return popupImage.src;
}
}
log('checkImages: no good image found. retrying in a tic...');
pg.timer.checkImages=setInterval("checkImages()",333);
}
function stopImagesDownloading() {
pg.misc.gImage=null;
if (pg.misc.imageArray == null) { return null; }
for (var i=0; i<pg.misc.imageArray.length; ++i) {
//pg.misc.imageArray[i].src=''; // this is a REALLY BAD IDEA
delete pg.misc.imageArray[i];
//pg.misc.imageArray[i] = new Image();
}
pg.misc.imageArray = [];
}
function toggleSize() {
var imgContainer=this;
if (!imgContainer) { alert('imgContainer is null :/'); return;}
img=imgContainer.firstChild;
if (!img) { alert('img is null :/'); return;}
if (!img.style.width || img.style.width=='') { img.style.width='100%'; }
else { img.style.width=''; }
}
function setPopupImageLink (img, wiki) {
if( wiki === null || img === null ) { return null; }
var a=document.getElementById("popupImageLink"+pg.idNumber);
if (a === null) { return null; }
switch (getValueOf('popupThumbAction')) {
case 'imagepage':
if (pg.current.article.namespace()!=pg.ns.image) {
a.href=pg.wiki.titlebase + img.urlString();
// FIXME: unreliable pg.idNumber
popTipsSoonFn('popupImage' + pg.idNumber)();
break;
} // else fall through
case 'sizetoggle':
a.onclick=toggleSize;
a.title=popupString('Toggle image size');
return;
case 'linkfull':
var linkURL = imageURL(img, wiki);
if (linkURL) {
a.href = linkURL;
a.title=popupString('Open full-size image');
}
return;
}
}
function isImageOk(img) {
// IE test
if (!img.complete) { return false; }
// gecko test
if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) { return false; }
// test for konqueror and opera
// note that img.width must not be defined in the html with a width="..."
// for this to work.
// konq seems to give "broken images" width 16, presumably an icon width
// this test would probably work in gecko too, *except for very small images*
if (typeof img.width == 'undefined' || img.width <= 16) { return false; }
// No other way of checking: assume it's ok.
return true;
}
// those odd a/a5/ bits of image urls
function imagePathComponent(article) { // article is string, no namespace
// FIXME needs testing with odd characters
var forhash=article.split(' ').join('_');
var hash=hex_md5(forhash);
return hash.substring(0,1) + '/' + hash.substring(0,2) + '/';
}
function getImageUrlStart(wiki) { // this returns a trailing slash
switch (wiki) {
case 'en.wikipedia.org': return 'http://upload.wikimedia.org/wikipedia/en/';
case pg.wiki.commons: return 'http://upload.wikimedia.org/wikipedia/commons/';
case 'en.wiktionary.org': return 'http://en.wiktionary.org/upload/en/';
case 'secure.wikimedia.org':
return joinPath(['http://upload.wikimedia.org', pg.wiki.prePath]) + '/'; break;
default: // unsupported - take a guess
if (pg.wiki.wikimedia) {
return 'http://upload.wikimedia.org/wikipedia/' + pg.wiki.lang +'/';
}
/* this should work for wikicities */
return 'http://' + wiki + '/images/';
}
}
function imageURL(img, wiki) {
if (getValueOf('popupImagesFromThisWikiOnly') && wiki != pg.wiki.hostname) return null;
var imgurl=null;
var pathcpt = imagePathComponent(img.stripNamespace());
imgurl=getImageUrlStart(wiki) + pathcpt + img.stripNamespace().split(' ').join('_');
return imgurl;
}
function imageThumbURL(img, wiki, width) {
//
// eg http://upload.wikimedia.org/wikipedia/en/thumb/6/61/
// Rubiks_cube_solved.jpg/120px-Rubiks_cube_solved.jpg
// ^^^^^^^^^^^^^^^^^^^^^^^
// wikicities omits this bit
// AND wikicities needs a new pathcpt for each filename including thumbs
if (getValueOf('popupImagesFromThisWikiOnly') && wiki != pg.wiki.hostname) return null;
if (getValueOf('popupNeverGetThumbs')) return null;
var imgurl=null;
var stripped=img.stripNamespace();
var pathcpt;
if (pg.wiki.wikimedia) pathcpt = imagePathComponent(stripped);
else pathcpt = imagePathComponent(width+'px-'+stripped);
imgurl=getImageUrlStart(wiki) + "thumb/" + pathcpt;
if (pg.wiki.wikimedia) imgurl += stripped + '/';
imgurl += width +"px-" + stripped;
return imgurl;
}
function loadImages(image) {
if (typeof image.stripNamespace != 'function') { alert('loadImages bad'); }
if (getValueOf('popupLoadImagesSequentially')) { return sequentialLoadThisImage(image); }
return parallelLoadThisImage(image);
}
function getImageUrls(image) {
if (typeof image.stripNamespace != 'function') { alert('getImageUrls bad'); }
var imageUrls=[];
for (var i=0; i<pg.wiki.imageSources.length; ++i) {
var url;
if (pg.wiki.imageSources[i].thumb) {
url=imageThumbURL(image, pg.wiki.imageSources[i].wiki, pg.wiki.imageSources[i].width);
} else { url=imageURL(image, pg.wiki.imageSources[i].wiki); }
for (var j=0; j<pg.cache.images.length; ++j) {
if (url == pg.cache.images[j]) {
loadThisImageAtThisUrl(image, url);
return null;
}
}
if (url!=null) imageUrls.push(url);
}
return imageUrls;
}
// this is probably very wasteful indeed of bandwidth
// hey ho
function parallelLoadThisImage (image) {
if (typeof image.stripNamespace != 'function') { alert('parallelLoadThisImage bad'); }
if (!getValueOf('popupImages')) return;
if (!isValidImageName(image)) return false;
var imageUrls=getImageUrls(image);
if (!imageUrls) return null;
for (var i=0; i<imageUrls.length; ++i) {
var url = imageUrls[i];
pg.misc.imageArray[i]=new Image();
pg.misc.imageArray[i].src=url;
}
if (pg.timer.image != null) {
clearInterval(pg.timer.image);
pg.counter.checkImages=0;
}
pg.misc.gImage=new Title(image.toString());
pg.timer.image=setInterval("checkImages()", 250);
return true;
}
function getValidImageFromWikiText(wikiText) {
var imagePage=null;
// nb in pg.re.image we're interested in the second bracketed expression
// this may change if the regex changes :-(
//var match=pg.re.image.exec(wikiText);
var matched=null;
var match;
// strip html comments, used by evil bots :-(
var t = removeMatchesUnless(wikiText, RegExp('(<!--[\\s\\S]*?-->)'), 1,
RegExp('^<!--[^[]*popup', 'i'));
while ( match = pg.re.image.exec(t) ) {
// now find a sane image name - exclude templates by seeking {
var m = match[2] || match[6];
var pxWidth=match[4];
if ( isValidImageName(m) &&
(!pxWidth || parseInt(pxWidth,10) >= getValueOf('popupMinImageWidth')) ) {
matched=m;
break;
}
}
pg.re.image.lastIndex=0;
if (!matched) { return null; }
return pg.ns.image+':'+upcaseFirst(matched);
}
function removeMatchesUnless(str, re1, parencount, re2) {
var split=str.parenSplit(re1);
var c=parencount + 1;
for (var i=0; i<split.length; ++i) {
if ( i%c === 0 || re2.test(split[i]) ) { continue; }
split[i]='';
}
return split.join('');
}
//</NOLITE>
// ENDFILE: images.js
// STARTFILE: namespaces.js
// Set up namespaces and other non-strings.js localization
// (currently that means redirs too)
// Put the right namespace list into pg.ns.list, based on pg.wiki.lang
// Default to english if nothing seems to fit
function setNamespaceList() {
var m="Media";
var list = [m, "Special", "Talk", "User", "User talk", "Wikipedia", "Wikipedia talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk", "Portal", "Portal talk"];
var nsIndex = { '': 0, 'Special': 1,
'Talk': 2, 'User': 3, 'User talk': 4, 'Wikipedia': 5,
'Wikipedia talk': 6, 'Image': 7, 'Image talk': 8, 'MediaWiki': 9,
'MediaWiki talk': 10, 'Template': 11, 'Template talk': 12,
'Help': 13, 'Help talk': 14, 'Category': 15, 'Category talk':16,
'Portal': 17, 'Portal talk': 18};
var nsLists = {
//<NOLITE>
"af": [m, "Spesiaal", "Bespreking", "Gebruiker", "Gebruikerbespreking", "Wikipedia", "Wikipediabespreking", "Beeld", "Beeldbespreking", "MediaWiki", "MediaWikibespreking", "Sjabloon", "Sjabloonbespreking", "Hulp", "Hulpbespreking", "Kategorie", "Kategoriebespreking"],
"als": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion"],
"ar": ["ملف", "خاص", "نقاش", "مستخدم", "نقاش المستخدم", "ويكيبيديا", "نقاش ويكيبيديا", "صورة", "نقاش الصورة", "ميدياويكي", "نقاش ميدياويكي", "Template", "نقاش Template", "مساعدة", "نقاش المساعدة", "تصنيف", "نقاش التصنيف"],
"ast": [m, "Especial", "Discusión", "Usuariu", "Usuariu discusión", "Uiquipedia", "Uiquipedia discusión", "Imaxen", "Imaxen discusión", "MediaWiki", "MediaWiki discusión", "Plantilla", "Plantilla discusión", "Ayuda", "Ayuda discusión", "Categoría", "Categoría discusión"],
"be": ["Мэдыя", "Спэцыяльныя", "Абмеркаваньне", "Удзельнік", "Гутаркі ўдзельніка", "Вікіпэдыя", "Абмеркаваньне Вікіпэдыя", "Выява", "Абмеркаваньне выявы", "MediaWiki", "Абмеркаваньне MediaWiki", "Шаблён", "Абмеркаваньне шаблёну", "Дапамога", "Абмеркаваньне дапамогі", "Катэгорыя", "Абмеркаваньне катэгорыі"],
"bg": ["Медия", "Специални", "Беседа", "Потребител", "Потребител беседа", "Уикипедия", "Уикипедия беседа", "Картинка", "Картинка беседа", "МедияУики", "МедияУики беседа", "Шаблон", "Шаблон беседа", "Помощ", "Помощ беседа", "Категория", "Категория беседа"],
"bm": [m, "Special", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipedia", "Discussion Wikipedia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie"],
"bn": ["বিশেষ", "আলাপ", "ব্যবহারকারী", "ব্যবহারকারী আলাপ", "উইকিপেডিয়া", "উইকিপেডিয়া আলাপ", "চিত্র", "চিত্র আলাপ", "MediaWik i আলাপ", m, "MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"br": [m, "Dibar", "Kaozeal", "Implijer", "Kaozeadenn Implijer", "Wikipedia", "Kaozeadenn Wikipedia", "Skeudenn", "Kaozeadenn Skeudenn", "MediaWiki", "Kaozeadenn MediaWiki", "Patrom", "Kaozeadenn Patrom", "Skoazell", "Kaozeadenn Skoazell", "Rummad", "Kaozeadenn Rummad"],
"ca": [m, "Especial", "Discussió", "Usuari", "Usuari Discussió", "Viquipèdia", "Viquipèdia Discussió", "Imatge", "Imatge Discussió", "MediaWiki", "MediaWiki Discussió", "Template", "Template Discussió", "Ajuda", "Ajuda Discussió", "Categoria", "Categoria Discussió"],
"cs": ["Média", "Speciální", "Diskuse", "Wikipedista", "Wikipedista diskuse", "Wikipedie", "Wikipedie diskuse", "Soubor", "Soubor diskuse", "MediaWiki", "MediaWiki diskuse", "Šablona", "Šablona diskuse", "Nápověda", "Nápověda diskuse", "Kategorie", "Kategorie diskuse"],
"csb": [m, "Specjalnô", "Diskùsëjô", "Brëkòwnik", "Diskùsëjô brëkòwnika", "Wiki", "Diskùsëjô Wiki", "Òbrôzk", "Diskùsëjô òbrôzków", "MediaWiki", "Diskùsëjô MediaWiki", "Szablóna", "Diskùsëjô Szablónë", "Pòmòc", "Diskùsëjô Pòmòcë", "Kategòrëjô", "Diskùsëjô Kategòrëji"],
"cv": ["Медиа", "Ятарлă", "Сӳтсе явасси", "Хутшăнакан", "Хутшăнаканăн канашлу страници", "Wikipedia", "0", "Ӳкерчĕк", "Ӳкерчĕке сӳтсе явмалли", "MediaWiki", "MediaWiki сӳтсе явмалли", "Шаблон", "Шаблона сӳтсе явмалли", "Пулăшу", "Пулăшăва сӳтсе явмалли", "Категори", "Категорине сӳтсе явмалли"],
"cy": [m, "Arbennig", "Sgwrs", "Defnyddiwr", "Sgwrs Defnyddiwr", "Wicipedia", "Sgwrs Wicipedia", "Delwedd", "Sgwrs Delwedd", "MediaWiki", "Sgwrs MediaWiki", "Nodyn", "Sgwrs Nodyn", "Help", "Help talk", "Category", "Category talk"],
"da": [m, "Speciel", "Diskussion", "Bruger", "Brugerdiskussion", "Wikipedia", "Wikipedia-diskussion", "Billede", "Billeddiskussion", "MediaWiki", "MediaWiki-diskussion", "Skabelon", "Skabelondiskussion", "Hjælp", "Hjælpdiskussion", "Kategori", "Kategoridiskussion", "Portal", "Portaldiskussion"],
"de": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion", "Portal", "Portal Diskussion"],
"el": ["Μέσον", "Ειδικό", "Συζήτηση", "Χρήστης", "Συζήτηση χρήστη", "Βικιπαίδεια", "Βικιπαίδεια συζήτηση", "Εικόνα", "Συζήτηση εικόνας", "MediaWiki", "MediaWiki talk", "Πρότυπο", "Συζήτηση προτύπου", "Βοήθεια", "Συζήτηση βοήθειας", "Κατηγορία", "Συζήτηση κατηγορίας"],
"eo": [m, "Speciala", "Diskuto", "Vikipediisto", "Vikipediista diskuto", "Vikipedio", "Vikipedio diskuto", "Dosiero", "Dosiera diskuto", "MediaWiki", "MediaWiki diskuto", "Ŝablono", "Ŝablona diskuto", "Helpo", "Helpa diskuto", "Kategorio", "Kategoria diskuto"],
"es": [m, "Especial", "Discusión", "Usuario", "Usuario Discusión", "Wikipedia", "Wikipedia Discusión", "Imagen", "Imagen Discusión", "MediaWiki", "MediaWiki Discusión", "Plantilla", "Plantilla Discusión", "Ayuda", "Ayuda Discusión", "Categoría", "Categoría Discusión"],
"et": ["Meedia", "Eri", "Arutelu", "Kasutaja", "Kasutaja arutelu", "Vikipeedia", "Vikipeedia arutelu", "Pilt", "Pildi arutelu", "MediaWiki", "MediaWiki arutelu", "Mall", "Malli arutelu", "Juhend", "Juhendi arutelu", "Kategooria", "Kategooria arutelu"],
"eu": [m, "Aparteko", "Eztabaida", "Lankide", "Lankide eztabaida", "Wikipedia", "Wikipedia eztabaida", "Irudi", "Irudi eztabaida", "MediaWiki", "MediaWiki eztabaida", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"fa": ["مدیا", "ویژه", "بحث", "کاربر", "بحث کاربر", "ویکیپدیا", "بحث ویکیپدیا", "تصویر", "بحث تصویر", "مدیاویکی", "بحث مدیاویکی", "الگو", "بحث الگو", "راهنما", "بحث راهنما", "رده", "بحث رده"],
"fi": [m, "Toiminnot", "Keskustelu", "Käyttäjä", "Keskustelu käyttäjästä", "Wikipedia", "Keskustelu Wikipediasta", "Kuva", "Keskustelu kuvasta", "MediaWiki", "MediaWiki talk", "Malline", "Keskustelu mallineesta", "Ohje", "Keskustelu ohjeesta", "Luokka", "Keskustelu luokasta"],
"fo": ["Miðil", "Serstakur", "Kjak", "Brúkari", "Brúkari kjak", "Wikipedia", "Wikipedia kjak", "Mynd", "Mynd kjak", "MidiaWiki", "MidiaWiki kjak", "Fyrimynd", "Fyrimynd kjak", "Hjálp", "Hjálp kjak", "Bólkur", "Bólkur kjak"],
"fr": [m, "Special", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipédia", "Discussion Wikipédia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie", "Portail", "Discussion Portail"],
"fur": [m, "Speciâl", "Discussion", "Utent", "Discussion utent", "Vichipedie", "Discussion Vichipedie", "Figure", "Discussion figure", "MediaWiki", "Discussion MediaWiki", "Model", "Discussion model", "Jutori", "Discussion jutori", "Categorie", "Discussion categorie"],
"fy": [m, "Wiki", "Oerlis", "Meidogger", "Meidogger oerlis", "Wikipedy", "Wikipedy oerlis", "Ofbyld", "Ofbyld oerlis", "MediaWiki", "MediaWiki oerlis", "Berjocht", "Berjocht oerlis", "Hulp", "Hulp oerlis", "Kategory", "Kategory oerlis"],
"ga": ["Meán", "Speisialta", "Plé", "Úsáideoir", "Plé úsáideora", "Vicipéid", "Plé Vicipéide", "Íomhá", "Plé íomhá", "MediaWiki", "Plé MediaWiki", "Teimpléad", "Plé teimpléid", "Cabhair", "Plé cabhrach", "Catagóir", "Plé catagóire"],
"gu": [m, "Special", "Talk", "User", "User talk", "વિકિપીડિયા", "વિકિપીડિયા talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"he": [m, "מיוחד", "שיחה", "משתמש", "שיחת משתמש", "ויקיפדיה", "שיחת ויקיפדיה", "תמונה", "שיחת תמונה", "MediaWiki", "שיחת MediaWiki", "תבנית", "שיחת תבנית", "עזרה", "שיחת עזרה", "קטגוריה", "שיחת קטגוריה"],
"hi": [m, "विशेष", "वार्ता", "सदस्य", "सदस्य वार्ता", "विकिपीडिया", "विकिपीडिया वार्ता", "चित्र", "चित्र वार्ता", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "श्रेणी", "श्रेणी वार्ता", "Help", "Help talk"],
"hr": ["Mediji", "Posebno", "Razgovor", "Suradnik", "Razgovor sa suradnikom", "Wikipedia", "Razgovor Wikipedia", "Slika", "Razgovor o slici", "MediaWiki", "MediaWiki razgovor", "Predložak", "Razgovor o predlošku", "Pomoć", "Razgovor o pomoći", "Kategorija", "Razgovor o kategoriji"],
"hu": ["Média", "Speciális", "Vita", "User", "User vita", "Wikipédia", "Wikipédia vita", "Kép", "Kép vita", "MediaWiki", "MediaWiki vita", "Sablon", "Sablon vita", "Segítség", "Segítség vita", "Kategória", "Kategória vita"],
"ia": [m, "Special", "Discussion", "Usator", "Discussion Usator", "Wikipedia", "Discussion Wikipedia", "Imagine", "Discussion Imagine", "MediaWiki", "Discussion MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"id": [m, "Istimewa", "Bicara", "Pengguna", "Bicara Pengguna", "Wikipedia", "Pembicaraan Wikipedia", "Gambar", "Pembicaraan Gambar", "MediaWiki", "Pembicaraan MediaWiki", "Templat", "Pembicaraan Templat", "Bantuan", "Pembicaraan Bantuan", "Kategori", "Pembicaraan Kategori"],
"is": ["Miðill", "Kerfissíða", "Spjall", "Notandi", "Notandaspjall", "Wikipedia", "Wikipediaspjall", "Mynd", "Myndaspjall", "Melding", "Meldingarspjall", "Snið", "Sniðaspjall", "Hjálp", "Hjálparspjall", "Flokkur", "Flokkaspjall"],
"it": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "Immagine", "Discussioni immagine", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria"],
"ja": [m, "特別", "ノート", "利用者", "利用者‐会話", "Wikipedia", "Wikipedia‐ノート", "画像", "画像‐ノート", "MediaWiki", "MediaWiki‐ノート", "Template", "Template‐ノート", "Help", "Help‐ノート", "Category", "Category‐ノート"],
"ka": ["მედია", "სპეციალური", "განხილვა", "მომხმარებელი", "მომხმარებელი განხილვა", "ვიკიპედია", "ვიკიპედია განხილვა", "სურათი", "სურათი განხილვა", "მედიავიკი", "მედიავიკი განხილვა", "თარგი", "თარგი განხილვა", "დახმარება", "დახმარება განხილვა", "კატეგორია", "კატეგორია განხილვა"],
"ko": [m, "특수기능", "토론", "사용자", "사용자토론", "위키백과", "위키백과토론", "그림", "그림토론", "분류", "분류토론", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk"],
"ku": ["Medya", "Taybet", "Nîqaş", "Bikarhêner", "Bikarhêner nîqaş", "Wîkîpediya", "Wîkîpediya nîqaş", "Wêne", "Wêne nîqaş", "MediaWiki", "MediaWiki nîqaş", "Şablon", "Şablon nîqaş", "Alîkarî", "Alîkarî nîqaş", "Kategorî", "Kategorî nîqaş"],
"la": ["Specialis", "Disputatio", "Usor", "Disputatio Usoris", "Vicipaedia", "Disputatio Vicipaediae", "Imago", "Disputatio Imaginis", "MediaWiki", "Disputatio MediaWiki", "Formula", "Disputatio Formulae", "Auxilium", "Disputatio Auxilii", "Categoria", "Disputatio Categoriae", m],
"li": [m, "Speciaal", "Euverlik", "Gebroeker", "Euverlik gebroeker", "Wikipedia", "Euverlik Wikipedia", "Aafbeilding", "Euverlik afbeelding", "MediaWiki", "Euverlik MediaWiki", "Sjabloon", "Euverlik sjabloon", "Help", "Euverlik help", "Kategorie", "Euverlik kategorie"],
"lt": ["Medija", "Specialus", "Aptarimas", "Naudotojas", "Naudotojo aptarimas", "Wikipedia", "Wikipedia aptarimas", "Vaizdas", "Vaizdo aptarimas", "MediaWiki", "MediaWiki aptarimas", "Šablonas", "Šablono aptarimas", "Pagalba", "Pagalbos aptarimas", "Kategorija", "Kategorijos aptarimas"],
"mk": ["Медија", "Специјални", "Разговор", "Корисник", "Корисник разговор", "Wikipedia", "Wikipedia разговор", "Слика", "Слика разговор", "МедијаВики", "МедијаВики разговор", "Шаблон", "Шаблон разговор", "Помош", "Помош разговор", "Категорија", "Категорија разговор"],
"ms": [m, "Istimewa", "Perbualan", "Pengguna", "Perbualan Pengguna", "Wikipedia", "Perbualan Wikipedia", "Imej", "Imej Perbualan", "MediaWiki", "MediaWiki Perbualan", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"mt": [m, "Special", "Talk", "User", "User talk", "Wikipedija", "Wikipedija talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"nap": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "Immagine", "Discussioni immagine", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria"],
"nds": [m, "Spezial", "Diskuschoon", "Bruker", "Bruker Diskuschoon", "Wikipedia", "Wikipedia Diskuschoon", "Bild", "Bild Diskuschoon", "MediaWiki", "MediaWiki Diskuschoon", "Vörlaag", "Vörlaag Diskuschoon", "Hülp", "Hülp Diskuschoon", "Kategorie", "Kategorie Diskuschoon"],
"nl": [m, "Speciaal", "Overleg", "Gebruiker", "Overleg gebruiker", "Wikipedia", "Overleg Wikipedia", "Afbeelding", "Overleg afbeelding", "MediaWiki", "Overleg MediaWiki", "Sjabloon", "Overleg sjabloon", "Help", "Overleg help", "Categorie", "Overleg categorie"],
"nn": ["Filpeikar", "Spesial", "Diskusjon", "Brukar", "Brukardiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Fil", "Fildiskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"no": ["Medium", "Spesial", "Diskusjon", "Bruker", "Brukerdiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Bilde", "Bildediskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"nv": [m, "Special", "Naaltsoos baa yinísht'į́", "Choinish'įįhí", "Choinish'įįhí baa yinísht'į́", "Wikiibíídiiya", "Wikiibíídiiya baa yinísht'į́", "E'elyaaígíí", "E'elyaaígíí baa yinísht'į́", "MediaWiki", "MediaWiki baa yinísht'į́", "Template", "Template talk", "Aná'álwo'", "Aná'álwo' baa yinísht'į́", "T'ááłáhági át'éego", "T'ááłáhági át'éego baa yinísht'į́"],
"oc": ["Especial", "Discutir", "Utilisator", "Discutida Utilisator", "Oiquipedià", "Discutida Oiquipedià", "Image", "Discutida Image", "MediaWiki", "MediaWiki talk", "Template", "Template talk", m, "Help", "Help talk", "Category", "Category talk"],
"os": [m, "Сæрмагонд", "Дискусси", "Архайæг", "Архайæджы дискусси", "Wikipedia", "0", "Ныв", "Нывы тыххæй дискусси", "MediaWiki", "Дискусси MediaWiki", "Шаблон", "Шаблоны тыххæй дискусси", "Æххуыс", "Æххуысы тыххæй дискусси", "Категори", "Категорийы тыххæй дискусси"],
"pa": ["ਮੀਡੀਆ", "ਖਾਸ", "ਚਰਚਾ", "ਮੈਂਬਰ", "ਮੈਂਬਰ ਚਰਚਾ", "Wikipedia", "Wikipedia ਚਰਚਾ", "ਤਸਵੀਰ", "ਤਸਵੀਰ ਚਰਚਾ", "ਮੀਡੀਆਵਿਕਿ", "ਮੀਡੀਆਵਿਕਿ ਚਰਚਾ", "ਨਮੂਨਾ", "ਨਮੂਨਾ ਚਰਚਾ", "ਮਦਦ", "ਮਦਦ ਚਰਚਾ", "ਸ਼੍ਰੇਣੀ", "ਸ਼੍ਰੇਣੀ ਚਰਚਾ"],
"pl": [m, "Specjalna", "Dyskusja", "Wikipedysta", "Dyskusja Wikipedysty", "Wikipedia", "Dyskusja Wikipedii", "Grafika", "Dyskusja grafiki", "MediaWiki", "Dyskusja MediaWiki", "Szablon", "Dyskusja szablonu", "Pomoc", "Dyskusja pomocy", "Kategoria", "Dyskusja kategorii", "Portal", "Dyskusja portalu"],
"pt": [m, "Especial", "Discussão", "Usuário", "Usuário Discussão", "Wikipedia", "Wikipedia Discussão", "Imagem", "Imagem Discussão", "MediaWiki", "MediaWiki Discussão", "Predefinição", "Predefinição Discussão", "Ajuda", "Ajuda Discussão", "Categoria", "Categoria Discussão"],
"ro": [m, "Special", "Discuţie", "Utilizator", "Discuţie Utilizator", "Wikipedia", "Discuţie Wikipedia", "Imagine", "Discuţie Imagine", "MediaWiki", "Discuţie MediaWiki", "Format", "Discuţie Format", "Ajutor", "Discuţie Ajutor", "Categorie", "Discuţie Categorie"],
"ru": ["Медиа", "Служебная", "Обсуждение", "Участник", "Обсуждение участника", "Википедия", "Обсуждение Википедии", "Изображение", "Обсуждение изображения", "MediaWiki", "Обсуждение MediaWiki", "Шаблон", "Обсуждение шаблона", "Справка", "Обсуждение справки", "Категория", "Обсуждение категории"],
"sc": ["Speciale", "Contièndha", "Utente", "Utente discussioni", "Wikipedia", "Wikipedia discussioni", "Immàgini", "Immàgini contièndha", m, "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sk": ["Médiá", "Špeciálne", "Diskusia", "Redaktor", "Diskusia s redaktorom", "Wikipédia", "Diskusia k Wikipédii", "Obrázok", "Diskusia k obrázku", "MediaWiki", "Diskusia k MediaWiki", "Šablóna", "Diskusia k šablóne", "Pomoc", "Diskusia k pomoci", "Kategória", "Diskusia ku kategórii"],
"sl": [m, "Posebno", "Pogovor", "Uporabnik", "Uporabniški pogovor", "Wikipedija", "Pogovor k Wikipediji", "Slika", "Pogovor k sliki", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sq": [m, "Speciale", "Diskutim", "Përdoruesi", "Përdoruesi diskutim", "Wikipedia", "Wikipedia diskutim", "Figura", "Figura diskutim", "MediaWiki", "MediaWiki diskutim", "Stampa", "Stampa diskutim", "Ndihmë", "Ndihmë diskutim", "Category", "Category talk"],
"sr": [m, "Посебно", "Разговор", "Корисник", "Разговор са корисником", "Википедија", "Разговор о Википедији", "Слика", "Разговор о слици", "МедијаВики", "Разговор о МедијаВикију", "Шаблон", "Разговор о шаблону", "Помоћ", "Разговор о помоћи", "Категорија", "Разговор о категорији", "Портал", "Разговор о порталу"],
"sv": [m, "Special", "Diskussion", "Användare", "Användardiskussion", "Wikipedia", "Wikipediadiskussion", "Bild", "Bilddiskussion", "MediaWiki", "MediaWiki diskussion", "Mall", "Malldiskussion", "Hjälp", "Hjälp diskussion", "Kategori", "Kategoridiskussion"],
"ta": ["ஊடகம்", "சிறப்பு", "பேச்சு", "பயனர்", "பயனர் பேச்சு", "Wikipedia", "Wikipedia பேச்சு", "படிமம்", "படிமப் பேச்சு", "மீடியாவிக்கி", "மீடியாவிக்கி பேச்சு", "வார்ப்புரு", "வார்ப்புரு பேச்சு", "உதவி", "உதவி பேச்சு", "பகுப்பு", "பகுப்பு பேச்சு"],
"th": [m, "พิเศษ", "พูดคุย", "ผู้ใช้", "คุยเกี่ยวกับผู้ใช้", "Wikipedia", "Wikipedia talk", "ภาพ", "คุยเกี่ยวกับภาพ", "MediaWiki", "คุยเกี่ยวกับ MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"tlh": ["Doch", "le'", "ja'chuq", "lo'wI'", "lo'wI' ja'chuq", "wIqIpe'DIya", "wIqIpe'DIya ja'chuq", "nagh beQ", "nagh beQ ja'chuq", "MediaWiki", "MediaWiki ja'chuq", "chen'ay'", "chen'ay' ja'chuq", "QaH", "QaH ja'chuq", "Segh", "Segh ja'chuq"],
"tr": [m, "Özel", "Tartışma", "Kullanıcı", "Kullanıcı mesaj", "Vikipedi", "Vikipedi tartışma", "Resim", "Resim tartışma", "MedyaViki", "MedyaViki tartışma", "Şablon", "Şablon tartışma", "Yardım", "Yardım tartışma", "Kategori", "Kategori tartışma"],
"tt": [m, "Maxsus", "Bäxäs", "Äğzä", "Äğzä bäxäse", "Wikipedia", "Wikipedia bäxäse", "Räsem", "Räsem bäxäse", "MediaWiki", "MediaWiki bäxäse", "Ürnäk", "Ürnäk bäxäse", "Yärdäm", "Yärdäm bäxäse", "Törkem", "Törkem bäxäse"],
"uk": ["Медіа", "Спеціальні", "Обговорення", "Користувач", "Обговорення користувача", "Wikipedia", "Обговорення Wikipedia", "Зображення", "Обговорення зображення", "MediaWiki", "Обговорення MediaWiki", "Шаблон", "Обговорення шаблону", "Довідка", "Обговорення довідки", "Категорія", "Обговорення категорії"],
"vi": ["Phương tiện", "Đặc biệt", "Thảo luận", "Thành viên", "Thảo luận Thành viên", "Wikipedia", "Thảo luận Wikipedia", "Hình", "Thảo luận Hình", "MediaWiki", "Thảo luận MediaWiki", "Tiêu bản", "Thảo luận Tiêu bản", "Trợ giúp", "Thảo luận Trợ giúp", "Thể loại", "Thảo luận Thể loại"],
"wa": [m, "Sipeciås", "Copene", "Uzeu", "Uzeu copene", "Wikipedia", "Wikipedia copene", "Imådje", "Imådje copene", "MediaWiki", "MediaWiki copene", "Modele", "Modele copene", "Aidance", "Aidance copene", "Categoreye", "Categoreye copene"]
//</NOLITE>
};
pg.ns.list = nsLists[pg.wiki.lang] || list;
pg.ns.index = nsIndex;
}
function namespaceListToRegex(list) {return RegExp('^('+list.join('|').split(' ').join('[ _]')+'):');};
// function setNamespaceList is ugly as sin, moved to later in the code
function setNamespaces() {
setNamespaceList();
pg.ns.withTalkList=[null]; // NB root (article) corresponds with this entry, null
pg.ns.talkList=[pg.ns.list[2]];
// if the number of namespaces changes then this will have to be changed
// maybe the easiest way is to specify the arrays by hand as in the comments following the loop
for (var i=3; i+1<pg.ns.list.length; i=i+2) {
pg.ns.withTalkList.push(pg.ns.list[i]);
pg.ns.talkList.push(pg.ns.list[i+1]);
}
// ALERT! SILLY HARDCODED VALUES FOLLOW!
pg.ns.special = pg.ns.list[pg.ns.index.Special];
pg.ns.image = pg.ns.list[pg.ns.index.Image];
pg.ns.user = pg.ns.list[pg.ns.index.User];
pg.ns.usertalk = pg.ns.list[pg.ns.index['User talk']];
pg.ns.category = pg.ns.list[pg.ns.index.Category];
pg.ns.template = pg.ns.list[pg.ns.index.Template];
pg.ns.nonArticleList=pg.ns.list.slice(0,2).concat(pg.ns.list.slice(2));
}
function setRedirs() {
var r='redirect';
var R='REDIRECT';
var redirLists={
//<NOLITE>
'ar': [ R, 'تحويل' ],
'be': [ r, 'перанакіраваньне' ],
'bg': [ r, 'пренасочване', 'виж' ],
'bs': [ r, 'Preusmjeri', 'preusmjeri', 'PREUSMJERI' ],
'cs': [ R, 'PŘESMĚRUJ' ],
'cy': [ r, 'ail-cyfeirio' ],
'et': [ r, 'suuna' ],
'ga': [ r, 'athsheoladh' ],
'he': [ R, 'הפניה' ],
'is': [ r, 'tilvísun', 'TILVÍSUN' ],
'mk': [ r, 'пренасочување', 'види' ],
'nds': [ r, 'wiederleiden' ],
'nn': [ r, 'omdiriger' ],
'pt': [ R, 'redir' ],
'ru': [ R, 'ПЕРЕНАПРАВЛЕНИЕ', 'ПЕРЕНАПР' ],
'sk': [ r, 'presmeruj' ],
'sr': [ r, 'Преусмери', 'преусмери', 'ПРЕУСМЕРИ', 'Preusmeri', 'preusmeri', 'PREUSMERI' ],
'tt': [ 'yünältü' ],
'vi': [ r, 'đổi' ] // no comma
//</NOLITE>
};
var redirList=redirLists[ pg.wiki.lang ] || [r, R];
// Mediawiki is very tolerant about what comes after the #redirect at the start
pg.re.redirect=RegExp('^\\s*[#](' + redirList.join('|') + ').*?\\[{2}([^\\|\\]]*)(|[^\\]]*)?\\]{2}\\s*(.*)', 'i');
}
function setInterwiki() {
if (pg.wiki.wikimedia) {
pg.wiki.interwiki='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';
pg.re.interwiki=RegExp('^'+pg.wiki.interwiki+':');
} else {
pg.wiki.interwiki=null;
pg.re.interwiki=RegExp('^$');
}
}
function nsRe(label) {
var l=upcaseFirst(label);
return nsRegexString(pg.ns.list[pg.ns.index[l]], l);
}
function nsRegexString(str, extra) {
return '(?:' + str + '|' + encodeURI(str) + (extra ? '|' + extra : '') + ')';
}
function nsRegex(str, extra) {
return RegExp(nsRegexString(str, extra));
}
// ENDFILE: namespaces.js
// STARTFILE: selpop.js
//<NOLITE>
function getEditboxSelection() {
// see http://www.webgurusforum.com/8/12/0
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
// IE, Opera
if (document.selection) { return document.selection.createRange().text; }
// Mozilla
var selStart = editbox.selectionStart;
var selEnd = editbox.selectionEnd;
return (editbox.value).substring(selStart, selEnd);
}
function doSelectionPopup() {
// popup if the selection looks like [[foo|anything afterwards at all
// or [[foo|bar]]text without ']]'
// or [[foo|bar]]
var sel=getEditboxSelection();
var open=sel.indexOf('[[');
var pipe=sel.indexOf('|');
var close=sel.indexOf(']]');
if (open == -1 || ( pipe == -1 && close == -1) ) { return; }
if (pipe != -1 && open > pipe || close != -1 && open > close) { return; }
if (getValueOf('popupOnEditSelection')=='boxpreview') {
return doSeparateSelectionPopup(sel);
}
var article=new Title(sel.substring(open+2, (pipe < 0) ? close : pipe)).urlString();
if (close > 0 && sel.substring(close+2).indexOf('[[') >= 0) {
return;
}
var a=document.createElement('a');
a.href=pg.wiki.titlebase + article;
mouseOverWikiLink2(a);
if (a.navpopup) {
a.navpopup.addHook(function(){runStopPopupTimer(a.navpopup);}, 'unhide', 'after');
}
}
function doSeparateSelectionPopup(str) {
var div=document.getElementById('selectionPreview');
if (!div) {
div = document.createElement('div');
div.id='selectionPreview';
try { var box=document.editform.wpTextbox1; }
catch (oopsie) { return; }
box.parentNode.insertBefore(div, box);
}
div.innerHTML=wiki2html(str);
div.ranSetupTooltipsAlready = false;
popTipsSoonFn('selectionPreview')();
}
//</NOLITE>
// ENDFILE: selpop.js
// STARTFILE: navpopup.js
/**
@fileoverview Defines two classes: {@link Navpopup} and {@link Mousetracker}.
<code>Navpopup</code> describes popups: when they appear, where, what
they look like and so on.
<code>Mousetracker</code> "captures" the mouse using
<code>document.onmousemove</code>.
*/
/**
Creates a new Mousetracker.
@constructor
@class The Mousetracker class. This monitors mouse movements and manages associated hooks.
*/
function Mousetracker() {
/**
Interval to regularly run the hooks anyway, in milliseconds.
@type Integer
*/
this.loopDelay=400;
/**
Timer for the loop.
@type Timer
*/
this.timer=null;
/**
Flag - are we switched on?
@type Boolean
*/
this.active=false;
/**
Flag - are we probably inaccurate, i.e. not reflecting the actual mouse position?
*/
this.dirty=true;
/**
Array of hook functions.
@private
@type Array
*/
this.hooks=[];
}
/**
Adds a hook, to be called when we get events.
@param {Function} f A function which is called as
<code>f(x,y)</code>. It should return <code>true</code> when it
wants to be removed, and <code>false</code> otherwise.
*/
Mousetracker.prototype.addHook = function (f) {
this.hooks.push(f);
};
/**
Runs hooks, passing them the x
and y coords of the mouse. Hook functions that return true are
passed to {@link Mousetracker#removeHooks} for removal.
@private
*/
Mousetracker.prototype.runHooks = function () {
if (!this.hooks || !this.hooks.length) { return; }
//log('Mousetracker.runHooks; we got some hooks to run');
var remove=false;
var removeObj={};
// this method gets called a LOT -
// pre-cache some variables
var x=this.x, y=this.y, len = this.hooks.length;
for (var i=0; i<len; ++i) {
//~ run the hook function, and remove it if it returns true
if (this.hooks[i](x, y)===true) {
remove=true;
removeObj[i]=true;
}
}
if (remove) { this.removeHooks(removeObj); }
};
/**
Removes hooks.
@private
@param {Object} removeObj An object whose keys are the index
numbers of functions for removal, with values that evaluate to true
*/
Mousetracker.prototype.removeHooks = function(removeObj) {
var newHooks=[];
var len = this.hooks.length;
for (var i=0; i<len; ++i) {
if (! removeObj[i]) { newHooks.push(this.hooks[i]); }
}
this.hooks=newHooks;
};
/**
Event handler for mouse wiggles.
We simply grab the event, set x and y and run the hooks.
This makes the cpu all hot and bothered :-(
@private
@param {Event} e Mousemove event
*/
Mousetracker.prototype.track=function (e) {
//~ Apparently this is needed in IE.
e = e || window.event;
var x, y;
if (e) {
if (e.pageX) { x=e.pageX; y=e.pageY; }
else if (typeof e.clientX!='undefined') {
var left, top, docElt = window.document.documentElement;
if (docElt) { left=docElt.scrollLeft; }
left = left || window.document.body.scrollLeft || window.document.scrollLeft || 0;
if (docElt) { top=docElt.scrollTop; }
top = top || window.document.body.scrollTop || window.document.scrollTop || 0;
x=e.clientX + left;
y=e.clientY + top;
} else { return; }
this.setPosition(x,y);
}
};
/**
Sets the x and y coordinates stored and takes appropriate action,
running hooks as appropriate.
@param {Integer} x, y Screen coordinates to set
*/
Mousetracker.prototype.setPosition=function(x,y) {
this.x = x;
this.y = y;
if (this.dirty || this.hooks.length === 0) { this.dirty=false; return; }
if (typeof this.lastHook_x != 'number') { this.lastHook_x = -100; this.lastHook_y=-100; }
var diff = (this.lastHook_x - x)*(this.lastHook_y - y);
diff = (diff >= 0) ? diff : -diff;
if ( diff > 1 ) {
this.lastHook_x=x;
this.lastHook_y=y;
if (this.dirty) { this.dirty = false; }
else { this.runHooks(); }
}
}
/**
Sets things in motion, unless they are already that is, registering an event handler on <code>document.onmousemove</code>.
A half-hearted attempt is made to preserve the old event handler if there is one.
*/
Mousetracker.prototype.enable = function () {
if (this.active) { return; }
this.active=true;
//~ Save the current handler for mousemove events. This isn't too
//~ robust, of course.
this.savedHandler=document.onmousemove;
//~ Gotta save @tt{this} again for the closure, and use apply for
//~ the member function.
var savedThis=this;
document.onmousemove=function (e) {savedThis.track.apply(savedThis, [e]);};
if (this.loopDelay) { this.timer = setInterval(function() { //log('loop delay in mousetracker is working');
savedThis.runHooks();}, this.loopDelay); }
};
/**
Disables the tracker, removing the event handler.
*/
Mousetracker.prototype.disable = function () {
if (!this.active) { return; }
if (typeof this.savedHandler=='function') {
document.onmousemove=this.savedHandler;
} else { delete document.onmousemove; }
if (this.timer) { clearInterval(this.timer); }
this.active=false;
};
/**
Creates a new Navpopup.
Gets a UID for the popup and
@param init Contructor object. If <code>init.draggable</code> is true or absent, the popup becomes draggable.
@constructor
@class The Navpopup class. This generates popup hints, and does some management of them.
*/
function Navpopup(init) {
//alert('new Navpopup(init)');
/** UID for each Navpopup instance.
Read-only.
@type integer
*/
this.uid=Navpopup.uid++;
/**
Read-only flag for current visibility of the popup.
@type boolean
@private
*/
this.visible=false;
/** Flag to be set when we want to cancel a previous request to
show the popup in a little while.
@private
@type boolean
*/
this.noshow=false;
/** Categorised list of hooks.
@see #runHooks
@see #addHook
@private
@type Object
*/
this.hooks={
'create': [],
'unhide': [],
'hide': []
};
/** list of unique IDs of hook functions, to avoid duplicates
@private
*/
this.hookIds={};
/** List of downloads associated with the popup.
@private
@type Array
*/
this.downloads=[];
/** Number of uncompleted downloads.
@type integer
*/
this.pending=null;
/** Tolerance in pixels when detecting whether the mouse has left the popup.
@type integer
*/
this.fuzz=5;
/** Flag to toggle running {@link #limitHorizontalPosition} to regulate the popup's position.
@type boolean
*/
this.constrained=true;
/** The popup width in pixels.
@private
@type integer
*/
this.width=0;
/** The popup width in pixels.
@private
@type integer
*/
this.height=0;
/** The main content DIV element.
@type HTMLDivElement
*/
this.mainDiv=null;
this.createMainDiv();
// if (!init || typeof init.draggable=='undefined' || init.draggable) {
// this.makeDraggable(true);
// }
}
/**
A UID for each Navpopup. This constructor property is just a counter.
@type integer
@private
*/
Navpopup.uid=0;
/**
Retrieves the {@link #visible} attribute, indicating whether the popup is currently visible.
@type boolean
*/
Navpopup.prototype.isVisible=function() {
return this.visible;
};
/**
Repositions popup using CSS style.
@private
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@param {boolean} noLimitHor Don't call {@link #limitHorizontalPosition}
*/
Navpopup.prototype.reposition= function (x,y, noLimitHor) {
log ('reposition('+x+','+y+','+noLimitHor+')');
if (typeof x != 'undefined' && x!==null) { this.left=x; }
if (typeof y != 'undefined' && y!==null) { this.top=y; }
if (typeof this.left != 'undefined' && typeof this.top != 'undefined') {
this.mainDiv.style.left=this.left + 'px';
this.mainDiv.style.top=this.top + 'px';
}
if (!noLimitHor) { this.limitHorizontalPosition(); }
//console.log('navpop'+this.uid+' - (left,top)=(' + this.left + ',' + this.top + '), css=('
//+ this.mainDiv.style.left + ',' + this.mainDiv.style.top + ')');
};
/**
Prevents popups from being in silly locations. Hopefully.
Should not be run if {@link #constrained} is true.
@private
*/
Navpopup.prototype.limitHorizontalPosition=function() {
if (!this.constrained || this.tooWide) { return; }
this.updateDimensions();
var x=this.left;
var w=this.width;
var cWidth=document.body.clientWidth;
// log('limitHorizontalPosition: x='+x+
// ', this.left=' + this.left +
// ', this.width=' + this.width +
// ', cWidth=' + cWidth);
if ( (x+w) >= cWidth ||
( x > 0 && this.maxWidth && this.width < this.maxWidth && this.height > this.width
&& x > cWidth - this.maxWidth ) ) {
// This is a very nasty hack. There has to be a better way!
// We find the "natural" width of the div by positioning it at the far left
// then reset it so that it should be flush right (well, nearly)
this.mainDiv.style.left='-10000px';
this.mainDiv.style.width = this.maxWidth + 'px';
var naturalWidth=parseInt(this.mainDiv.offsetWidth, 10);
var newLeft=cWidth - naturalWidth - 1;
if (newLeft < 0) { newLeft = 0; this.tooWide=true; } // still unstable for really wide popups?
log ('limitHorizontalPosition: moving to ('+newLeft + ','+ this.top+');' + ' naturalWidth=' + naturalWidth + ', clientWidth=' + cWidth);
this.reposition(newLeft, null, true);
}
};
/**
Counter indicating the z-order of the "highest" popup.
We start the z-index at 1000 so that popups are above everything
else on the screen.
@private
@type integer
*/
Navpopup.highest=1000;
/**
Brings popup to the top of the z-order.
We increment the {@link #highest} property of the contructor here.
@private
*/
Navpopup.prototype.raise = function () {
this.mainDiv.style.zIndex=Navpopup.highest + 1;
++Navpopup.highest;
};
/**
Shows the popup provided {@link #noshow} is not true.
Updates the position, brings the popup to the top of the z-order and unhides it.
*/
Navpopup.prototype.show = function () {
//document.title+='s';
if (this.noshow) { return; }
//document.title+='t';
this.reposition();
this.raise();
this.unhide();
};
/**
Runs the {@link #show} method in a little while, unless we're
already visible.
@param {integer} time Delay in milliseconds
@see #showSoonIfStable
*/
Navpopup.prototype.showSoon = function (time) {
if (this.visible) { return; }
this.noshow=false;
//~ We have to save the value of @tt{this} so that the closure below
//~ works.
var savedThis=this;
//this.start_x = Navpopup.tracker.x;
//this.start_y = Navpopup.tracker.y;
setTimeout(function () {
if (Navpopup.tracker.active) {
savedThis.reposition.apply(savedThis, [Navpopup.tracker.x + 2, Navpopup.tracker.y + 2]);
}
//~ Have to use apply to invoke his member function here
savedThis.show.apply(savedThis, []);
}, time);
};
/**
Checks to see if the mouse pointer has
stabilised (checking every <code>time</code>/2 milliseconds) and runs the
{@link #show} method if it has. This method makes {@link #showSoon} redundant.
@param {integer} time The minimum time (ms) before the popup may be shown.
*/
Navpopup.prototype.showSoonIfStable = function (time) {
log ('showSoonIfStable, time='+time);
if (this.visible) { return; }
this.noshow = false;
//~ initialize these variables so that we never run @tt{show} after
//~ just half the time
this.stable_x = -10000; this.stable_y = -10000;
var stableShow = function() {
log('stableShow called');
var new_x = Navpopup.tracker.x, new_y = Navpopup.tracker.y;
var dx = savedThis.stable_x - new_x, dy = savedThis.stable_y - new_y;
var fuzz2 = 0; // savedThis.fuzz * savedThis.fuzz;
//document.title += '[' + [savedThis.stable_x,new_x, savedThis.stable_y,new_y, dx, dy, fuzz2].join(',') + '] ';
if ( dx * dx <= fuzz2 && dy * dy <= fuzz2 ) {
log ('mouse is stable');
clearInterval(savedThis.showSoonStableTimer);
savedThis.reposition.apply(savedThis, [new_x + 2, new_y + 2]);
savedThis.show.apply(savedThis, []);
return;
}
savedThis.stable_x = new_x; savedThis.stable_y = new_y;
};
var savedThis = this;
this.showSoonStableTimer = setInterval(stableShow, time/2);
};
/**
Makes the popup unhidable until we call {@link #unstick}.
*/
Navpopup.prototype.stick=function() {
this.noshow=false;
this.sticky=true;
};
/**
Allows the popup to be hidden.
*/
Navpopup.prototype.unstick=function() {
this.sticky=false;
};
/**
Sets the {@link #noshow} flag and hides the popup. This should be called
when the mouse leaves the link before
(or after) it's actually been displayed.
*/
Navpopup.prototype.banish = function () {
log ('banish called');
// hide and prevent showing with showSoon in the future
this.noshow=true;
if (this.showSoonStableTimer) {
log('clearing showSoonStableTimer');
clearInterval(this.showSoonStableTimer);
}
this.hide();
};
/**
Runs hooks added with {@link #addHook}.
@private
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
*/
Navpopup.prototype.runHooks = function (key, when) {
if (!this.hooks[key]) { return; }
var keyHooks=this.hooks[key];
var len=keyHooks.length;
for (var i=0; i< len; ++i) {
if (keyHooks[i] && keyHooks[i].when == when) {
if (keyHooks[i].hook.apply(this, [])) {
// remove the hook
if (keyHooks[i].hookId) {
delete this.hookIds[keyHooks[i].hookId];
}
keyHooks[i]=null;
}
}
}
};
/**
Adds a hook to the popup. Hook functions are run with <code>this</code> set to refer to the Navpopup instance, and no arguments.
@param {Function} hook The hook function. Functions that return true are deleted.
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
@param {String} uid A truthy string identifying the hook function; if it matches another hook in this position, it won't be added again.
*/
Navpopup.prototype.addHook = function ( hook, key, when, uid ) {
when = when || 'after';
if (!this.hooks[key]) { return; }
// if uid is specified, don't add duplicates
var hookId=null;
if (uid) {
hookId=[key,when,uid].join('|');
if (this.hookIds[hookId]) {
return;
}
this.hookIds[hookId]=true;
}
this.hooks[key].push( {hook: hook, when: when, hookId: hookId} );
};
/**
Creates the main DIV element, which contains all the actual popup content.
Runs hooks with key 'create'.
@private
*/
Navpopup.prototype.createMainDiv = function () {
if (this.mainDiv) { return; }
this.runHooks('create', 'before');
var mainDiv=document.createElement('div');
var savedThis=this;
mainDiv.onclick=function(e) {savedThis.onclickHandler(e);};
mainDiv.className=(this.className) ? this.className : 'navpopup_maindiv';
mainDiv.id=mainDiv.className + this.uid;
mainDiv.style.position='absolute';
mainDiv.style.display='none';
mainDiv.className='navpopup';
// easy access to javascript object through DOM functions
mainDiv.navpopup=this;
this.mainDiv=mainDiv;
document.body.appendChild(mainDiv);
this.runHooks('create', 'after');
};
/**
Calls the {@link #raise} method.
@private
*/
Navpopup.prototype.onclickHandler=function(e) {
this.raise();
};
/**
Makes the popup draggable, using a {@link Drag} object.
@private
*/
Navpopup.prototype.makeDraggable=function(handleName) {
if (!this.mainDiv) { this.createMainDiv(); }
var drag=new Drag();
if (!handleName) {
drag.startCondition=function(e) {
try { if (!e.shiftKey) { return false; } } catch (err) { return false; }
return true;
};
}
var dragHandle = document.getElementById(handleName) || this.mainDiv;
var np=this;
drag.endHook=function(x,y) {
Navpopup.tracker.dirty=true;
np.reposition(x,y);
};
drag.init(dragHandle,this.mainDiv);
};
/** Hides the popup using CSS. Runs hooks with key 'hide'.
Sets {@link #visible} appropriately. {@link #banish} should be called externally instead of this method.
@private
*/
Navpopup.prototype.hide = function () {
this.runHooks('hide', 'before');
this.abortDownloads();
if (this.sticky) { return; }
if (typeof this.visible != 'undefined' && this.visible) {
this.mainDiv.style.display='none';
this.visible=false;
}
this.runHooks('hide', 'after');
};
/** Shows the popup using CSS. Runs hooks with key 'unhide'.
Sets {@link #visible} appropriately. {@link #show} should be called externally instead of this method.
@private
*/
Navpopup.prototype.unhide = function () {
this.runHooks('unhide', 'before');
if (typeof this.visible != 'undefined' && !this.visible) {
this.mainDiv.style.display='inline';
this.visible=true;
}
this.runHooks('unhide', 'after');
};
/**
Sets the <code>innerHTML</code> attribute of the main div containing the popup content.
@param {String} html The HTML to set.
*/
Navpopup.prototype.setInnerHTML = function (html) {
this.mainDiv.innerHTML = html;
};
/**
Updates the {@link #width} and {@link #height} attributes with the CSS properties.
@private
*/
Navpopup.prototype.updateDimensions = function () {
this.width=parseInt(this.mainDiv.offsetWidth, 10);
this.height=parseInt(this.mainDiv.offsetHeight, 10);
};
/**
Checks if the point (x,y) is within {@link #fuzz} of the
{@link #mainDiv}.
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@type boolean
*/
Navpopup.prototype.isWithin = function(x,y) {
//~ If we're not even visible, no point should be considered as
//~ being within the popup.
if (!this.visible) { return false; }
this.updateDimensions();
var fuzz=this.fuzz || 0;
//~ Use a simple box metric here.
return (x+fuzz >= this.left && x-fuzz <= this.left + this.width &&
y+fuzz >= this.top && y-fuzz <= this.top + this.height);
};
/**
Adds a download to {@link #downloads}.
@param {Downloader} download
*/
Navpopup.prototype.addDownload=function(download) {
if (!download) { return; }
this.downloads.push(download);
};
/**
Aborts the downloads listed in {@link #downloads}.
@see Downloader#abort
*/
Navpopup.prototype.abortDownloads=function() {
for(var i=0; i<this.downloads.length; ++i) {
var d=this.downloads[i];
if (d && d.abort) { d.abort(); }
}
this.downloads=[];
};
/**
A {@link Mousetracker} instance which is a property of the constructor (pseudo-global).
*/
Navpopup.tracker=new Mousetracker();
// ENDFILE: navpopup.js
// STARTFILE: diff.js
//<NOLITE>
/*
* Javascript Diff Algorithm
* By John Resig (http://ejohn.org/) and [[:en:User:Lupin]]
*
* More Info:
* http://ejohn.org/projects/javascript-diff-algorithm/
*/
function delFmt(x) {
if (!x.length) { return ''; }
return "<del class='popupDiff'>" + x.join('').split('\n').join('¶\n') +"</del>";
}
function insFmt(x) {
if (!x.length) { return ''; }
return "<ins class='popupDiff'>" + x.join('').split('\n').join('¶\n') +"</ins>";
}
function countCrossings(a, b, i, eject) {
// count the crossings on the edge starting at b[i]
if (!b[i].row && b[i].row !== 0) { return -1; }
var count=0;
for (var j=0; j<a.length; ++j) {
if (!a[j].row && a[j].row !== 0) { continue; }
if ( (j-b[i].row)*(i-a[j].row) > 0) {
if(eject) { return true; }
count++;
}
}
return count;
}
function shortenDiffString(str, context) {
var re=RegExp('(<del[\\s\\S]*?</del>|<ins[\\s\\S]*?</ins>)');
var splitted=str.parenSplit(re);
var ret=[''];
for (var i=0; i<splitted.length; i+=2) {
if (splitted[i].length < 2*context) {
ret[ret.length-1] += splitted[i];
if (i+1<splitted.length) { ret[ret.length-1] += splitted[i+1]; }
continue;
}
else {
if (i > 0) { ret[ret.length-1] += splitted[i].substring(0,context); }
if (i+1 < splitted.length) {
ret.push(splitted[i].substring(splitted[i].length-context) +
splitted[i+1]);
}
}
}
while (ret.length > 0 && !ret[0]) { ret = ret.slice(1); }
return ret;
}
function diffString( o, n, simpleSplit ) {
var splitRe=RegExp('([[]{2}|[\]]{2}|[{]{2,3}|[}]{2,3}|[|]|=|[*:]+|\\s|\\b)');
o=o.entify(); n=n.entify();
var out, i;
if (simpleSplit) { out = diff( o.split(/\b/), n.split(/\b/) ); }
else { out = diff( o.parenSplit(splitRe), n.parenSplit(splitRe) ); }
var str = "";
var acc=[]; // accumulator for prettier output
// crossing pairings -- eg 'A B' vs 'B A' -- cause problems, so let's iron them out
// this doesn't always do things optimally but it should be fast enough
var maxOutputPair=0;
for (i=0; i<out.n.length; ++i) {
if ( out.n[i].paired ) {
if( maxOutputPair > out.n[i].row ) {
// tangle - delete pairing
out.o[ out.n[i].row ]=out.o[ out.n[i].row ].text;
out.n[i]=out.n[i].text;
}
if (maxOutputPair < out.n[i].row) { maxOutputPair = out.n[i].row; }
}
}
// output the stuff preceding the first paired old line
for (i=0; i<out.o.length && !out.o[i].paired; ++i) { acc.push( out.o[i] ); }
str += delFmt(acc); acc=[];
// main loop
for ( i = 0; i < out.n.length; ++i ) {
// output unpaired new "lines"
while ( i < out.n.length && !out.n[i].paired ) { acc.push( out.n[i++] ); }
str += insFmt(acc); acc=[];
if ( i < out.n.length ) { // this new "line" is paired with the (out.n[i].row)th old "line"
str += out.n[i].text;
// output unpaired old rows starting after this new line's partner
var m = out.n[i].row + 1;
while ( m < out.o.length && !out.o[m].paired ) { acc.push ( out.o[m++] ); }
str += delFmt(acc); acc=[];
}
}
return str;
}
// see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object
// FIXME: use obj.hasOwnProperty instead of this kludge!
window.jsReservedProperties=RegExp('^(constructor|prototype|__((define|lookup)[GS]etter)__' +
'|eval|hasOwnProperty|propertyIsEnumerable' +
'|to(Source|String|LocaleString)|(un)?watch|valueOf)$');
function diffBugAlert(word) {
if (!diffBugAlert.list[word]) {
diffBugAlert.list[word]=1;
alert('Bad word: '+word+'\n\nPlease report this bug.');
}
}
diffBugAlert.list={};
function makeDiffHashtable(src) {
var ret={};
for ( var i = 0; i < src.length; i++ ) {
if ( jsReservedProperties.test(src[i]) ) { src[i] += '<!-- -->'; }
if ( !ret[ src[i] ] ) { ret[ src[i] ] = []; }
try { ret[ src[i] ].push( i ); } catch (err) { diffBugAlert(src[i]); }
}
return ret;
}
function diff( o, n ) {
// pass 1: make hashtable ns with new rows as keys
var ns = makeDiffHashtable(n);
// pass 2: make hashtable os with old rows as keys
var os = makeDiffHashtable(o);
// pass 3: pair unique new rows and matching unique old rows
var i;
for ( i in ns ) {
if ( ns[i].length == 1 && os[i] && os[i].length == 1 ) {
n[ ns[i][0] ] = { text: n[ ns[i][0] ], row: os[i][0], paired: true };
o[ os[i][0] ] = { text: o[ os[i][0] ], row: ns[i][0], paired: true };
}
}
// pass 4: pair matching rows immediately following paired rows (not necessarily unique)
for ( i = 0; i < n.length - 1; i++ ) {
if ( n[i].paired && ! n[i+1].paired && n[i].row + 1 < o.length && ! o[ n[i].row + 1 ].paired &&
n[i+1] == o[ n[i].row + 1 ] ) {
n[i+1] = { text: n[i+1], row: n[i].row + 1, paired: true };
o[n[i].row+1] = { text: o[n[i].row+1], row: i + 1, paired: true };
}
}
// pass 5: pair matching rows immediately preceding paired rows (not necessarily unique)
for ( i = n.length - 1; i > 0; i-- ) {
if ( n[i].paired && ! n[i-1].paired && n[i].row > 0 && ! o[ n[i].row - 1 ].paired &&
n[i-1] == o[ n[i].row - 1 ] ) {
n[i-1] = { text: n[i-1], row: n[i].row - 1, paired: true };
o[n[i].row-1] = { text: o[n[i].row-1], row: i - 1, paired: true };
}
}
return { o: o, n: n };
}
//</NOLITE>
// ENDFILE: diff.js
// STARTFILE: init.js
function setSiteInfo() {
if (window.popupLocalDebug) {
pg.wiki.hostname = 'en.wikipedia.org';
} else {
pg.wiki.hostname = location.hostname; // use in preference to location.hostname for flexibility (?)
}
pg.wiki.wikimedia=RegExp('(wiki([pm]edia|source|books|news|quote|versity)|wiktionary)[.]org').test(pg.wiki.hostname);
pg.wiki.wikia=RegExp('[.]wikia[.]com$', 'i').test(pg.wiki.hostname);
pg.wiki.isLocal=RegExp('^localhost').test(pg.wiki.hostname);
pg.wiki.commons=( pg.wiki.wikimedia && pg.wiki.hostname != 'commons.wikimedia.org') ? 'commons.wikimedia.org' : null;
pg.wiki.commonslang = pg.wiki.commons ? pg.wiki.commons.split('.')[0] : null;
pg.wiki.lang = pg.wiki.hostname.split('.')[0];
// toolDbName needs pg.wiki.lang and pg.wiki.hostname
window.toolDbName && (pg.wiki.userNameCookie=toolDbName(true) + 'UserName');
pg.wiki.prePath='';
if (pg.wiki.hostname == 'secure.wikimedia.org') {
var s=document.location.href.split('/');
pg.wiki.prePath=s.slice(3,5).join('/');
pg.wiki.lang=s[4];
}
var port = location.port ? ':' + location.port : '';
pg.wiki.sitebase = joinPath([pg.wiki.hostname + port, pg.wiki.prePath]);
}
function getArticlePath() {
if (isFunction(window.siteArticlePath)) {
return siteArticlePath();
}
return 'wiki';
}
function getBotInterfacePath() {
if (isFunction(window.siteBotInterfacePath)) {
return siteBotInterfacePath();
}
var botInterfacePath = pg.wiki.articlePath.replace(/\/index[.]php$/, '');
if (pg.wiki.wikimedia) { botInterfacePath = 'w'; } // as in http://some.thing.com/w/index.php?title=foo
else if (pg.wiki.wikia) { botInterfacePath = ''; }
return botInterfacePath;
}
function setTitleBase() {
var protocol = ( window.popupLocalDebug ? 'http:' : location.protocol );
pg.wiki.articlePath = getArticlePath(); // as in http://some.thing.com/wiki/Article
pg.wiki.botInterfacePath = getBotInterfacePath();
// default mediawiki setting is paths like http://some.thing.com/articlePath/index.php?title=foo
var titletail = joinPath([pg.wiki.botInterfacePath, 'index.php?title=']);
var titletail2 = joinPath([pg.wiki.botInterfacePath, 'wiki.phtml?title=']);
// other sites may need to add code here to set titletail depending on how their urls work
pg.wiki.titlebase = protocol + '//' + joinPath([pg.wiki.sitebase, titletail]);
pg.wiki.titlebase2 = protocol + '//' + joinPath([pg.wiki.sitebase, titletail2]);
pg.wiki.wikibase = protocol + '//' + joinPath([pg.wiki.sitebase, pg.wiki.botInterfacePath]);
pg.wiki.articlebase = protocol + '//' + joinPath([pg.wiki.sitebase, pg.wiki.articlePath]);
pg.re.basenames = RegExp( '^(' +
map( literalizeRegex, [ pg.wiki.titlebase, pg.wiki.titlebase2,
pg.wiki.articlebase ]).join('|') + ')' );
}
//////////////////////////////////////////////////
// Global regexps
function setMainRegex() {
var reStart='[^:]*://';
var preTitles = joinPath([literalizeRegex(pg.wiki.botInterfacePath), '(?:index[.]php|wiki[.]phtml)[?]title=']);
// slightly ugly hack when pg.wiki.articlePath is empty
preTitles += '|' + literalizeRegex( ( pg.wiki.articlePath ? pg.wiki.articlePath + '/' : ''));
var reEnd='/(' + preTitles + ')([^&?#]*)[^#]*(?:#(.+))?';
pg.re.main = RegExp(reStart + literalizeRegex(pg.wiki.sitebase) + reEnd);
}
function setRegexps() {
setMainRegex();
var sp=nsRe('Special');
pg.re.urlNoPopup=RegExp('((title=|/)' + sp + '(?:%3A|:)|section=[0-9])') ;
pg.re.contribs =RegExp('(title=|/)' + sp + '(?:%3A|:)Contributions' + '(&target=|/|/' + pg.ns.user+':)(.*)') ;
pg.re.email =RegExp('(title=|/)' + sp + '(?:%3A|:)Emailuser' + '(&target=|/|/(?:' + pg.ns.user+':)?)(.*)') ;
pg.re.backlinks =RegExp('(title=|/)' + sp + '(?:%3A|:)Whatlinkshere' + '(&target=|/)([^&]*)');
//<NOLITE>
var im=nsRe('Image');
// note: tries to get images in infobox templates too, e.g. movie pages, album pages etc
// (^|\[\[)image: *([^|\]]*[^|\] ]) *
// (^|\[\[)image: *([^|\]]*[^|\] ])([^0-9\]]*([0-9]+) *px)?
// $4 = 120 as in 120px
pg.re.image = RegExp('(^|\\[\\[)' + im + ': *([^|\\]]*[^|\\] ])' +
'([^0-9\\]]*([0-9]+) *px)?|(?:\\n *[|]?|[|]) *' +
'(' + getValueOf('popupImageVarsRegexp') + ')' +
' *= *(?:\\[\\[ *)?(?:' + im + ':)?' +
'([^|]*?)(?:\\]\\])? *[|]? *\\n', 'img') ;
pg.re.imageBracketCount = 6;
pg.re.category = RegExp('\\[\\[' +nsRe('Category') +
': *([^|\\]]*[^|\\] ]) *', 'i');
pg.re.categoryBracketCount = 1;
pg.re.ipUser=RegExp('('+nsRe('User')+':)?' +
'((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}' +
'(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])');
pg.re.stub= RegExp(getValueOf('popupStubRegexp'), 'im');
pg.re.disambig=RegExp(getValueOf('popupDabRegexp'), 'im');
//</NOLITE>
// FIXME replace with general parameter parsing function, this is daft
pg.re.oldid=RegExp('[?&]oldid=([^&]*)');
pg.re.diff=RegExp('[?&]diff=([^&]*)');
}
//<NOLITE>
//////////////////////////////////////////////////
// Image sources
function setImageSources() {
pg.wiki.imageSources=[];
// frequently seen thumbs
pg.wiki.imageSources.push(
{wiki: pg.wiki.hostname, thumb: true, width: 180}, // default
{wiki: pg.wiki.hostname, thumb: true, width: 120} // gallery
);
// frequently seen thumbs on commons
if (pg.wiki.commons) {
pg.wiki.imageSources.push(
{wiki: pg.wiki.commons, thumb: true, width: 180},
{wiki: pg.wiki.commons, thumb: true, width: 120}
);
}
// unusual thumb sizes and full-size
pg.wiki.imageSources.push(
{wiki: pg.wiki.hostname, thumb: true, width: 200}, // common?
{wiki: pg.wiki.hostname, thumb: true, width: 250}, // common?
{wiki: pg.wiki.hostname, thumb: true, width: 300},
{wiki: pg.wiki.hostname, thumb: true, width: 210},
{wiki: pg.wiki.hostname, thumb: true, width: 230},
{wiki: pg.wiki.hostname, thumb: false, width: 0} // no comma
);
// full-size on commons
if (pg.wiki.commons) {
pg.wiki.imageSources.push({wiki: pg.wiki.commons, thumb: false, width: 0});
}
}
//</NOLITE>
//////////////////////////////////////////////////
// miscellany
function setupCache() {
// page caching
pg.cache.pages = [];
pg.cache.images = [];
// global array for 404'ed image urls
pg.cache.badImageUrls=[];
}
function setMisc() {
pg.current.link=null;
pg.current.links=[];
pg.current.linksHash={};
// downloading images are put here
pg.misc.imageArray=[];
setupCache();
// FIXME what is this for?
pg.misc.gImage=null; // global for image
// check to see if images are done with this timer
pg.timer.image=null;
// These are for checkImages()
pg.counter.checkImages=0;
pg.timer.checkImages=null;
pg.timer.checkPopupPosition=null;
pg.counter.loop=0;
// ids change with each popup: popupImage0, popupImage1 etc
pg.idNumber=0;
// for myDecodeURI
pg.misc.decodeExtras = [
{from: '%2C', to: ',' },
{from: '_', to: ' ' },
{from: '%24', to: '$'},
{from: '%26', to: '&' } // no ,
];
}
function leadingInteger(s){
var n=s.match(/^(\d*)/)[1];
if (n) { return +n; }
return null;
}
function setBrowserHacks() {
var useOriginal=false;
// browser-specific hacks
if (typeof window.opera != 'undefined') {
//if (leadingInteger(opera.version()) < 9)
{ useOriginal=true; } // v9 beta still seems to have buggy css
setDefault('popupNavLinkSeparator', ' · ');
} else if (navigator.appName=='Konqueror') {
setDefault('popupNavLinkSeparator', ' • ');
pg.flag.isKonq=true;
} else if ( navigator.vendor && navigator.vendor.toLowerCase().indexOf('apple computer')===0) {
pg.flag.isSafari=true;
var webkit=+navigator.userAgent.replace(RegExp('^.*AppleWebKit[/](\\d+).*', 'i'), '$1');
if (webkit < 420) { useOriginal=true; }
} else if (navigator.appName.indexOf("Microsoft")!=-1) {
setDefault('popupNavLinkSeparator', ' · ');
useOriginal=true;
var ver=+navigator.userAgent.replace(RegExp('^.*MSIE (\\d+).*'), '$1');
pg.flag.isIE=true;
pg.flag.IEVersion=ver;
}
if (pg.flag.isIE && pg.flag.IEVersion < 7 || pg.flag.isKonq || pg.flag.isSafari) {
pg.flag.linksLikeIE6=true;
}
if (useOriginal && pg.structures.original) {
setDefault('popupStructure','original');
}
}
function setupPopups() {
// NB translatable strings should be set up first (strings.js)
// basics
setupDebugging();
setSiteInfo();
setTitleBase();
setOptions(); // see options.js
// namespaces etc
setNamespaces();
setInterwiki();
// regexps
setRegexps();
setRedirs();
// other stuff
window.setImageSources && setImageSources();
setBrowserHacks();
setMisc();
setupLivePreview();
// main deal here
setupTooltips();
Navpopup.tracker.enable();
setupPopups.completed = true;
}
// ENDFILE: init.js
// STARTFILE: navlinks.js
//<NOLITE>
//////////////////////////////////////////////////
// navlinks... let the fun begin
//
function defaultNavlinkSpec() {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
if (getValueOf('popupLastEditLink')) {
str += '*<<lastEdit|shortcut=/>>|<<lastContrib>>|<<sinceMe>>if(oldid){|<<oldEdit>>|<<diffCur>>}';
}
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>*<<userlog|shortcut=L|log>>';
str+='if(ipuser){*<<arin>>}if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>|<<blocklog|log>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{' + editstr + '}'
var historystr='<<history|shortcut=h>>if(mainspace_en){|<<editors|shortcut=E|>>}';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>*<<move|shortcut=m>>';
// admin links
str += 'if(admin){<br><<unprotect|unprotectShort>>|<<protect|shortcut=p>>|<<protectlog|log>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>|<<deletelog|log>>}';
return str;
}
function navLinksHTML (article, hint, params) { //oldid, rcid) {
var str = '<span class="popupNavLinks">' + defaultNavlinkSpec() + '</span>';
// BAM
return navlinkStringToHTML(str, article, params);
}
function expandConditionalNavlinkString(s,article,z,recursionCount) {
var oldid=z.oldid, rcid=z.rcid, diff=z.diff;
// nested conditionals (up to 10 deep) are ok, hopefully! (work from the inside out)
if (typeof recursionCount!=typeof 0) { recursionCount=0; }
var conditionalSplitRegex=RegExp(
//(1 if \\( (2 2) \\) {(3 3)} (4 else {(5 5)} 4)1)
'(;?\\s*if\\s*\\(\\s*([\\w]*)\\s*\\)\\s*\\{([^{}]*)\\}(\\s*else\\s*\\{([^{}]*?)\\}|))', 'i');
var splitted=s.parenSplit(conditionalSplitRegex);
// $1: whole conditional
// $2: test condition
// $3: true expansion
// $4: else clause (possibly empty)
// $5: false expansion (possibly null)
var numParens=5;
var ret = splitted[0];
for (var i=1; i<splitted.length; i=i+numParens+1) {
var testString=splitted[i+2-1];
var trueString=splitted[i+3-1];
var falseString=splitted[i+5-1];
if (typeof falseString=='undefined' || !falseString) { falseString=''; }
var testResult=null;
switch (testString) {
case 'user':
testResult=(article.userName())?true:false;
break;
case 'talk':
testResult=(article.talkPage())?false:true; // talkPage converts _articles_ to talkPages
break;
case 'admin':
testResult=getValueOf('popupAdminLinks')?true:false;
break;
case 'oldid':
testResult=(typeof oldid != 'undefined' && oldid)?true:false;
break;
case 'rcid':
testResult=(typeof rcid != 'undefined' && rcid)?true:false;
break;
case 'ipuser':
testResult=(article.isIpUser())?true:false;
break;
case 'mainspace_en':
testResult=isInMainNamespace(article) &&
pg.wiki.hostname=='en.wikipedia.org';
break;
case 'wikimedia':
testResult=(pg.wiki.wikimedia) ? true : false;
break;
case 'diff':
testResult=(typeof diff != 'undefined' && diff)?true:false;
break;
}
switch(testResult) {
case null: ret+=splitted[i]; break;
case true: ret+=trueString; break;
case false: ret+=falseString; break;
}
// append non-conditional string
ret += splitted[i+numParens];
}
if (conditionalSplitRegex.test(ret) && recursionCount < 10) {
return expandConditionalNavlinkString(ret,article,z,recursionCount+1);
}
return ret;
}
function navlinkStringToArray(s, article, params) {
s=expandConditionalNavlinkString(s,article,params);
var splitted=s.parenSplit(RegExp('<<(.*?)>>'));
var ret=[];
for (var i=0; i<splitted.length; ++i) {
if (i%2) { // i odd, so s is a tag
var t=new navlinkTag();
var ss=splitted[i].split('|');
t.id=ss[0];
for (var j=1; j<ss.length; ++j) {
var sss=ss[j].split('=');
if (sss.length>1) {
t[sss[0]]=sss[1];
}
else { // no assignment (no "="), so treat this as a title (overwriting the last one)
t.text=popupString(sss[0]);
}
}
t.article=article;
var oldid=params.oldid, rcid=params.rcid, diff=params.diff;
if (typeof oldid != 'undefined' && oldid != null) { t.oldid=oldid; }
if (typeof rcid != 'undefined' && rcid != null) { t.rcid=rcid; }
if (typeof diff != 'undefined' && diff != null) { t.diff=diff; }
if (!t.text && t.id != 'mainlink') { t.text=popupString(t.id); }
ret.push(t);
}
else { // plain HTML
ret.push(splitted[i]);
}
}
return ret;
}
function navlinkSubstituteHTML(s) {
return s.split('*').join(getValueOf('popupNavLinkSeparator'))
.split('<menurow>').join('<li class="popup_menu_row">')
.split('</menurow>').join('</li>')
.split('<menu>').join('<ul class="popup_menu">')
.split('</menu>').join('</ul>');
}
function navlinkDepth(magic,s) {
return s.split('<' + magic + '>').length - s.split('</' + magic + '>').length;
}
// navlinkString: * becomes the separator
// <<foo|bar=baz|fubar>> becomes a foo-link with attribute bar='baz'
// and visible text 'fubar'
// if(test){...} and if(test){...}else{...} work too (nested ok)
function navlinkStringToHTML(s,article,params) {
//limitAlert(navlinkStringToHTML, 5, 'navlinkStringToHTML\n' + article + '\n' + (typeof article));
var p=navlinkStringToArray(s,article,params);
var html='';
var menudepth = 0; // nested menus not currently allowed, but doesn't do any harm to code for it
var menurowdepth = 0;
var wrapping = null;
for (var i=0; i<p.length; ++i) {
if (typeof p[i] == typeof '') {
html+=navlinkSubstituteHTML(p[i]);
menudepth += navlinkDepth('menu', p[i]);
menurowdepth += navlinkDepth('menurow', p[i]);
// if (menudepth === 0) {
// tagType='span';
// } else if (menurowdepth === 0) {
// tagType='li';
// } else {
// tagType = null;
// }
} else if (typeof p[i].type != 'undefined' && p[i].type=='navlinkTag') {
if (menudepth > 0 && menurowdepth === 0) {
html += '<li class="popup_menu_item">' + p[i].html() + '</li>';
} else {
html+=p[i].html();
}
}
}
return html;
}
function navlinkTag() {
this.type='navlinkTag';
}
navlinkTag.prototype.html=function () {
this.getNewWin();
this.getPrintFunction();
var html='';
var opening, closing;
var tagType='span';
if (!tagType) {
opening = ''; closing = '';
} else {
opening = '<' + tagType + ' class="popup_' + this.id + '">';
closing = '</' + tagType + '>';
}
if (typeof this.print!='function') {
errlog ('Oh dear - invalid print function for a navlinkTag, id='+this.id);
} else {
html=this.print(this);
if (typeof html != typeof '') {html='';}
else if (typeof this.shortcut!='undefined') html=addPopupShortcut(html, this.shortcut);
}
return opening + html + closing;
};
navlinkTag.prototype.getNewWin=function() {
getValueOf('popupLinksNewWindow');
if (typeof pg.option.popupLinksNewWindow[this.id] === 'undefined') { this.newWin=null; }
this.newWin=pg.option.popupLinksNewWindow[this.id];
}
navlinkTag.prototype.getPrintFunction=function() { //think about this some more
// this.id and this.article should already be defined
if (typeof this.id!=typeof '' || typeof this.article!=typeof {} ) { return; }
var html='';
var a,t;
this.noPopup=1;
switch (this.id) {
case 'contribs': case 'history': case 'whatLinksHere':
if (!getValueOf('popupUseQueryInterface')) { break; }
case 'userPage': case 'monobook': case 'userTalk':
case 'talk': case 'article': case 'lastEdit':
this.noPopup=null;
}
switch (this.id) {
case 'email': case 'contribs': case 'block': case 'unblock':
case 'userlog': case 'userSpace':
this.article=this.article.userName();
}
switch (this.id) {
case 'userTalk': case 'newUserTalk': case 'editUserTalk':
case 'userPage': case 'monobook': case 'editMonobook': case 'blocklog':
this.article=this.article.userName(true);
// fall through; no break
case 'pagelog': case 'deletelog': case 'protectlog':
delete this.oldid;
}
if (this.id=='editMonobook' || this.id=='monobook') { this.article.append('/monobook.js'); }
if (this.id != 'mainlink') {
// FIXME anchor handling should be done differently with Title object
this.article=this.article.removeAnchor();
// if (typeof this.text=='undefined') this.text=popupString(this.id);
}
switch (this.id) {
case 'undelete': this.print=specialLink; this.specialpage='Undelete'; this.sep='/'; break;
case 'whatLinksHere': this.print=specialLink; this.specialpage='Whatlinkshere'; break;
case 'relatedChanges': this.print=specialLink; this.specialpage='Recentchangeslinked'; break;
case 'move': this.print=specialLink; this.specialpage='Movepage'; break;
case 'contribs': this.print=specialLink; this.specialpage='Contributions'; break;
case 'email': this.print=specialLink; this.specialpage='Emailuser'; break;
case 'block': this.print=specialLink; this.specialpage='Blockip'; this.sep='&ip='; break;
case 'unblock': this.print=specialLink; this.specialpage='Ipblocklist'; this.sep='&action=unblock&ip='; break;
case 'userlog': this.print=specialLink; this.specialpage='Log'; this.sep='&user='; break;
case 'blocklog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=block&page='; break;
case 'pagelog': this.print=specialLink; this.specialpage='Log'; this.sep='&page='; break;
case 'protectlog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=protect&page='; break;
case 'deletelog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=delete&page='; break;
case 'userSpace': this.print=specialLink; this.specialpage='Prefixindex'; this.sep='&namespace=2&from='; break;
case 'search': this.print=specialLink; this.specialpage='Search'; this.sep='&fulltext=Search&search='; break;
case 'history': case 'historyfeed': case 'unwatch': case 'watch':
case 'unprotect': case 'protect':
this.print=wikiLink; this.action=this.id; break;
case 'delete':
this.print=wikiLink; this.action='delete';
if (this.article.namespace()==pg.ns.image) {
var img=this.article.stripNamespace();
this.action+='&image='+img;
}
break;
case 'markpatrolled':
case 'edit': // editOld should keep the oldid, but edit should not.
delete this.oldid; // fall through
case 'view': case 'purge': case 'render':
this.print=wikiLink;
this.action=this.id; break;
case 'raw':
this.print=wikiLink; this.action='raw&ctype=text/css'; break;
case 'new':
this.print=wikiLink; this.action='edit§ion=new'; break;
case 'mainlink':
if (typeof this.text=='undefined') { this.text=this.article.toString().entify(); }
if (getValueOf('popupSimplifyMainLink') && isInStrippableNamespace(this.article)) {
var s=this.text.split('/'); this.text=s[s.length-1];
if (this.text=='' && s.length > 1) { this.text=s[s.length-2]; }
}
this.print=titledWikiLink;
if (typeof this.title=='undefined' && pg.current.link && typeof pg.current.link.href != 'undefined') {
this.title=safeDecodeURI((pg.current.link.originalTitle)?pg.current.link.originalTitle:this.article);
if (typeof this.oldid != 'undefined' && this.oldid) {
this.title=tprintf('Revision %s of %s', [this.oldid, this.title]);
}
}
this.action='view'; break;
case 'userPage':
case 'article':
case 'monobook':
case 'editMonobook':
case 'editArticle':
delete this.oldid;
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.article=this.article.articleFromTalkOrArticle();
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.print=wikiLink;
if (this.id.indexOf('edit')==0) {
this.action='edit';
} else { this.action='view';}
break;
case 'userTalk':
case 'talk':
this.article=this.article.talkPage();
delete this.oldid;
this.print=wikiLink;
this.action='view'; break;
case 'arin':
this.print=arinLink; break;
case 'count':
this.print=kateLink; break;
case 'google':
this.print=googleLink; break;
case 'contribsTree':
this.print=contribsTreeLink; break;
case 'editors':
this.print=editorListLink; break;
case 'globalsearch':
this.print=globalSearchLink; break;
case 'lastEdit':
this.print=titledDiffLink;
this.title=popupString('Show the last edit');
this.from='prev'; this.to='cur'; break;
case 'oldEdit':
this.print=titledDiffLink;
this.title=popupString('Show the edit made to get revision') + ' ' + this.oldid;
this.from='prev'; this.to=this.oldid; break;
case 'editOld':
this.print=wikiLink; this.action='edit'; break;
case 'undo':
this.print=wikiLink; this.action='edit&undo='; break;
case 'markpatrolled':
this.print=wikiLink; this.action='markpatrolled';
case 'revert':
this.print=wikiLink; this.action='revert'; break;
case 'nullEdit':
this.print=wikiLink; this.action='nullEdit'; break;
case 'diffCur':
this.print=titledDiffLink;
this.title=tprintf('Show changes since revision %s', [this.oldid]);
this.from=this.oldid; this.to='cur'; break;
case 'editUserTalk':
case 'editTalk':
delete this.oldid;
this.article=this.article.talkPage();
this.action='edit'; this.print=wikiLink; break;
case 'newUserTalk':
case 'newTalk':
this.article=this.article.talkPage();
this.action='edit§ion=new'; this.print=wikiLink; break;
case 'lastContrib':
case 'sinceMe':
this.print=magicHistoryLink;
break;
case 'togglePreviews':
this.text=popupString(pg.option.simplePopups ? 'enable previews' : 'disable previews');
case 'disablePopups': case 'purgePopups':
this.print=popupMenuLink;
break;
default:
this.print=function () {return 'Unknown navlink type: '+this.id+''};
}
};
//
// end navlinks
//////////////////////////////////////////////////
//</NOLITE>
// ENDFILE: navlinks.js
// STARTFILE: shortcutkeys.js
//<NOLITE>
function popupHandleKeypress(evt) {
var keyCode = window.event ? window.event.keyCode : ( evt.keyCode ? evt.keyCode : evt.which);
if (!keyCode || !pg.current.link || !pg.current.link.navpopup) { return; }
if (keyCode==27) { // escape
killPopup();
return false; // swallow keypress
}
var letter=String.fromCharCode(keyCode);
var links=pg.current.link.navpopup.mainDiv.getElementsByTagName('A');
var startLink=0;
var i,j;
if (popupHandleKeypress.lastPopupLinkSelected) {
for (i=0; i<links.length; ++i) {
if (links[i]==popupHandleKeypress.lastPopupLinkSelected) { startLink=i; }
}
}
for (j=0; j<links.length; ++j) {
i=(startLink + j + 1) % links.length;
if (links[i].getAttribute('popupkey')==letter) {
if (evt && evt.preventDefault) evt.preventDefault();
links[i].focus();
popupHandleKeypress.lastPopupLinkSelected=links[i];
return false; // swallow keypress
}
}
// pass keypress on
if (document.oldPopupOnkeypress) { return document.oldPopupOnkeypress(evt); }
return true;
}
function addPopupShortcuts() {
if (document.onkeypress!=popupHandleKeypress) {
document.oldPopupOnkeypress=document.onkeypress;
}
document.onkeypress=popupHandleKeypress;
}
function rmPopupShortcuts() {
popupHandleKeypress.lastPopupLinkSelected=null;
try {
if (document.oldPopupOnkeypress && document.oldPopupOnkeypress==popupHandleKeypress) {
// panic
document.onkeypress=null; //function () {};
return;
}
document.onkeypress=document.oldPopupOnkeypress;
} catch (nasties) { /* IE goes here */ }
}
function addLinkProperty(html, property) {
// take "<a href=...>...</a> and add a property
// not sophisticated at all, easily broken
var i=html.indexOf('>');
if (i<0) { return html; }
return html.substring(0,i) + ' ' + property + html.substring(i);
}
function addPopupShortcut(html, key) {
if (!getValueOf('popupShortcutKeys')) { return html; }
var ret= addLinkProperty(html, 'popupkey="'+key+'"');
if (key==' ') { key=popupString('spacebar'); }
return ret.replace(RegExp('^(.*?)(title=")(.*?)(".*)$', 'i'),'$1$2$3 ['+key+']$4');
}
//</NOLITE>
// ENDFILE: shortcutkeys.js
// STARTFILE: diffpreview.js
//<NOLITE>
function loadDiff(article, oldid, diff, navpop) {
navpop.diffData={};
var oldRev, newRev;
switch (diff) {
case 'cur':
switch ( oldid ) {
case null:
case '':
case 'prev':
// eg newmessages diff link
oldRev='0&direction=prev';
newRev=0;
break;
default:
oldRev = oldid;
newRev = 0;
}
break;
case 'prev':
oldRev = ( oldid || 0 ) + '&direction=prev'; newRev = oldid; break;
case 'next':
oldRev = oldid; newRev = oldid + '&direction=next';
break;
default:
oldRev = oldid || 0; newRev = diff || 0; break;
}
oldRev = oldRev || 0;
newRev = newRev || 0;
var go = function() {
pendingNavpopTask(navpop);
getWiki(article, doneDiffNew, newRev, navpop);
pendingNavpopTask(navpop);
getWiki(article, doneDiffOld, oldRev, navpop);
var tz = Cookie.read('popTz');
if (getValueOf('popupUseQueryInterface') && getValueOf('popupAdjustDiffDates') && tz===null) {
pendingNavpopTask(navpop);
getPageWithCaching(pg.wiki.wikibase + '/query.php?format=json&what=userinfo&uioptions=timecorrection',
function(d) {
completedNavpopTask(navpop);
setTimecorrectionCookie(d);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}, navpop);
}
return true; // remove hook once run
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_DIFFS'); }
}
function setTimecorrectionCookie(d) {
Cookie.create('popTz', getTimeOffset(getJsObj(d.data).meta.user.timecorrection), 1);
}
function doneDiff(download, isOld) {
if (!download.owner || !download.owner.diffData) { return; }
var navpop=download.owner;
var label= (isOld) ? 'Old' : 'New';
var otherLabel=(isOld) ? 'New' : 'Old';
navpop.diffData[label]=download;
completedNavpopTask(download.owner);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}
function diffDownloadsComplete(navpop) {
if (getValueOf('popupUseQueryInterface') && Cookie.read('popTz')===null) { return false; }
return navpop.diffData.Old && navpop.diffData.New;
}
function doneDiffNew(download) { doneDiff(download, false); }
function doneDiffOld(download) { doneDiff(download, true); }
function rmBoringLines(a,b,context) {
if (typeof context == 'undefined') { context=2; }
// this is fairly slow... i think it's quicker than doing a word-based diff from the off, though
var aa=[], aaa=[];
var bb=[], bbb=[];
var i, j;
// first, gather all disconnected nodes in a and all crossing nodes in a and b
for (i=0; i<a.length; ++i ) {
if(!a[i].paired) { aa[i]=1; }
else if (countCrossings(b,a,i, true)) {
aa[i]=1;
bb[ a[i].row ] = 1;
}
}
// pick up remaining disconnected nodes in b
for (i=0; i<b.length; ++i ) {
if (bb[i]==1) { continue; }
if(!b[i].paired) { bb[i]=1; }
}
// another pass to gather context: we want the neighbours of included nodes which are not yet included
// we have to add in partners of these nodes, but we don't want to add context for *those* nodes in the next pass
for (i=0; i<b.length; ++i) {
if ( bb[i] == 1 ) {
for (j=max(0,i-context); j < min(b.length, i+context); ++j) {
if ( !bb[j] ) { bb[j] = 1; aa[ b[j].row ] = 0.5; }
}
}
}
for (i=0; i<a.length; ++i) {
if ( aa[i] == 1 ) {
for (j=max(0,i-context); j < min(a.length, i+context); ++j) {
if ( !aa[j] ) { aa[j] = 1; bb[ a[j].row ] = 0.5; }
}
}
}
for (i=0; i<bb.length; ++i) {
if (bb[i] > 0) { // it's a row we need
if (b[i].paired) { bbb.push(b[i].text); } // joined; partner should be in aa
else {
bbb.push(b[i]);
}
}
}
for (i=0; i<aa.length; ++i) {
if (aa[i] > 0) { // it's a row we need
if (a[i].paired) { aaa.push(a[i].text); } // joined; partner should be in aa
else {
aaa.push(a[i]);
}
}
}
return { a: aaa, b: bbb};
}
function stripOuterCommonLines(a,b,context) {
var i=0;
while (i<a.length && i < b.length && a[i]==b[i]) { ++i; }
var j=a.length-1; var k=b.length-1;
while ( j>=0 && k>=0 && a[j]==b[k] ) { --j; --k; }
return { a: a.slice(max(0,i - 1 - context), min(a.length+1, j + context+1)),
b: b.slice(max(0,i - 1 - context), min(b.length+1, k + context+1)) };
}
function insertDiff(navpop) {
// for speed reasons, we first do a line-based diff, discard stuff that seems boring, then do a word-based diff
// FIXME: sometimes this gives misleading diffs as distant chunks are squashed together
var oldlines=navpop.diffData.Old.data.split('\n');
var newlines=navpop.diffData.New.data.split('\n');
var inner=stripOuterCommonLines(oldlines,newlines,getValueOf('popupDiffContextLines'));
oldlines=inner.a; newlines=inner.b;
var truncated=false;
getValueOf('popupDiffMaxLines');
if (oldlines.length > pg.option.popupDiffMaxLines || newlines.length > pg.option.popupDiffMaxLines) {
// truncate
truncated=true;
inner=stripOuterCommonLines(oldlines.slice(0,pg.option.popupDiffMaxLines),
newlines.slice(0,pg.option.popupDiffMaxLines),
pg.option.popupDiffContextLines);
oldlines=inner.a; newlines=inner.b;
}
var lineDiff=diff(oldlines, newlines);
var lines2=rmBoringLines(lineDiff.o, lineDiff.n);
var oldlines2=lines2.a; var newlines2=lines2.b;
var simpleSplit = !String.prototype.parenSplit.isNative;
var html='<hr>';
if (getValueOf('popupDiffDates')) {
html += diffDatesTable(navpop.diffData.Old, navpop.diffData.New);
html += '<hr>';
}
html += shortenDiffString(
diffString(oldlines2.join('\n'), newlines2.join('\n'), simpleSplit),
getValueOf('popupDiffContextCharacters') ).join('<hr>');
setPopupTipsAndHTML(html.split('\n').join('<br>') +
(truncated ? '<hr><b>'+popupString('Diff truncated for performance reasons')+'</b>' : '') ,
'popupPreview', navpop.idNumber);
}
function diffDatesTable( oldDl, newDl ) {
var html='<table class="popup_diff_dates">';
html += diffDatesTableRow( newDl, tprintf('New revision'));
html += diffDatesTableRow( oldDl, tprintf('Old revision'));
html += '</table>';
return html;
}
function diffDatesTableRow( dl, label ) {
var txt='';
if (!dl) {
txt=popupString('Something went wrong :-(');
} else if (!dl.lastModified) {
txt= (/^\s*$/.test(dl.data)) ?
popupString('Empty revision, maybe non-existent') : popupString('Unknown date');
} else {
var datePrint=getValueOf('popupDiffDatePrinter');
if (typeof dl.lastModified[datePrint] == 'function') {
if (getValueOf('popupAdjustDiffDates')) {
var off;
if (off=Cookie.read('popTz')) {
var d2=adjustDate(dl.lastModified, off);
txt = dayFormat(d2, true) + ' ' + timeFormat(d2, true);
}
} else {
txt = dl.lastModified[datePrint]();
}
} else {
txt = tprintf('Invalid %s %s', ['popupDiffDatePrinter', datePrint]);
}
}
var revlink = generalLink({url: dl.url.replace(/&.*?(oldid=[0-9]+(?:&direction=[^&]*)?).*/, '&$1'),
text: label, title: label});
return simplePrintf('<tr><td>%s</td><td>%s</td></tr>', [ revlink, txt ]);
}
//</NOLITE>
// ENDFILE: diffpreview.js
// STARTFILE: links.js
//<NOLITE>
/////////////////////
// LINK GENERATION //
/////////////////////
// titledDiffLink --> titledWikiLink --> generalLink
// wikiLink --> titledWikiLink --> generalLink
// kateLink --> generalLink
function titledDiffLink(l) { // article, text, title, from, to) {
return titledWikiLink({article: l.article, action: l.to + '&oldid=' + l.from,
newWin: l.newWin,
noPopup: l.noPopup,
text: l.text, title: l.title,
/* hack: no oldid here */
actionName: 'diff'});
}
function wikiLink(l) {
//{article:article, action:action, text:text, oldid, newid}) {
if (! (typeof l.article == typeof {}
&& typeof l.action == typeof '' && typeof l.text==typeof '')) return null;
if (typeof l.oldid == 'undefined') l.oldid=null;
if (!/^((edit|view|revert|render)$|(raw))/.test(l.action)) { l.oldid=null; }
var hint=popupString(l.action + 'Hint'); // revertHint etc etc etc
var oldidData=[l.oldid, safeDecodeURI(l.article)];
var revisionString = tprintf('revision %s of %s', oldidData);
log('revisionString='+revisionString);
switch (l.action) {
case 'edit§ion=new': hint = popupString('newSectionHint'); break;
case 'edit&undo=':
l.action += l.diff; hint = popupString('undoHint');
break;
case 'raw&ctype=text/css': hint=popupString('rawHint'); break;
case 'revert':
var p=parseParams(pg.current.link.href);
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=' + revertSummary(l.oldid, p.diff);
if (p.diff=='prev') {
l.action += '&direction=prev';
revisionString = tprintf('the revision prior to revision %s of %s', oldidData);
}
if (getValueOf('popupRevertSummaryPrompt')) { l.action += '&autosummaryprompt=true'; }
if (getValueOf('popupMinorReverts')) { l.action += '&autominor=true'; }
log('revisionString is now '+revisionString);
break;
case 'nullEdit':
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=null';
break;
case 'historyfeed':
l.action='history&feed=rss';
break;
case 'markpatrolled':
l.action='markpatrolled&rcid='+l.rcid;
}
if (hint) {
if (l.oldid) {
hint = simplePrintf(hint, [revisionString]);
}
else {
hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
}
}
else {
hint = safeDecodeURI(l.article + '&action=' + l.action) + (l.oldid) ? '&oldid='+l.oldid : '';
}
return titledWikiLink({article: l.article, action: l.action, text: l.text, newWin:l.newWin,
title: hint, oldid: l.oldid, noPopup: l.noPopup});
}
function revertSummary(oldid, diff) {
if (getValueOf('popupUseQueryInterface')) { return revertSummaryQueried(oldid, diff); }
if (typeof getValueOf('popupTimeOffset') == 'number' && /[?&]action=history/.test(document.location.href)) {
var links=document.links;
var numlinks=links.length;
var date=null, editor=null;
var dateRe = RegExp('^([0-9]{2}:[0-9]{2}),\s*(.*[1-3][0-9]{3})$');
for (var i=0; i<numlinks-1; ++i) {
if (RegExp('oldid='+oldid).test(links[i].href) && dateRe.test(links[i].innerHTML)) {
// help konqueror out by putting the time at the end
var ds = links[i].innerHTML.replace(dateRe, '$2 $1');
// d is parsed according to current locale, in FF at least
// this is only OK if the user has set the time offset in prefs!
var d=new Date(+(new Date(ds)) - 1000*3600*getValueOf('popupTimeOffset'));
// strip out zero seconds and timezone in date, since they're prolly bogus
date=d.toString().replace(/([0-9]{2}:[0-9]{2}):00.*/, '$1');
editor=Title.fromURL(links[i+1].href).userName();
break;
}
}
if (date && editor && diff != 'prev') {
return simplePrintf(getValueOf('popupExtendedRevertSummary'), [date, editor, oldid]);
}
}
if (diff != 'prev') {
return simplePrintf(getValueOf('popupRevertSummary'), [ oldid ]);
}
return simplePrintf(getValueOf('popupRevertToPreviousSummary'), [ oldid ]);
}
function revertSummaryQueried(oldid, diff) {
var ret='';
if (diff == 'prev') {
ret=getValueOf('popupQueriedRevertToPreviousSummary');
} else { ret = getValueOf('popupQueriedRevertSummary'); }
return ret + '&autorv=' + oldid;
}
function titledWikiLink(l) {
// possible properties of argument:
// article, action, text, title, oldid, actionName, className, noPopup
// oldid = null is fine here
// article and action are mandatory args
if (typeof l.article == 'undefined' || typeof l.action=='undefined') {
errlog('got undefined article or action in titledWikiLink');
return null;
}
var base = pg.wiki.titlebase + l.article.urlString();
var url=base;
if (typeof l.actionName=='undefined' || !l.actionName) { l.actionName='action'; }
// no need to add &action=view, and this confuses anchors
if (l.action != 'view') { url = base + '&' + l.actionName + '=' + l.action; }
if (typeof l.oldid!='undefined' && l.oldid) { url+='&oldid='+l.oldid; }
var cssClass=pg.misc.defaultNavlinkClassname;
if (typeof l.className!='undefined' && l.className) { cssClass=l.className; }
return generalNavLink({url: url, newWin: l.newWin,
title: (typeof l.title != 'undefined') ? l.title : null,
text: (typeof l.text!='undefined')?l.text:null,
className: cssClass, noPopup:l.noPopup});
}
function getLastContrib(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processLastContribInfo(x,{page: wikipage, newWin: newWin})});
}
function processLastContribInfo(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: an odd thing happened. Please retry.'); return; }
if(!info.firstNewEditor) {
alert(tprintf('Only found one editor: %s made %s edits', [info.edits[0].editor,info.edits.length]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+info.firstNewEditor.oldid;
displayUrl(newUrl, stuff.newWin);
}
function getDiffSinceMyEdit(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processDiffSinceMyEdit(x,{page: wikipage, newWin: newWin})});
}
function processDiffSinceMyEdit(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: something fishy happened. Please try again.'); return; }
var friendlyName=stuff.page.split('_').join(' ');
if(!info.myLastEdit) {
alert(tprintf('Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
[info.userName, getValueOf('popupHistoryLimit'), friendlyName]));
return;
}
if(info.myLastEdit.index==0) {
alert(tprintf("%s seems to be the last editor to the page %s", [info.userName, friendlyName]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+ info.myLastEdit.oldid;
displayUrl(newUrl, stuff.newWin);
}
function displayUrl(url, newWin){
if(newWin) { window.open(url); }
else { document.location=url; }
}
function purgePopups() {
processAllPopups(true);
setupCache(); // deletes all cached items (not browser cached, though...)
pg.option={};
abortAllDownloads();
}
function processAllPopups(nullify, banish) {
for (var i=0; i<pg.current.links.length; ++i) {
if (!pg.current.links[i].navpopup) { continue; }
(nullify || banish) && pg.current.links[i].navpopup.banish();
nullify && (pg.current.links[i].navpopup=null);
}
}
function disablePopups(){
processAllPopups(false, true);
setupTooltips(null, true);
}
function togglePreviews() {
processAllPopups(true, true);
pg.option.simplePopups=!pg.option.simplePopups;
abortAllDownloads();
}
function magicHistoryLink(l) {
// FIXME use onclick change href trick to sort this out instead of window.open
var jsUrl='', title='';
switch(l.id) {
case 'lastContrib':
jsUrl=simplePrintf('javascript:getLastContrib(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('lastContribHint');
break;
case 'sinceMe':
jsUrl=simplePrintf('javascript:getDiffSinceMyEdit(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('sinceMeHint');
break;
}
return generalNavLink({url: jsUrl, newWin: false, // can't have new windows with JS links, I think
title: title, text: l.text, noPopup: l.noPopup});
}
function popupMenuLink(l) {
var jsUrl=simplePrintf('javascript:%s()', [l.id]);
var title=popupString(simplePrintf('%sHint', [l.id]));
return generalNavLink({url: jsUrl, newWin:false, title:title, text:l.text, noPopup:l.noPopup});
}
function specialLink(l) {
// properties: article, specialpage, text, sep
if (typeof l.specialpage=='undefined'||!l.specialpage) return null;
var base = pg.wiki.titlebase + pg.ns.special+':'+l.specialpage;
if (typeof l.sep == 'undefined' || l.sep===null) l.sep='&target=';
var article=l.article.urlString({keepSpaces: l.specialpage=='Search'});
var hint=popupString(l.specialpage+'Hint');
switch (l.specialpage) {
case 'Log':
switch (l.sep) {
case '&user=': hint=popupString('userLogHint'); break;
case '&type=block&page=': hint=popupString('blockLogHint'); break;
case '&page=': hint=popupString('pageLogHint'); break;
case '&type=protect&page=': hint=popupString('protectLogHint'); break;
case '&type=delete&page=': hint=popupString('deleteLogHint'); break;
default: log('Unknown log type, sep=' + l.sep); hint='Missing hint (FIXME)';
}
break;
case 'Prefixindex': article += '/'; break;
}
if (hint) hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
else hint = safeDecodeURI(l.specialpage+':'+l.article) ;
var url = base + l.sep + article;
return generalNavLink({url: url, title: hint, text: l.text, newWin:l.newWin, noPopup:l.noPopup});
}
function generalLink(l) {
// l.url, l.text, l.title, l.newWin, l.className, l.noPopup
if (typeof l.url=='undefined') return null;
// only quotation marks in the url can screw us up now... I think
var url=l.url.split('"').join('%22');
var ret='<a href="' + url + '"';
if (typeof l.title!='undefined' && l.title) { ret += ' title="' + l.title + '"'; }
if (l.noPopup) { ret += ' noPopup=1'; }
var newWin;
if (typeof l.newWin=='undefined' || l.newWin===null) { newWin=getValueOf('popupNewWindows'); }
else { newWin=l.newWin; }
if (newWin) { ret += ' target="_blank"'; }
if (typeof l.className!='undefined'&&l.className) { ret+=' class="'+l.className+'"'; }
ret += '>';
if (typeof l.text==typeof '') { ret+= l.text; }
ret +='</a>';
return ret;
}
function appendParamsToLink(linkstr, params) {
var sp=linkstr.parenSplit(RegExp('(href="[^"]+?)"', 'i'));
if (sp.length<2) return null;
var ret=sp.shift() + sp.shift();
ret += '&' + params + '"';
ret += sp.join('');
return ret;
}
function changeLinkTargetLink(x) { // newTarget, text, hint, summary, clickButton, minor, title (optional) {
if (x.newTarget) {
log ('changeLinkTargetLink: newTarget=' + x.newTarget);
}
// optional: oldTarget (in wikitext)
// if x.newTarget omitted or null, remove the link
//x.text=encodeURI(x.text); // this buggers things up on zh.wikipedia.org and doesn't seem necessary
x.clickButton=encodeURI(x.clickButton);
// FIXME: first character of page title as well as namespace should be case insensitive
// eg [[category:foo]] and [[Category:Foo]] are equivalent
// this'll break if charAt(0) is nasty
var cA=literalizeRegex(x.oldTarget);
var chs=cA.charAt(0).toUpperCase();
chs='['+chs + chs.toLowerCase()+']';
var currentArticleRegexBit=chs+cA.substring(1);
currentArticleRegexBit=currentArticleRegexBit
.split(RegExp('[_ ]+', 'g')).join('[_ ]+')
.split('\\(').join('(?:%2528|\\()')
.split('\\)').join('(?:%2529|\\))');
// leading and trailing space should be ignored, and anchor bits optional:
currentArticleRegexBit = '\\s*(' + currentArticleRegexBit + '(?:#[^\\[\\|]*)?)\\s*';
// e.g. Computer (archaic) -> \s*([Cc]omputer[_ ](?:%2528|\()archaic(?:%2528|\)))\s*
// autoedit=s~\[\[([Cc]ad)\]\]~[[Computer-aided%20design|$1]]~g;s~\[\[([Cc]AD)[|]~[[Computer-aided%20design|~g
var title=x.title || wgPageName.split('_').join(' ');
var lk=titledWikiLink({article: new Title(title), newWin:x.newWin,
action: 'edit',
text: x.text,
title: x.hint,
className: 'popup_change_title_link'
});
var cmd='';
if (x.newTarget) {
// escape '&' and other nasties
var t=encodeURI(x.newTarget);
var s=encodeURI(literalizeRegex(x.newTarget));
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~[['+t+'|$1]]~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|]~[['+t+'|~g;';
cmd += 's~\\[\\['+s + '\\|' + s + '\\]\\]~[[' + t + ']]~g';
} else {
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~$1~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|](.*?)\\]\\]~$2~g';
}
cmd += '&autoclick='+x.clickButton + '&actoken=' + autoClickToken();
cmd += ( x.minor == null ) ? '' : '&autominor='+x.minor;
cmd += ( x.watch == null ) ? '' : '&autowatch='+x.watch;
cmd += '&autosummary='+x.summary;
return appendParamsToLink(lk, 'autoedit='+cmd);
}
function redirLink(redirMatch, article) {
// NB redirMatch is in wikiText
var ret='';
if (getValueOf('popupAppendRedirNavLinks') && getValueOf('popupNavLinks')) {
ret += '<hr>';
if (getValueOf('popupFixRedirs') && typeof autoEdit != 'undefined' && autoEdit) {
log('redirLink: newTarget=' + redirMatch);
ret += addPopupShortcut(
changeLinkTargetLink(
{newTarget: redirMatch, text: popupString('Redirects'),
hint: popupString('Fix this redirect'),
summary: simplePrintf(getValueOf('popupFixRedirsSummary'),
[article.toString(), redirMatch ]),
oldTarget: article.toString(),
clickButton: getValueOf('popupRedirAutoClick'), minor: true,
watch: getValueOf('popupWatchRedirredPages')})
, 'R');
ret += popupString(' to ');
}
else ret += popupString('Redirects') + popupString(' to ');
return ret;
}
else return '<br> ' + popupString('Redirects') + popupString(' to ') +
titledWikiLink({article: new Title().fromWikiText(redirMatch), action: 'view', /* FIXME: newWin */
text: safeDecodeURI(redirMatch), title: popupString('Bypass redirect')});
}
function arinLink(l) {
if (!saneLinkCheck(l)) { return null; }
if ( ! l.article.isIpUser() || ! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
return generalNavLink({url:'http://ws.arin.net/cgi-bin/whois.pl?queryinput=' + escape(uN), newWin:l.newWin,
title: tprintf('Look up %s in ARIN whois database', [uN]),
text: l.text, noPopup:1});
}
function toolDbName(cookieStyle) {
var ret=null;
var theWiki=pg.wiki.hostname.split('.')[1];
if (pg.wiki.hostname==pg.wiki.commons) {
ret = 'commonswiki';
} else {
switch(theWiki) {
case 'wikipedia':
case 'wikimedia':
ret = pg.wiki.lang + 'wiki';
break;
default:
ret = pg.wiki.lang + theWiki;
break;
}
}
if (!cookieStyle) { ret+= '_p'; }
return ret;
}
function saneLinkCheck(l) {
if (typeof l.article != typeof {} || typeof l.text != typeof '') { return false; }
return true;
}
function kateLink(l) {
if(!saneLinkCheck(l)) return null;
if (! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
var tool=getValueOf('popupEditCounterTool');
var url;
var defaultToolUrl='http://tools.wikimedia.de/~$3/cgi-bin/count_edits?dbname=$2&user=$1';
switch(tool) {
case 'custom':
url=simplePrintf(getValueOf('popupEditCounterUrl'), [ escape(uN), toolDbName() ]);
break;
default:
url=simplePrintf(defaultToolUrl, [ escape(uN), toolDbName(), tool ]);
}
return generalNavLink({url:url, title: tprintf('katelinkHint', [uN]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function contribsTreeLink(l) {
if(!saneLinkCheck(l)) return null;
if (! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
var url='http://tools.wikimedia.de/~interiot/cgi-bin/contribution_tree?dbname=';
url += toolDbName() + '&user='+ escape(uN);
return generalNavLink({url:url, title: tprintf('contribsTreeHint', [uN]), newWin:l.newWin, text: l.text,
noPopup:1});
}
function globalSearchLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + article, newWin:l.newWin,
title: tprintf('globalSearchHint', [article]),
text: l.text, noPopup:1});
}
function googleLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://www.google.com/search?q=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + '%22' + article + '%22', newWin:l.newWin,
title: tprintf('googleSearchHint', [article]),
text: l.text, noPopup:1});
}
function editorListLink(l) {
if(!saneLinkCheck(l)) return null;
var article= l.article.articleFromTalkPage() || l.article;
var base='http://tools.wikimedia.de/~tim/counter/?page=';
return generalNavLink({url:base+article.urlString(),
title: tprintf('editorListHint', [article]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function generalNavLink(l) {
l.className = (l.className==null) ? 'popupNavLink' : l.className;
return generalLink(l);
}
//////////////////////////////////////////////////
// magic history links
//
function getHistoryInfo(wikipage, whatNext) {
log('getHistoryInfo');
getHistory(wikipage, whatNext ? function(d){whatNext(processHistory(d));} : processHistory);
}
// FIXME eliminate pg.idNumber ... how? :-(
function getHistory(wikipage, onComplete) {
log('getHistory');
var url;
if (getValueOf('popupUseQueryInterface')) {
url = pg.wiki.wikibase + '/query.php?format=json&what=revisions&titles=' +
new Title(wikipage).urlString() + '&rvlimit=' + getValueOf('popupHistoryLimit');
} else {
url = pg.wiki.titlebase + new Title(wikipage).urlString() +
'&action=history' + '&limit=' + getValueOf('popupHistoryLimit');
}
log('getHistory: url='+url);
return startDownload(url, pg.idNumber+'history', onComplete);
}
function processHistory(download) {
if (getValueOf('popupUseQueryInterface')) {
return processHistoryQuery(download);
}
return processHistoryScreenScrape(download);
}
function processHistoryScreenScrape(download) {
// screen scrape alert
var d=download.data;
// pg.misc.data=d; // for debugging
var edits=[];
var split=d.split('<li>');
for (var i=0; i<split.length; ++i) {
var histRe=RegExp(
'^[(].*?type="radio" value="([0-9]*)".*?class=\'history-user\'>' +
'<a href="(/wiki/User:|/w/index.php[?]title=(Special:Contributions&target=|User:))([^&"]*)');
var match=histRe.exec(split[i]);
if (match) {
edits.push({ oldid: match[1], editor: match[4] });
}
}
var userName=getValueOf('popupUserName') ||
Cookie.read(pg.wiki.userNameCookie).split('+').join('_');
return finishProcessHistory(edits, userName);
}
function processHistoryQuery(download) {
log ('processHistoryQuery');
var d=download.data;
log('d='+d);
var jsobj;
try {
log('trying to parse JSON');
log('jsobj=' + d);
eval('jsobj=' + d);
log('done eval; jsobj='+jsobj);
window.x=jsobj;
var p=jsobj['pages'];
log('got p');
for (var pageid in p) {
var revisions=p[pageid]['revisions'];
// we only get the first one
break;
}
log('got revisions');
log(revisions.length +' of them');
} catch (someError) {
log('Something went wrong with JSON business');
return finishProcessHistory([]);
}
var edits=[];
for (var i=0; i<revisions.length; ++i) {
edits.push({ oldid: revisions[i]['revid'], editor: revisions[i]['user'] });
}
log('processed ' + edits.length + ' edits');
var userName=getValueOf('popupUserName') ||
unescape(Cookie.read(pg.wiki.userNameCookie).split('+').join(' '));
return finishProcessHistory(edits, userName);
}
function finishProcessHistory(edits, userName) {
var histInfo={};
histInfo.edits=edits;
histInfo.userName=userName;
for (var i=0; i<edits.length; ++i) {
if (typeof histInfo.myLastEdit == 'undefined' && userName && edits[i].editor==userName) {
histInfo.myLastEdit={index: i, oldid: edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
if (typeof histInfo.firstNewEditor == 'undefined' && edits[i].editor != edits[0].editor) {
histInfo.firstNewEditor={index:i, oldid:edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
}
//pg.misc.historyInfo=histInfo;
return histInfo;
}
//</NOLITE>
// ENDFILE: links.js
// STARTFILE: options.js
//////////////////////////////////////////////////
// options
// check for cookies and existing value, else use default
function defaultize(x) {
var val=null;
if (x!='popupCookies') {
defaultize('popupCookies');
if (pg.option.popupCookies && (val=Cookie.read(x))) {
pg.option[x]=val;
return;
}
}
if (pg.option[x]===null || typeof pg.option[x]=='undefined') {
if (typeof window[x] != 'undefined' ) pg.option[x]=window[x];
else pg.option[x]=pg.optionDefault[x];
}
}
function newOption(x, def) {
pg.optionDefault[x]=def;
}
function setDefault(x, def) {
return newOption(x, def);
}
function getValueOf(varName) {
defaultize(varName);
return pg.option[varName];
}
function useDefaultOptions() { // for testing
for (var p in pg.optionDefault) {
pg.option[p]=pg.optionDefault[p];
if (typeof window[p]!='undefined') { delete window[p]; }
}
}
function setOptions() {
// user-settable parameters and defaults
// Basic options
newOption('popupDelay', 0.5);
newOption('popupHideDelay', 0.5);
newOption('simplePopups', false);
newOption('popupStructure', 'shortmenus'); // see later - default for popupStructure is 'original' if simplePopups is true
newOption('popupActionsMenu', true);
newOption('popupSetupMenu', true);
newOption('popupAdminLinks', false);
newOption('popupShortcutKeys', false);
newOption('popupHistoricalLinks', true);
newOption('popupOnlyArticleLinks', true);
newOption('removeTitles', true);
newOption('popupMaxWidth', 350);
newOption('popupInitialWidth', false); // integer or false
newOption('popupSimplifyMainLink', true);
newOption('popupAppendRedirNavLinks', true);
newOption('popupTocLinks', false);
newOption('popupSubpopups', true);
newOption('popupUserName', ''); // should be magically detected with cookies if this isn't set
newOption('popupDragHandle', false /* 'popupTopLinks'*/);
newOption('popupLazyPreviews', true);
newOption('popupLazyDownloads', true);
newOption('popupAllDabsStubs', false);
newOption('popupDebugging', false);
newOption('popupAdjustDiffDates', true);
newOption('popupActiveNavlinks', true);
newOption('popupModifier', false); // ctrl, shift, alt or meta
//<NOLITE>
// images
newOption('popupImages', true);
newOption('imagePopupsForImages', true);
newOption('popupNeverGetThumbs', false);
newOption('popupImagesFromThisWikiOnly', false);
newOption('popupMinImageWidth', 50);
newOption('popupLoadImagesSequentially', false);
//newOption('popupImagesToggleSize', true);
newOption('popupThumbAction', 'imagepage'); //'sizetoggle');
newOption('popupImageSize', 60);
newOption('popupShowNonCommonsImages', false);
// redirs, dabs, reversion
newOption('popupFixRedirs', false);
newOption('popupRedirAutoClick', 'wpDiff');
newOption('popupFixDabs', false);
newOption('popupRevertSummaryPrompt', false);
newOption('popupMinorReverts', false);
newOption('popupRedlinkRemoval', false);
newOption('popupWatchDisambiggedPages', null);
newOption('popupWatchRedirredPages', null);
// navlinks
newOption('popupNavLinks', true);
newOption('popupNavLinkSeparator', ' ⋅ ');
newOption('popupLastEditLink', true);
newOption('popupEditCounterTool', 'interiot');
newOption('popupEditCounterUrl', '');
newOption('popupExtraUserMenu', '');
//</NOLITE>
// previews etc
newOption('popupPreviews', true);
newOption('popupSummaryData', true);
newOption('popupMaxPreviewSentences', 5);
newOption('popupMaxPreviewCharacters', 600);
newOption('popupLastModified', true);
newOption('popupPreviewKillTemplates', true);
newOption('popupPreviewRawTemplates', false);
newOption('popupPreviewFirstParOnly', true);
newOption('popupPreviewCutHeadings', true);
//<NOLITE>
// diffs
newOption('popupPreviewDiffs', true);
newOption('popupDiffMaxLines', 100);
newOption('popupDiffContextLines', 2);
newOption('popupDiffContextCharacters', 40);
newOption('popupDiffDates', true);
newOption('popupDiffDatePrinter', 'toLocaleString');
// edit summaries. God, these are ugly.
newOption('popupFixDabsSummary', popupString('defaultpopupFixDabsSummary') );
newOption('popupExtendedRevertSummary', popupString('defaultpopupExtendedRevertSummary') );
newOption('popupTimeOffset', null);
newOption('popupRevertSummary', popupString('defaultpopupRevertSummary') );
newOption('popupRevertToPreviousSummary', popupString('defaultpopupRevertToPreviousSummary') );
newOption('popupQueriedRevertSummary', popupString('defaultpopupQueriedRevertSummary') );
newOption('popupQueriedRevertToPreviousSummary', popupString('defaultpopupQueriedRevertToPreviousSummary') );
newOption('popupFixRedirsSummary', popupString('defaultpopupFixRedirsSummary') );
newOption('popupRedlinkSummary', popupString('defaultpopupRedlinkSummary') );
newOption('popupRmDabLinkSummary', popupString('defaultpopupRmDabLinkSummary') );
//</NOLITE>
// misc
newOption('popupCookies', false);
newOption('popupHistoryLimit', 50);
//<NOLITE>
newOption('popupFilters', [popupFilterStubDetect, popupFilterDisambigDetect,
popupFilterPageSize, popupFilterCountLinks,
popupFilterCountImages, popupFilterCountCategories,
popupFilterLastModified]);
newOption('extraPopupFilters', []);
newOption('popupOnEditSelection', 'cursor');
newOption('popupUseQueryInterface', true);
newOption('popupPreviewHistory', true);
newOption('popupImageLinks', true);
newOption('popupCategoryMembers', true);
newOption('popupHistoryPreviewLimit', 25);
newOption('popupContribsPreviewLimit',25);
//</NOLITE>
// new windows
newOption('popupNewWindows', false);
newOption('popupLinksNewWindow', {'lastContrib': true, 'sinceMe': true});
// regexps
newOption('popupDabRegexp', '([{][{]\\s*disambig|disambig\\s*[}][}]|disamb\\s*[}][}]|dab\\s*[}][}])|[{][{]\\s*(((geo|hn|road?|school|number)dis)|[234][lc][acw]|shipindex)(\\s*[|][^}]*)?\\s*[}][}]|is a .*disambiguation.*page');
newOption('popupStubRegexp', '(sect)?stub[}][}]|This .*-related article is a .*stub');
newOption('popupImageVarsRegexp', 'image|image_(?:file|skyline|name|flag|seal)|cover|badge|logo');
}
// ENDFILE: options.js
// STARTFILE: strings.js
//<NOLITE>
//////////////////////////////////////////////////
// Translatable strings
//////////////////////////////////////////////////
//
// See instructions at
// http://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups/Translation
pg.string = {
/////////////////////////////////////
// summary data, searching etc.
/////////////////////////////////////
'article': 'article',
'category': 'category',
'categories': 'categories',
'image': 'image',
'images': 'images',
'stub': 'stub',
'section stub': 'section stub',
'Empty page': 'Empty page',
'kB': 'kB',
'bytes': 'bytes',
'day': 'day',
'days': 'days',
'hour': 'hour',
'hours': 'hours',
'minute': 'minute',
'minutes': 'minutes',
'second': 'second',
'seconds': 'seconds',
'week': 'week',
'weeks': 'weeks',
'search': 'search',
'SearchHint': 'Find English Wikipedia articles containing %s',
'web': 'web',
'global': 'global',
'globalSearchHint': 'Search across Wikipedias in different languages for %s',
'googleSearchHint': 'Google for %s',
/////////////////////////////////////
// article-related actions and info
// (some actions also apply to user pages)
/////////////////////////////////////
'actions': 'actions', ///// view articles and view talk
'popupsMenu': 'popups',
'togglePreviewsHint': 'Toggle preview generation in popups on this page',
'toggle previews': 'toggle previews',
'reset': 'reset',
'more...': 'more...',
'disable': 'disable popups',
'disablePopupsHint': 'Disable popups on this page. Reload page to re-enable.',
'historyfeedHint': 'RSS feed of recent changes to this page',
'purgePopupsHint': 'Reset popups, clearing all cached popup data.',
'PopupsHint': 'Reset popups, clearing all cached popup data.',
'spacebar': 'space',
'view': 'view',
'view article': 'view article',
'viewHint': 'Go to %s',
'talk': 'talk',
'talk page': 'talk page',
'this revision': 'this revision',
'revision %s of %s': 'revision %s of %s',
'Revision %s of %s': 'Revision %s of %s',
'the revision prior to revision %s of %s': 'the revision prior to revision %s of %s',
'Toggle image size': 'Click to toggle image size',
'del': 'del', ///// delete, protect, move
'delete': 'delete',
'deleteHint': 'Delete %s',
'undeleteShort': 'un',
'UndeleteHint': 'Show the deletion history for %s',
'protect': 'protect',
'protectHint': 'Restrict editing rights to %s',
'unprotectShort': 'un',
'unprotectHint': 'Allow %s to be edited by anyone again',
'move': 'move',
'move page': 'move page',
'MovepageHint': 'Change the title of %s',
'edit': 'edit', ///// edit articles and talk
'edit article': 'edit article',
'editHint': 'Change the content of %s',
'edit talk': 'edit talk',
'new': 'new',
'new topic': 'new topic',
'newSectionHint': 'Start a new section on %s',
'null edit': 'null edit',
'nullEditHint': 'Submit an edit to %s, making no changes ',
'hist': 'hist', ///// history, diffs, editors, related
'history': 'history',
'historyHint': 'List the changes made to %s',
'last': 'last',
'lastEdit': 'lastEdit',
'mark patrolled': 'mark patrolled',
'markpatrolledHint': 'Mark this edit as patrolled',
'show last edit': 'most recent edit',
'Show the last edit': 'Show the effects of the most recent change',
'lastContrib': 'lastContrib',
'last set of edits': 'latest edits',
'lastContribHint': 'Show the net effect of changes made by the last editor',
'cur': 'cur',
'diffCur': 'diffCur',
'Show changes since revision %s': 'Show changes since revision %s',
'%s old': '%s old', // as in 4 weeks old
'oldEdit': 'oldEdit',
'purge': 'purge',
'purgeHint': 'Demand a fresh copy of %s',
'raw': 'source',
'rawHint': 'Download the source of %s',
'render': 'simple',
'renderHint': 'Show a plain HTML version of %s',
'Show the edit made to get revision': 'Show the edit made to get revision',
'sinceMe': 'sinceMe',
'changes since mine': 'diff my edit',
'sinceMeHint': 'Show changes since my last edit',
'Couldn\'t find an edit by %s\nin the last %s edits to\n%s': 'Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
'eds': 'eds',
'editors': 'editors',
'editorListHint': 'List the users who have edited %s',
'related': 'related',
'relatedChanges': 'relatedChanges',
'related changes': 'related changes',
'RecentchangeslinkedHint': 'Show changes in articles related to %s',
'editOld': 'editOld', ///// edit old version, or revert
'rv': 'rv',
'revert': 'revert',
'revertHint': 'Revert to %s',
'defaultpopupRedlinkSummary': 'Removing link to empty page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixDabsSummary': 'Disambiguate [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixRedirsSummary': 'Redirect bypass from [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupExtendedRevertSummary': 'Revert to revision dated %s by %s, oldid %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertToPreviousSummary': 'Revert to the revision prior to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertSummary': 'Revert to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertToPreviousSummary': 'Revert to the revision prior to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertSummary': 'Revert to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRmDabLinkSummary': 'Remove link to dab page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'Redirects': 'Redirects', // as in Redirects to ...
' to ': ' to ', // as in Redirects to ...
'Bypass redirect': 'Bypass redirect',
'Fix this redirect': 'Fix this redirect',
'disambig': 'disambig', ///// add or remove dab etc.
'disambigHint': 'Disambiguate this link to [[%s]]',
'Click to disambiguate this link to:': 'Click to disambiguate this link to:',
'remove this link': 'remove this link',
'remove all links to this page from this article': 'remove all links to this page from this article',
'remove all links to this disambig page from this article': 'remove all links to this disambig page from this article',
'mainlink': 'mainlink', ///// links, watch, unwatch
'wikiLink': 'wikiLink',
'wikiLinks': 'wikiLinks',
'links here': 'links here',
'whatLinksHere': 'whatLinksHere',
'what links here': 'what links here',
'WhatlinkshereHint': 'List the pages that are hyperlinked to %s',
'unwatchShort': 'un',
'watchThingy': 'watch', // called watchThingy because {}.watch is a function
'watchHint': 'Add %s to my watchlist',
'unwatchHint': 'Remove %s from my watchlist',
'Only found one editor: %s made %s edits': 'Only found one editor: %s made %s edits',
'%s seems to be the last editor to the page %s': '%s seems to be the last editor to the page %s',
'rss': 'rss',
/////////////////////////////////////
// diff previews
/////////////////////////////////////
'Diff truncated for performance reasons': 'Diff truncated for performance reasons',
'Old revision': 'Old revision',
'New revision': 'New revision',
'Something went wrong :-(': 'Something went wrong :-(',
'Empty revision, maybe non-existent': 'Empty revision, maybe non-existent',
'Unknown date': 'Unknown date',
/////////////////////////////////////
// other special previews
/////////////////////////////////////
'Empty category': 'Empty category',
'Category members (%s shown)': 'Category members (%s shown)',
'No image links found': 'No image links found',
'File links': 'File links',
'not commons': 'There is no file with this name on the Wikimedia Commons.',
'commons only': 'This file is from the Wikimedia Commons.',
'No image found': 'No image found',
'commons dupe': 'The same file appears to be available on the Wikimedia Commons.',
'commons conflict': 'A different file with the same name is available on the Wikimedia Commons.',
/////////////////////////////////////
// user-related actions and info
/////////////////////////////////////
'user': 'user', ///// user page, talk, email, space
'user page': 'user page',
'user talk': 'user talk',
'edit user talk': 'edit user talk',
'leave comment': 'leave comment',
'email': 'email',
'email user': 'email user',
'EmailuserHint': 'Send an email to %s',
'space': 'space', // short form for userSpace link
'PrefixindexHint': 'Show pages in the userspace of %s',
'count': 'count', ///// contributions, tree, log
'edit counter': 'edit counter',
'katelinkHint': 'Count the countributions made by %s',
'contribs': 'contribs',
'contributions': 'contributions',
'ContributionsHint': 'List the contributions made by %s',
'tree': 'tree',
'contribsTreeHint': 'Explore %s\'s contributions by namespace and by article',
'log': 'log',
'user log': 'user log',
'userLogHint': 'Show %s\'s user log',
'arin': 'ARIN lookup', ///// ARIN lookup, block user or IP
'Look up %s in ARIN whois database': 'Look up %s in the ARIN whois database',
'unblockShort': 'un',
'block': 'block',
'block user': 'block user',
'IpblocklistHint': 'Unblock %s',
'BlockipHint': 'Prevent %s from editing',
'block log': 'block log',
'blockLogHint': 'Show the block log for %s',
'protectLogHint': 'Show the protection log for %s',
'pageLogHint': 'Show the page log for %s',
'deleteLogHint': 'Show the deletion log for %s',
'Invalid %s %s': 'The option %s is invalid: %s',
'No backlinks found': 'No backlinks found',
' and more': ' and more',
'undo': 'undo',
'undoHint': 'undo this edit',
'Download preview data': 'Download preview data',
/////////////////////////////////////
// Autoediting
/////////////////////////////////////
'Enter a non-empty edit summary or press cancel to abort': 'Enter a non-empty edit summary or press cancel to abort',
'Failed to get revision information, please edit manually.\n\n': 'Failed to get revision information, please edit manually.\n\n',
'The %s button has been automatically clicked. Please wait for the next page to load.': 'The %s button has been automatically clicked. Please wait for the next page to load.',
'Could not find button %s. Please check the settings in your javascript file.': 'Could not find button %s. Please check the settings in your javascript file.',
/////////////////////////////////////
// Popups setup
/////////////////////////////////////
'Open full-size image': 'Open full-size image',
'zxy': 'zxy'
};
function popupString(str) {
if (typeof popupStrings != 'undefined' && popupStrings && popupStrings[str]) { return popupStrings[str]; }
if (pg.string[str]) { return pg.string[str]; }
return str;
}
function tprintf(str,subs) {
if (typeof subs != typeof []) { subs = [subs]; }
return simplePrintf(popupString(str), subs);
}
//</NOLITE>
// ENDFILE: strings.js
p880kbmgtsdh8nsotrpkjctienarrji
14874
14873
2008-06-05T21:39:44Z
Mike.lifeguard
117
[[MediaWiki:Gadget-popups.js]] moved to [[MediaWiki:Gadget-navpop.js]]
14873
javascript
text/javascript
var popupVersion="Sat Mar 10 21:40:16 UTC 2007";
// STARTFILE: main.js
// **********************************************************************
// ** **
// ** changes to this file affect many users. **
// ** please discuss on the talk page before editing **
// ** **
// **********************************************************************
// ** **
// ** if you do edit this file, be sure that your editor recognizes it **
// ** as utf8, or the weird and wonderful characters in the namespaces **
// ** below will be completely broken. You can check with the show **
// ** changes button before submitting the edit. **
// ** test: مدیا מיוחד Мэдыя **
// ** **
// **********************************************************************
////////////////////////////////////////////////////////////////////
// Import stylesheet(s)
//
if ( window.localCSS ) {
document.write('<link rel="stylesheet" type="text/css" href="http://localhost:8080/js/navpop.css">');
} else {
document.write('<link rel="stylesheet" type="text/css" href="' +
'http://en.wikipedia.org/w/index.php?title=User:Lupin/navpop.css' +
'&action=raw&ctype=text/css&dontcountme=s">');
}
//////////////////////////////////////////////////
// Globals
//
// Trying to shove as many of these as possible into the pg (popup globals) object
function pg(){}; // dummy to stop errors
window.pg = {
re: {}, // regexps
ns: {}, // namespaces
string: {}, // translatable strings
wiki: {}, // local site info
misc: {}, // YUCK PHOOEY
option: {}, // options, see newOption etc
optionDefault: {}, // default option values
flag: {}, // misc flags
cache: {}, // page and image cache
structures: {}, // navlink structures
timer: {}, // all sorts of timers (too damn many)
counter: {}, // .. and all sorts of counters
current: {}, // state info
endoflist: null
};
window.pop = { // wrap various functions in here
init: {},
util: {},
endoflist: null
};
function popupsReady() {
if (!window.pg) { return false; }
if (!pg.flag) { return false; }
if (!pg.flag.finishedLoading) { return false; }
return true;
}
////////////////////////////////////////////////////////////////////
// Run things
////////////////////////////////////////////////////////////////////
hookEvent('load', setupPopups);
/// Local Variables: ///
/// mode:c ///
/// End: ///
// ENDFILE: main.js
// STARTFILE: actions.js
function setupTooltips(container, remove, force, popData) {
log('setupTooltips, container='+container+', remove='+remove);
if (!container) {
//<NOLITE>
// the main initial call
if (getValueOf('popupOnEditSelection') && window.doSelectionPopup ) {
try {
document.editform.wpTextbox1.onmouseup=function() { doSelectionPopup(); };
} catch (neverMind) {}
}
//</NOLITE>
// article/content is a structure-dependent thing
container = defaultPopupsContainer();
}
if (!remove && !force && container.ranSetupTooltipsAlready) { return; }
container.ranSetupTooltipsAlready = !remove;
var anchors;
anchors=container.getElementsByTagName('A');
setupTooltipsLoop(anchors, 0, 250, 100, remove, popData);
}
function defaultPopupsContainer() {
if (getValueOf('popupOnlyArticleLinks')) {
return document.getElementById('article') ||
document.getElementById('content') || document;
}
return document;
}
function setupTooltipsLoop(anchors,begin,howmany,sleep, remove, popData) {
log(simplePrintf('setupTooltipsLoop(%s,%s,%s,%s,%s)', arguments));
var finish=begin+howmany;
var loopend = min(finish, anchors.length);
var j=loopend - begin;
log ('setupTooltips: anchors.length=' + anchors.length + ', begin=' + begin +
', howmany=' + howmany + ', loopend=' + loopend + ', remove=' + remove);
var doTooltip= remove ? removeTooltip : addTooltip;
// try a faster (?) loop construct
if (j > 0) {
do {
var a=anchors[loopend - j];
if (!a || !a.href) {
log('got null anchor at index ' + loopend - j);
continue;
}
doTooltip(a, popData);
} while (--j);
}
if (finish < anchors.length) {
setTimeout(function() {
setupTooltipsLoop(anchors,finish,howmany,sleep,remove,popData);},
sleep);
} else {
if ( !remove && ! getValueOf('popupTocLinks')) { rmTocTooltips(); }
pg.flag.finishedLoading=true;
}
}
// eliminate popups from the TOC
// This also kills any onclick stuff that used to be going on in the toc
function rmTocTooltips() {
var toc=document.getElementById('toc');
if (toc) {
var tocLinks=toc.getElementsByTagName('A');
var tocLen = tocLinks.length;
for (j=0; j<tocLen; ++j) {
removeTooltip(tocLinks[j], true);
}
}
}
function addTooltip(a, popData) {
if ( !isPopupLink(a) ) { return; }
a.onmouseover=mouseOverWikiLink;
a.onmouseout= mouseOutWikiLink;
a.onmousedown = killPopup;
a.hasPopup = true;
a.popData = popData;
}
function removeTooltip(a) {
if ( !a.hasPopup ) { return; }
a.onmouseover = null;
a.onmouseout = null;
if (a.originalTitle) { a.title = a.originalTitle; }
a.hasPopup=false;
}
function removeTitle(a) {
if (a.originalTitle) { return; }
a.originalTitle=a.title;
a.title='';
}
function restoreTitle(a) {
if ( a.title || !a.originalTitle ) { return; }
a.title = a.originalTitle;
a.originalTitle='';
}
function registerHooks(np) {
var popupMaxWidth=getValueOf('popupMaxWidth');
if (typeof popupMaxWidth == 'number') {
var setMaxWidth = function () {
np.mainDiv.style.maxWidth = popupMaxWidth + 'px';
np.maxWidth = popupMaxWidth;
// hack for IE
// see http://www.svendtofte.com/code/max_width_in_ie/
// use setExpression as documented here on msdn: http://tinyurl dot com/dqljn
if (np.mainDiv.style.setExpression) {
np.mainDiv.style.setExpression(
'width', 'document.body.clientWidth > ' +
popupMaxWidth + ' ? "' +popupMaxWidth + 'px": "auto"');
}
};
np.addHook(setMaxWidth, 'unhide', 'before');
}
//<NOLITE>
if (window.addPopupShortcuts && window.rmPopupShortcuts) {
np.addHook(addPopupShortcuts, 'unhide', 'after');
np.addHook(rmPopupShortcuts, 'hide', 'before');
}
//</NOLITE>
}
function mouseOverWikiLink(evt) {
if (!window.popupsReady || !window.popupsReady()) { return; }
if (!evt && window.event) {evt=window.event};
return mouseOverWikiLink2(this, evt);
}
function footnoteTarget(a) {
var aTitle=Title.fromAnchor(a);
// We want ".3A" rather than "%3A" or "?" here, so use the anchor property directly
var anch = aTitle.anchor;
if ( ! /^(_note-|endnote)/.test(anch) ) { return false; }
var lTitle=Title.fromURL(location.href);
if ( lTitle.toString(true) != aTitle.toString(true) ) { return false; }
var el=document.getElementById(anch);
while ( el && typeof el.nodeName == 'string') {
var nt = el.nodeName.toLowerCase();
if ( nt == 'li' ) { return el; }
else if ( nt == 'body' ) { return false; }
else if ( el.parentNode ) { el=el.parentNode; }
else { return false; }
}
return false;
}
function footnotePreview(x, navpop) {
setPopupHTML('<hr>' + x.innerHTML, 'popupPreview', navpop.idNumber,
getValueOf('popupSubpopups') ? function() {
setupTooltips(document.getElementById('popupPreview' + navpop.idNumber));
} : null);
}
// var modid=0;
// if(!window.opera) { window.opera={postError: console.log}; }
function modifierKeyHandler(a) {
return function(evt) {
// opera.postError('modifierKeyHandler called' + (++modid));
// opera.postError(''+evt + modid);
// for (var i in evt) {
// opera.postError('' + modid + ' ' + i + ' ' + evt[i]);
// }
// opera.postError(''+evt.ctrlKey + modid);
var mod=getValueOf('popupModifier');
if (!mod) { return true; }
if (!evt && window.event) {evt=window.event};
// opera.postError('And now....'+modid);
// opera.postError(''+evt+modid);
// opera.postError(''+evt.ctrlKey+modid);
if ( evt && mod && !evt[mod.toLowerCase() + 'Key'] ) { return true; }
mouseOverWikiLink2(a, evt);
};
}
function mouseOverWikiLink2(a, evt) {
// try not to duplicate effort
var mod=getValueOf('popupModifier');
if ( evt && mod && !evt[mod.toLowerCase() + 'Key'] ) {
// if the modifier is needed and not pressed, listen for it until
// we mouseout of this link.
restoreTitle(a);
var addHandler='addEventListener';
var rmHandler='removeEventListener';
var on='';
if (!document.addEventListener) {
addHandler='attachEvent';
rmHandler='detachEvent';
on='on';
}
if (!document[addHandler]) { // forget it
return;
}
a.modifierKeyHandler=modifierKeyHandler(a);
document[addHandler](on+'keydown', a.modifierKeyHandler, false);
a[addHandler](on+'mouseout', function() {
document[rmHandler](on+'keydown',
a.modifierKeyHandler, false);
}, true);
return;
}
if ( getValueOf('removeTitles') ) { removeTitle(a); }
if ( a==pg.current.link && a.navpopup && a.navpopup.isVisible() ) { return; }
pg.current.link=a;
if (getValueOf('simplePopups') && pg.option.popupStructure===null) {
// reset *default value* of popupStructure
setDefault('popupStructure', 'original');
}
var article=(new Title()).fromAnchor(a);
// set global variable (ugh) to hold article (wikipage)
pg.current.article = article;
if (pg.timer.image !== null) {
clearInterval(pg.timer.image);
pg.timer.image=null;
pg.counter.checkImages=0;
}
if (!a.navpopup) {
// FIXME: this doesn't behave well if you mouse out of a popup
// directly into a link with the same href
if (pg.current.linksHash[a.href] && false) {
a.navpopup = pg.current.linksHash[a.href];
}
else {
a.navpopup=newNavpopup(a, article);
pg.current.linksHash[a.href] = a.navpopup;
pg.current.links.push(a);
}
}
if (a.navpopup.pending===null || a.navpopup.pending!==0) {
// either fresh popups or those with unfinshed business are redone from scratch
simplePopupContent(a, article);
}
a.navpopup.showSoonIfStable(a.navpopup.delay);
getValueOf('popupInitialWidth');
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=setInterval(checkPopupPosition, 600);
if(getValueOf('simplePopups')) { return; }
if (a.navpopup.pending!==0 ) {
nonsimplePopupContent(a, article);
}
}
// simplePopupContent: the content that is shown even when simplePopups is true
function simplePopupContent(a, article) {
/* FIXME hack */ a.navpopup.hasPopupMenu=false;
a.navpopup.setInnerHTML(popupHTML(a));
fillEmptySpans({navpopup:a.navpopup});
var dragHandle = getValueOf('popupDragHandle') || null;
if (dragHandle && dragHandle != 'all') {
dragHandle += a.navpopup.idNumber;
}
setTimeout(function(){a.navpopup.makeDraggable(dragHandle);}, 150);
//<NOLITE>
if (getValueOf('popupRedlinkRemoval') && a.className=='new') {
setPopupHTML('<br>'+popupRedlinkHTML(article), 'popupRedlink', a.navpopup.idNumber);
}
//</NOLITE>
}
function debugData(navpopup) {
if(getValueOf('popupDebugging') && navpopup.idNumber) {
setPopupHTML('idNumber='+navpopup.idNumber + ', pending=' + navpopup.pending,
'popupError', navpopup.idNumber);
}
}
function newNavpopup(a, article) {
var navpopup = new Navpopup();
navpopup.fuzz=5;
navpopup.delay=getValueOf('popupDelay')*1000;
// increment global counter now
navpopup.idNumber = ++pg.idNumber;
navpopup.parentAnchor = a;
navpopup.parentPopup = (a.popData && a.popData.owner);
navpopup.article = article;
registerHooks(navpopup);
return navpopup;
}
function nonsimplePopupContent(a, article) {
var diff=null, history=null;
var params=parseParams(a.href);
var oldid=(typeof params.oldid=='undefined' ? null : params.oldid);
//<NOLITE>
if(getValueOf('popupPreviewDiffs') && window.loadDiff) {
diff=params.diff;
}
if(getValueOf('popupPreviewHistory') && getValueOf('popupUseQueryInterface')) {
history=(params.action=='history');
}
//</NOLITE>
a.navpopup.pending=0;
var previewImage=true;
var x;
pg.misc.gImage=null;
if (x=footnoteTarget(a)) {
footnotePreview(x, a.navpopup);
//<NOLITE>
} else if ( diff || diff === 0 ) {
//alert([article,oldid,diff]);
loadDiff(article, oldid, diff, a.navpopup);
} else if ( history && getValueOf('popupUseQueryInterface') ) {
loadQueryPreview('history', article, a.navpopup);
} else if ( pg.re.contribs.test(a.href) && getValueOf('popupUseQueryInterface')) {
loadQueryPreview('contribs', article, a.navpopup);
} else if ( pg.re.backlinks.test(a.href) && getValueOf('popupUseQueryInterface')) {
loadQueryPreview('backlinks', article, a.navpopup);
} else if ( // FIXME should be able to get all preview combinations with options
article.namespace()==pg.ns.image &&
( getValueOf('imagePopupsForImages') || ! anchorContainsImage(a) )
) {
if (getValueOf('popupUseQueryInterface')) {
loadQueryPreview('imagepagepreview', article, a.navpopup);
} else { startArticlePreview(article, oldid, a.navpopup); }
loadImages(article);
//</NOLITE>
} else if (article.namespace() == pg.ns.category &&
getValueOf('popupCategoryMembers')) {
getValueOf('popupUseQueryInterface') &&
loadQueryPreview('category', article, a.navpopup);
startArticlePreview(article, oldid, a.navpopup);
}
else if (!article.namespace()!=pg.ns.image && previewImage ) {
startArticlePreview(article, oldid, a.navpopup);
}
}
function pendingNavpopTask(navpop) {
if (navpop && navpop.pending===null) { navpop.pending=0; }
++navpop.pending;
debugData(navpop);
}
function completedNavpopTask(navpop) {
if (navpop && navpop.pending) { --navpop.pending; }
debugData(navpop);
}
function startArticlePreview(article, oldid, navpop) {
navpop.redir=0;
loadPreview(article, oldid, navpop);
}
function loadPreview(article, oldid, navpop) {
pendingNavpopTask(navpop);
if (!navpop.redir) { navpop.originalArticle=article; }
if (!navpop.visible && getValueOf('popupLazyDownloads')) {
var id=(navpop.redir) ? 'DOWNLOAD_PREVIEW_REDIR_HOOK' : 'DOWNLOAD_PREVIEW_HOOK';
navpop.addHook(function() {
getWiki(article, insertPreview, oldid, navpop);
return true; }, 'unhide', 'before', id);
} else {
getWiki(article, insertPreview, oldid, navpop);
}
}
function loadPreviewFromRedir(redirMatch, navpop) {
// redirMatch is a regex match
var target = new Title().fromWikiText(redirMatch[2]);
// overwrite (or add) anchor from original target
// mediawiki does overwrite; eg [[User:Lupin/foo3#Done]]
if ( navpop.article.anchor ) { target.anchor = navpop.article.anchor; }
var trailingRubbish=redirMatch[4];
navpop.redir++;
navpop.redirTarget=target;
//<NOLITE>
if (window.redirLink) {
var warnRedir = redirLink(target, navpop.article);
setPopupHTML(warnRedir, 'popupWarnRedir', navpop.idNumber);
}
//</NOLITE>
navpop.article=target;
fillEmptySpans({redir: true, redirTarget: target, navpopup:navpop});
return loadPreview(target, null, navpop);
}
function insertPreview(download) {
if (!download.owner) { return; }
var redirMatch = pg.re.redirect.exec(download.data);
if (download.owner.redir===0 && redirMatch) {
completedNavpopTask(download.owner);
loadPreviewFromRedir(redirMatch, download.owner);
return;
}
if (download.owner.visible || !getValueOf('popupLazyPreviews')) {
insertPreviewNow(download);
} else {
var id=(download.owner.redir) ? 'PREVIEW_REDIR_HOOK' : 'PREVIEW_HOOK';
download.owner.addHook( function(){insertPreviewNow(download); return true;},
'unhide', 'after', id );
}
}
function insertPreviewNow(download) {
if (!download.owner) { return; }
var wikiText=download.data;
var navpop=download.owner;
completedNavpopTask(navpop);
var art=navpop.redirTarget || navpop.originalArticle;
//<NOLITE>
makeFixDabs(wikiText, navpop);
if (getValueOf('popupSummaryData') && window.getPageInfo) {
var info=getPageInfo(wikiText, download);
setPopupTrailer(getPageInfo(wikiText, download), navpop.idNumber);
}
var imagePage='';
if (art.namespace()==pg.ns.image) { imagePage=art.toString(); }
else { imagePage=getValidImageFromWikiText(wikiText); }
if(imagePage) { loadImages(Title.fromWikiText(imagePage)); }
//</NOLITE>
if (getValueOf('popupPreviews')) { insertArticlePreview(download, art, navpop); }
}
function insertArticlePreview(download, art, navpop) {
if (download && typeof download.data == typeof ''){
if (art.namespace()==pg.ns.template && getValueOf('popupPreviewRawTemplates')) {
// FIXME compare/consolidate with diff escaping code for wikitext
var h='<hr><tt>' + download.data.entify().split('\\n').join('<br>\\n') + '</tt>';
setPopupHTML(h, 'popupPreview', navpop.idNumber);
}
else {
var p=prepPreviewmaker(download.data, art, navpop);
p.showPreview();
}
}
}
function prepPreviewmaker(data, article, navpop) {
// deal with tricksy anchors
var d=anchorize(data, article.anchorString());
var urlBase=joinPath([pg.wiki.articlebase, article.urlString()]);
var p=new Previewmaker(d, urlBase, navpop);
return p;
}
// Try to imitate the way mediawiki generates HTML anchors from section titles
function anchorize(d, anch) {
if (!anch) { return d; }
var anchRe=RegExp('=+\\s*' + literalizeRegex(anch).replace(/[_ ]/g, '[_ ]') + '\\s*=+');
var match=d.match(anchRe);
if(match && match.length > 0 && match[0]) { return d.substring(d.indexOf(match[0])); }
// now try to deal with == foo [[bar|baz]] boom == -> #foo_baz_boom
var lines=d.split('\n');
for (var i=0; i<lines.length; ++i) {
lines[i]=lines[i].replace(RegExp('[[]{2}([^|\\]]*?[|])?(.*?)[\\]]{2}', 'g'), '$2')
.replace(/'''([^'])/g, '$1').replace(RegExp("''([^'])", 'g'), '$1');
if (lines[i].match(anchRe)) {
return d.split('\n').slice(i).join('\n').replace(RegExp('^[^=]*'), '');
}
}
return d;
}
function killPopup() {
if (getValueOf('popupShortcutKeys') && window.rmPopupShortcuts) { rmPopupShortcuts(); }
if (!pg) { return; }
pg.current.link && pg.current.link.navpopup && pg.current.link.navpopup.banish();
pg.current.link=null;
abortAllDownloads();
window.stopImagesDownloading && stopImagesDownloading();
if (pg.timer.checkPopupPosition !== null) {
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=null;
}
if (pg.timer.checkImages !== null) { clearInterval(pg.timer.checkImages); pg.timer.checkImages=null; }
if (pg.timer.image !== null) { clearInterval(pg.timer.image); pg.timer.image=null; }
return true; // preserve default action
}
// ENDFILE: actions.js
// STARTFILE: domdrag.js
/**
@fileoverview
The {@link Drag} object, which enables objects to be dragged around.
<pre>
*************************************************
dom-drag.js
09.25.2001
www.youngpup.net
**************************************************
10.28.2001 - fixed minor bug where events
sometimes fired off the handle, not the root.
*************************************************
Pared down, some hooks added by [[User:Lupin]]
Copyright Aaron Boodman.
Saying stupid things daily since March 2001.
</pre>
*/
/**
Creates a new Drag object. This is used to make various DOM elements draggable.
@constructor
*/
function Drag () {
/**
Condition to determine whether or not to drag. This function should take one parameter, an Event.
To disable this, set it to <code>null</code>.
@type Function
*/
this.startCondition = null;
/**
Hook to be run when the drag finishes. This is passed the final coordinates of
the dragged object (two integers, x and y). To disables this, set it to <code>null</code>.
@type Function
*/
this.endHook = null;
}
/**
Gets an event in a cross-browser manner.
@param {Event} e
@private
*/
Drag.prototype.fixE = function(e) {
if (typeof e == 'undefined') { e = window.event; }
if (typeof e.layerX == 'undefined') { e.layerX = e.offsetX; }
if (typeof e.layerY == 'undefined') { e.layerY = e.offsetY; }
return e;
};
/**
Initialises the Drag instance by telling it which object you want to be draggable, and what you want to drag it by.
@param {DOMElement} o The "handle" by which <code>oRoot</code> is dragged.
@param {DOMElement} oRoot The object which moves when <code>o</code> is dragged, or <code>o</code> if omitted.
*/
Drag.prototype.init = function(o, oRoot) {
var dragObj = this;
this.obj = o;
o.onmousedown = function(e) { dragObj.start.apply( dragObj, [e]); };
o.dragging = false;
o.draggable = true;
o.hmode = true;
o.vmode = true;
o.root = oRoot && oRoot !== null ? oRoot : o ;
if (isNaN(parseInt(o.root.style.left, 10))) { o.root.style.left = "0px"; }
if (isNaN(parseInt(o.root.style.top, 10))) { o.root.style.top = "0px"; }
o.root.onthisStart = function(){};
o.root.onthisEnd = function(){};
o.root.onthis = function(){};
};
/**
Starts the drag.
@private
@param {Event} e
*/
Drag.prototype.start = function(e) {
var o = this.obj; // = this;
e = this.fixE(e);
if (this.startCondition && !this.startCondition(e)) { return; }
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10);
o.root.onthisStart(x, y);
o.lastMouseX = e.clientX;
o.lastMouseY = e.clientY;
var dragObj = this;
o.onmousemoveDefault = document.onmousemove;
o.dragging = true;
document.onmousemove = function(e) { dragObj.drag.apply( dragObj, [e] ); };
document.onmouseup = function(e) { dragObj.end.apply( dragObj, [e] ); };
return false;
};
/**
Does the drag.
@param {Event} e
@private
*/
Drag.prototype.drag = function(e) {
e = this.fixE(e);
var o = this.obj;
var ey = e.clientY;
var ex = e.clientX;
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10 );
var nx, ny;
nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));
this.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
this.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
this.obj.lastMouseX = ex;
this.obj.lastMouseY = ey;
this.obj.root.onthis(nx, ny);
return false;
};
/**
Ends the drag.
@private
*/
Drag.prototype.end = function() {
document.onmousemove=this.obj.onmousemoveDefault;
document.onmouseup = null;
this.obj.dragging = false;
if (this.endHook) {
this.endHook( parseInt(this.obj.root.style[this.obj.hmode ? "left" : "right"], 10),
parseInt(this.obj.root.style[this.obj.vmode ? "top" : "bottom"], 10));
}
};
// ENDFILE: domdrag.js
// STARTFILE: structures.js
//<NOLITE>
pg.structures.original={};
pg.structures.original.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle',
'popupData', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
pg.structures.original.popupRedirSpans=function () {
return ['popupRedir', 'popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'];
};
pg.structures.original.popupTitle=function (x) {
log ('defaultstructure.popupTitle');
if (!getValueOf('popupNavLinks')) {
return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
}
return '';
};
pg.structures.original.popupTopLinks=function (x) {
log ('defaultstructure.popupTopLinks');
if (getValueOf('popupNavLinks')) { return navLinksHTML(x.article, x.hint, x.params); }
return '';
};
pg.structures.original.popupImage=function(x) {
log ('original.popupImage, x.article='+x.article+', x.navpop.idNumber='+x.navpop.idNumber);
return imageHTML(x.article, x.navpop.idNumber);
};
pg.structures.original.popupRedirTitle=pg.structures.original.popupTitle;
pg.structures.original.popupRedirTopLinks=pg.structures.original.popupTopLinks;
function copyStructure(oldStructure, newStructure) {
pg.structures[newStructure]={};
for (var prop in pg.structures[oldStructure]) {
pg.structures[newStructure][prop]=pg.structures[oldStructure][prop];
}
}
copyStructure('original', 'nostalgia');
pg.structures.nostalgia.popupTopLinks=function(x) {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>';
str+='if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{'
+ editstr + '}'
var historystr='<<history|shortcut=h>>';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>';
str += 'if(admin){<br>}else{*}<<move|shortcut=m>>';
// admin links
str += 'if(admin){*<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>}';
return navlinkStringToHTML(str, x.article, x.params);
};
pg.structures.nostalgia.popupRedirTopLinks=pg.structures.nostalgia.popupTopLinks;
/** -- fancy -- **/
copyStructure('original', 'fancy');
pg.structures.fancy.popupTitle=function (x) {
return navlinkStringToHTML('<font size=+0><<mainlink>></font>',x.article,x.params);
};
pg.structures.fancy.popupTopLinks=function(x) {
var hist='<<history|shortcut=h|hist>>|<<lastEdit|shortcut=/|last>>if(mainspace_en){|<<editors|shortcut=E|eds>>}';
var watch='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
var move='<<move|shortcut=m|move>>';
return navlinkStringToHTML('if(talk){' +
'<<edit|shortcut=e>>|<<new|shortcut=+|+>>*' + hist + '*' +
'<<article|shortcut=a>>|<<editArticle|edit>>' + '*' + watch + '*' + move +
'}else{<<edit|shortcut=e>>*' + hist +
'*<<talk|shortcut=t|>>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>' +
'*' + watch + '*' + move+'}<br>', x.article, x.params);
};
pg.structures.fancy.popupOtherLinks=function(x) {
var admin='<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*<<undelete|undeleteShort>>|<<delete|shortcut=d|del>>';
var user='<<contribs|shortcut=c>>if(wikimedia){|<<count|shortcut=#|#>>}';
user+='if(ipuser){|<<arin>>}else{*<<email|shortcut=E|'+
popupString('email')+'>>}if(admin){*<<block|shortcut=b>>}';
var normal='<<whatLinksHere|shortcut=l|links here>>*<<relatedChanges|shortcut=r|related>>';
return navlinkStringToHTML('<br>if(user){' + user + '*}if(admin){'+admin+'if(user){<br>}else{*}}' + normal,
x.article, x.params);
};
pg.structures.fancy.popupRedirTitle=pg.structures.fancy.popupTitle;
pg.structures.fancy.popupRedirTopLinks=pg.structures.fancy.popupTopLinks;
pg.structures.fancy.popupRedirOtherLinks=pg.structures.fancy.popupOtherLinks;
/** -- fancy2 -- **/
// hack for [[User:MacGyverMagic]]
copyStructure('fancy', 'fancy2');
pg.structures.fancy2.popupTopLinks=function(x) { // hack out the <br> at the end and put one at the beginning
return '<br>'+pg.structures.fancy.popupTopLinks(x).replace(RegExp('<br>$','i'),'');
};
pg.structures.fancy2.popupLayout=function () { // move toplinks to after the title
return ['popupError', 'popupImage', 'popupTitle', 'popupData', 'popupTopLinks', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
/** -- menus -- **/
copyStructure('original', 'menus');
pg.structures.menus.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupData', 'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
function toggleSticky(uid) {
var popDiv=document.getElementById('navpopup_maindiv'+uid);
if (!popDiv) { return; }
if (!popDiv.navpopup.sticky) { popDiv.navpopup.stick(); }
else {
popDiv.navpopup.unstick();
popDiv.navpopup.hide();
}
}
pg.structures.menus.popupTopLinks = function (x, shorter) {
// FIXME maybe this stuff should be cached
var s=[];
var dropdiv='<div class="popup_drop">';
var enddiv='</div>';
var endspan='</span>';
var hist='<<history|shortcut=h>>';
if (!shorter) { hist = '<menurow>' + hist +
'|<<historyfeed|rss>>if(mainspace_en){|<<editors|shortcut=E>>}</menurow>'; }
var lastedit='<<lastEdit|shortcut=/|show last edit>>';
var jsHistory='<<lastContrib|last set of edits>><<sinceMe|changes since mine>>';
var linkshere='<<whatLinksHere|shortcut=l|what links here>>';
var related='<<relatedChanges|shortcut=r|related changes>>';
var search='<menurow><<search|shortcut=s>>if(wikimedia){|<<globalsearch|shortcut=g|global>>}' +
'|<<google|shortcut=G|web>></menurow>';
var watch='<menurow><<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>></menurow>';
var protect='<menurow><<unprotect|unprotectShort>>|' +
'<<protect|shortcut=p>>|<<protectlog|log>></menurow>';
var del='<menurow><<undelete|undeleteShort>>|<<delete|shortcut=d>>|' +
'<<deletelog|log>></menurow>';
var move='<<move|shortcut=m|move page>>';
var nullPurge='<menurow><<nullEdit|shortcut=n|null edit>>|<<purge|shortcut=P>></menurow>';
var viewOptions='<menurow><<view|shortcut=v>>|<<render|shortcut=S>>|<<raw>></menurow>';
var editRow='if(oldid){' +
'<menurow><<edit|shortcut=e>>|<<editOld|shortcut=e|this revision>></menurow>' +
'<menurow><<revert|shortcut=v>>|<<undo>></menurow>' + '}else{<<edit|shortcut=e>>}';
var markPatrolled='if(rcid){<<markpatrolled|mark patrolled>>}';
var newTopic='if(talk){<<new|shortcut=+|new topic>>}';
var protectDelete='if(admin){' + protect + del + '}';
if (getValueOf('popupActionsMenu')) {
s.push( '<<mainlink>>*' + dropdiv + menuTitle('actions'));
} else {
s.push( dropdiv + '<<mainlink>>');
}
s.push( '<menu>')
s.push( editRow + markPatrolled + newTopic + hist + lastedit )
if (!shorter) { s.push(jsHistory); }
s.push( move + linkshere + related)
if (!shorter) { s.push(nullPurge + search); }
if (!shorter) { s.push(viewOptions); }
s.push('<hr>' + watch + protectDelete);
s.push('<hr>' +
'if(talk){<<article|shortcut=a|view article>><<editArticle|edit article>>}' +
'else{<<talk|shortcut=t|talk page>><<editTalk|edit talk>>' +
'<<newTalk|shortcut=+|new topic>>}</menu>' + enddiv);
// user menu starts here
var email='<<email|shortcut=E|email user>>';
var contribs= 'if(wikimedia){<menurow>}<<contribs|shortcut=c|contributions>>' +
'if(wikimedia){|<<contribsTree|tree>></menurow>}';
s.push('if(user){*' + dropdiv + menuTitle('user'));
s.push('<menu>'); +
s.push('<menurow><<userPage|shortcut=u|user page>>|<<userSpace|space>></menurow>');
s.push('<<userTalk|shortcut=t|user talk>><<editUserTalk|edit user talk>>' +
'<<newUserTalk|shortcut=+|leave comment>>');
if(!shorter) { s.push( 'if(ipuser){<<arin>>}else{' + email + '}') }
else { s.push( 'if(ipuser){}else{' + email + '}') }
s.push('<hr>' + contribs + '<<userlog|shortcut=L|user log>>');
s.push('if(wikimedia){<<count|shortcut=#|edit counter>>}');
s.push('if(admin){<menurow><<unblock|unblockShort>>|<<block|shortcut=b|block user>></menurow>}');
s.push('<<blocklog|shortcut=B|block log>>' + getValueOf('popupExtraUserMenu'));
s.push('</menu>' + enddiv + '}');
// popups menu starts here
if (getValueOf('popupSetupMenu') && !x.navpop.hasPopupMenu /* FIXME: hack */) {
x.navpop.hasPopupMenu=true;
s.push('*' + dropdiv + menuTitle('popupsMenu') + '<menu>');
s.push('<<togglePreviews|toggle previews>>');
s.push('<<purgePopups|reset>>');
s.push('<<disablePopups|disable>>');
s.push('</menu>'+enddiv);
}
return navlinkStringToHTML(s.join(''), x.article, x.params);
};
function menuTitle(s) {
return '<a href="#" noPopup=1>' + popupString(s) + '</a>';
}
pg.structures.menus.popupRedirTitle=pg.structures.menus.popupTitle;
pg.structures.menus.popupRedirTopLinks=pg.structures.menus.popupTopLinks;
copyStructure('menus', 'shortmenus');
pg.structures.shortmenus.popupTopLinks=function(x) {
return pg.structures.menus.popupTopLinks(x,true);
};
pg.structures.shortmenus.popupRedirTopLinks=pg.structures.shortmenus.popupTopLinks;
//</NOLITE>
pg.structures.lite={};
pg.structures.lite.popupLayout=function () {
return ['popupTitle', 'popupPreview' ];
};
pg.structures.lite.popupTitle=function (x) {
log (x.article + ': structures.lite.popupTitle');
//return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
return '<div><span class="popup_mainlink"><b>' + x.article.toString() + '</b></span></div>';
};
// ENDFILE: structures.js
// STARTFILE: autoedit.js
//<NOLITE>
function getParamValue(paramName, h) {
if (typeof h == 'undefined' ) { h = document.location.href; }
var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
var m=cmdRe.exec(h);
if (m) {
try {
return decodeURI(m[1]);
} catch (someError) {}
}
return null;
}
function substitute(data,cmdBody) {
// alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags);
var fromRe=RegExp(cmdBody.from, cmdBody.flags);
return data.replace(fromRe, cmdBody.to);
}
function execCmds(data, cmdList) {
for (var i=0; i<cmdList.length; ++i) {
data=cmdList[i].action(data, cmdList[i]);
}
return data;
}
function parseCmd(str) {
// returns a list of commands
if (!str.length) { return []; }
var p=false;
switch (str.charAt(0)) {
case 's':
p=parseSubstitute(str);
break;
default:
return false;
}
if (p) { return [p].concat(parseCmd(p.remainder)); }
return false;
}
function unEscape(str, sep) {
return str.split('\\\\').join('\\').split('\\'+sep).join(sep).split('\\n').join('\n');
}
function parseSubstitute(str) {
// takes a string like s/a/b/flags;othercmds and parses it
var from,to,flags,tmp;
if (str.length<4) { return false; }
var sep=str.charAt(1);
str=str.substring(2);
tmp=skipOver(str,sep);
if (tmp) { from=tmp.segment; str=tmp.remainder; }
else { return false; }
tmp=skipOver(str,sep);
if (tmp) { to=tmp.segment; str=tmp.remainder; }
else { return false; }
flags='';
if (str.length) {
tmp=skipOver(str,';') || skipToEnd(str, ';');
if (tmp) {flags=tmp.segment; str=tmp.remainder; }
}
return {action: substitute, from: from, to: to, flags: flags, remainder: str};
}
function skipOver(str,sep) {
var endSegment=findNext(str,sep);
if (endSegment<0) { return false; }
var segment=unEscape(str.substring(0,endSegment), sep);
return {segment: segment, remainder: str.substring(endSegment+1)};
}
function skipToEnd(str,sep) {
return {segment: str, remainder: ''};
}
function findNext(str, ch) {
for (var i=0; i<str.length; ++i) {
if (str.charAt(i)=='\\') { i+=2; }
if (str.charAt(i)==ch) { return i; }
}
return -1;
}
function setCheckbox(param, box) {
var val=getParamValue(param);
if (val!==null) {
switch (val) {
case '1': case 'yes': case 'true':
box.checked=true;
break;
case '0': case 'no': case 'false':
box.checked=false;
}
}
}
function autoEdit() {
if (!setupPopups.completed) { setupPopups(); }
if (!document.editform) { return false; }
if (window.autoEdit.alreadyRan) { return false; }
window.autoEdit.alreadyRan=true;
var cmdString=getParamValue('autoedit');
if (cmdString) {
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
var cmdList=parseCmd(cmdString);
var input=editbox.value;
var output=execCmds(input, cmdList);
editbox.value=output;
}
setCheckbox('autominor', document.editform.wpMinoredit);
setCheckbox('autowatch', document.editform.wpWatchthis);
var rvid = getParamValue('autorv');
if (getValueOf('popupUseQueryInterface') && getParamValue('autorv')) {
var url=pg.wiki.wikibase + '/query.php?format=json&what=revisions&revids='+rvid;
startDownload(url, null, autoEdit2);
} else { autoEdit2(); }
}
function autoEdit2(d) {
var summary=getParamValue('autosummary');
var summaryprompt=getParamValue('autosummaryprompt');
var summarynotice='';
if (d && d.data && getParamValue('autorv')) {
var s = getRvSummary(summary, d.data);
if (s===false) {
summaryprompt=true;
summarynotice=popupString('Failed to get revision information, please edit manually.\n\n');
summary = simplePrintf(summary, [getParamValue('autorv'), '(unknown)', '(unknown)']);
} else { summary = s; }
}
if (summaryprompt) {
var txt= summarynotice +
popupString('Enter a non-empty edit summary or press cancel to abort');
var response=prompt(txt, summary);
if (response) { summary=response; }
else { return; }
}
if (summary) { document.editform.wpSummary.value=summary; }
// Attempt to avoid possible premature clicking of the save button
// (maybe delays in updates to the DOM are to blame?? or a red herring)
setTimeout(autoEdit3, 100);
}
function autoClickToken() {
return document.cookie.substr(document.cookie.indexOf("session=")+8,4);
}
function autoEdit3() {
if (getParamValue('actoken') != autoClickToken()) return;
var btn=getParamValue('autoclick');
if (btn) {
if (document.editform && document.editform[btn]) {
var button=document.editform[btn];
var msg=tprintf('The %s button has been automatically clicked. Please wait for the next page to load.',
[ button.value ]);
bannerMessage(msg);
document.title='('+document.title+')';
button.click();
} else {
alert(tprintf('Could not find button %s. Please check the settings in your javascript file.',
[ btn ]));
}
}
}
function bannerMessage(s) {
var headings=document.getElementsByTagName('h1');
if (headings) {
var div=document.createElement('div');
div.innerHTML='<font size=+1><b>' + s + '</b></font>';
headings[0].parentNode.insertBefore(div, headings[0]);
}
}
function getRvSummary(template, json) {
var o=getJsObj(json);
try {
var edit = anyChild(o.pages).revisions[0];
} catch (badness) {return false;}
var timestamp = edit.timestamp.split(/[A-Z]/g).join(' ').replace(/^ *| *$/g, '');
return simplePrintf(template, [edit.revid, timestamp, edit.user]);
}
hookEvent('load', autoEdit);
//</NOLITE>
// ENDFILE: autoedit.js
// STARTFILE: downloader.js
/**
@fileoverview
{@link Downloader}, a xmlhttprequest wrapper, and helper functions.
*/
/**
Creates a new Downloader
@constructor
@class The Downloader class. Create a new instance of this class to download stuff.
@param {String} url The url to download. This can be omitted and supplied later.
*/
function Downloader(url) {
// Source: http://jibbering.com/2002/4/httprequest.html
/** xmlhttprequest object which we're wrapping */
this.http = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation,
// we can cope with old IE versions.
// and security blocked creation of the objects.
try {
this.http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
this.http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
// this.http = false;
}
}
@end @*/
if (! this.http && typeof XMLHttpRequest!='undefined') { this.http = new XMLHttpRequest(); }
/**
The url to download
@type String
*/
this.url = url;
/**
A universally unique ID number
@type integer
*/
this.id=null;
/**
Modification date, to be culled from the incoming headers
@type Date
@private
*/
this.lastModified = null;
/**
What to do when the download completes successfully
@type Function
@private
*/
this.callbackFunction = null;
/**
What to do on failure
@type Function
@private
*/
this.onFailure = null;
/**
Flag set on <code>abort</code>
@type boolean
*/
this.aborted = false;
/**
HTTP method. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html for possibilities.
@type String
*/
this.method='GET';
/**
Async flag.
@type boolean
*/
this.async=true;
}
new Downloader();
/** Submits the http request. */
Downloader.prototype.send = function (x) {
if (!this.http) { return null; }
return this.http.send(x);
};
/** Aborts the download, setting the <code>aborted</code> field to true. */
Downloader.prototype.abort = function () {
if (!this.http) { return null; }
this.aborted=true;
return this.http.abort();
};
/** Returns the downloaded data. */
Downloader.prototype.getData = function () {if (!this.http) { return null; } return this.http.responseText;};
/** Prepares the download. */
Downloader.prototype.setTarget = function () {
if (!this.http) { return null; }
this.http.open(this.method, this.url, this.async);
};
/** Gets the state of the download. */
Downloader.prototype.getReadyState=function () {if (!this.http) { return null; } return this.http.readyState;};
pg.misc.downloadsInProgress = { };
/** Starts the download.
Note that setTarget {@link Downloader#setTarget} must be run first
*/
Downloader.prototype.start=function () {
if (!this.http) { return; }
pg.misc.downloadsInProgress[this.id] = this;
this.http.send(null);
};
/** Gets the 'Last-Modified' date from the download headers.
Should be run after the download completes.
Returns <code>null</code> on failure.
@return {Date}
*/
Downloader.prototype.getLastModifiedDate=function () {
if(!this.http) { return null; }
var lastmod=null;
try {
lastmod=this.http.getResponseHeader('Last-Modified');
} catch (err) {}
if (lastmod) { return new Date(lastmod); }
return null;
};
/** Sets the callback function.
@param {Function} f callback function, called as <code>f(this)</code> on success
*/
Downloader.prototype.setCallback = function (f) {
if(!this.http) { return; }
this.http.onreadystatechange = f;
};
Downloader.prototype.getStatus = function() { if (!this.http) { return null; } return this.http.status; };
//////////////////////////////////////////////////
// helper functions
/** Creates a new {@link Downloader} and prepares it for action.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function newDownload(url, id, callback, onfailure) {
var d=new Downloader(url);
if (!d.http) { return 'ohdear'; }
d.id=id;
d.setTarget();
if (!onfailure) {
onfailure=2;
}
var f = function () {
if (d.getReadyState() == 4) {
delete pg.misc.downloadsInProgress[this.id];
try {
if ( d.getStatus() == 200 ) {
d.data=d.getData();
d.lastModified=d.getLastModifiedDate();
callback(d);
} else if (typeof onfailure == typeof 1) {
if (onfailure > 0) {
// retry
newDownload(url, id, callback, onfailure - 1);
}
} else if (typeof onfailure == 'function') {
onfailure(d,url,id,callback);
}
} catch (somerr) { /* ignore it */ }
}
};
d.setCallback(f);
return d;
}
/** Simulates a download from cached data.
The supplied data is put into a {@link Downloader} as if it had downloaded it.
@param {String} url The url.
@param {integer} id The ID.
@param {Function} callback The callback, which is invoked immediately as <code>callback(d)</code>,
where <code>d</code> is the new {@link Downloader}.
@param {String} data The (cached) data.
@param {Date} lastModified The (cached) last modified date.
*/
function fakeDownload(url, id, callback, data, lastModified, owner) {
var d=newDownload(url,callback);
d.owner=owner;
d.id=id; d.data=data;
d.lastModified=lastModified;
return callback(d);
}
/**
Starts a download.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function startDownload(url, id, callback) {
var d=newDownload(url, id, callback);
if (typeof d == typeof '' ) { return d; }
d.start();
return d;
}
/**
Aborts all downloads which have been started.
*/
function abortAllDownloads() {
for ( var x in pg.misc.downloadsInProgress ) {
try {
pg.misc.downloadsInProgress[x].aborted=true;
pg.misc.downloadsInProgress[x].abort();
delete pg.misc.downloadsInProgress[x];
} catch (e) { }
}
}
// ENDFILE: downloader.js
// STARTFILE: livepreview.js
// TODO: location is often not correct (eg relative links in previews)
/**
* InstaView - a Mediawiki to HTML converter in JavaScript
* Version 0.6.1
* Copyright (C) Pedro Fayolle 2005-2006
* http://en.wikipedia.org/wiki/User:Pilaf
* Distributed under the BSD license
*
* Changelog:
*
* 0.6.1
* - Fixed problem caused by \r characters
* - Improved inline formatting parser
*
* 0.6
* - Changed name to InstaView
* - Some major code reorganizations and factored out some common functions
* - Handled conversion of relative links (i.e. [[/foo]])
* - Fixed misrendering of adjacent definition list items
* - Fixed bug in table headings handling
* - Changed date format in signatures to reflect Mediawiki's
* - Fixed handling of [[:Image:...]]
* - Updated MD5 function (hopefully it will work with UTF-8)
* - Fixed bug in handling of links inside images
*
* To do:
* - Better support for <math>
* - Full support for <nowiki>
* - Parser-based (as opposed to RegExp-based) inline wikicode handling (make it one-pass and bullet-proof)
* - Support for templates (through AJAX)
* - Support for coloured links (AJAX)
*/
var Insta = {}
function setupLivePreview() {
// options
Insta.conf =
{
baseUrl: '',
user: {},
wiki: {
lang: pg.wiki.lang,
interwiki: pg.wiki.interwiki,
default_thumb_width: 180
},
paths: {
articles: '/' + joinPath([pg.wiki.prePath, pg.wiki.articlePath]) + '/',
math: '/math/', // FIXME
images: ( window.getImageUrlStart ? getImageUrlStart(pg.wiki.hostname) : ''),
images_fallback: 'http://upload.wikimedia.org/wikipedia/commons/',
magnify_icon: 'skins/common/images/magnify-clip.png'
},
locale: {
user: pg.ns.user,
image: pg.ns.image,
category: pg.ns.category,
// shouldn't be used in popup previews, i think
months: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
}
}
// options with default values or backreferences
with (Insta.conf) {
user.name = user.name || 'Wikipedian'
user.signature = '[['+locale.user+':'+user.name+'|'+user.name+']]'
//paths.images = 'http://upload.wikimedia.org/wikipedia/' + wiki.lang + '/'
}
// define constants
Insta.BLOCK_IMAGE = new RegExp('^\\[\\[(?:Image|'+Insta.conf.locale.image+
'):.*?\\|.*?(?:frame|thumbnail|thumb|none|right|left|center)', 'i');
}
Insta.dump = function(from, to)
{
if (typeof from == 'string') from = document.getElementById(from)
if (typeof to == 'string') to = document.getElementById(to)
to.innerHTML = this.convert(from.value)
}
Insta.convert = function(wiki)
{
var ll = (typeof wiki == 'string')? wiki.replace(/\r/g,'').split(/\n/): wiki, // lines of wikicode
o='', // output
p=0, // para flag
$r // result of passing a regexp to $()
// some shorthands
function remain() { return ll.length }
function sh() { return ll.shift() } // shift
function ps(s) { o+=s } // push
function f() // similar to C's printf, uses ? as placeholders, ?? to escape question marks
{
var i=1,a=arguments,f=a[0],o='',c,p
for (;i<a.length; i++) if ((p=f.indexOf('?'))+1) {
// allow character escaping
i -= c=f.charAt(p+1)=='?'?1:0
o += f.substring(0,p)+(c?'?':a[i])
f=f.substr(p+1+c)
} else break;
return o+f
}
function html_entities(s) { return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">") }
function max(a,b) { return (a>b)?a:b }
function min(a,b) { return (a<b)?a:b }
// return the first non matching character position between two strings
function str_imatch(a, b)
{
for (var i=0, l=min(a.length, b.length); i<l; i++) if (a.charAt(i)!=b.charAt(i)) break
return i
}
// compare current line against a string or regexp
// if passed a string it will compare only the first string.length characters
// if passed a regexp the result is stored in $r
function $(c) { return (typeof c == 'string') ? (ll[0].substr(0,c.length)==c) : ($r = ll[0].match(c)) }
function $$(c) { return ll[0]==c } // compare current line against a string
function _(p) { return ll[0].charAt(p) } // return char at pos p
function endl(s) { ps(s); sh() }
function parse_list()
{
var prev='';
while (remain() && $(/^([*#:;]+)(.*)$/)) {
var l_match = $r
sh()
var ipos = str_imatch(prev, l_match[1])
// close uncontinued lists
for (var i=prev.length-1; i >= ipos; i--) {
var pi = prev.charAt(i)
if (pi=='*') ps('</ul>')
else if (pi=='#') ps('</ol>')
// close a dl only if the new item is not a dl item (:, ; or empty)
else switch (l_match[1].charAt(i)) { case'':case'*':case'#': ps('</dl>') }
}
// open new lists
for (var i=ipos; i<l_match[1].length; i++) {
var li = l_match[1].charAt(i)
if (li=='*') ps('<ul>')
else if (li=='#') ps('<ol>')
// open a new dl only if the prev item is not a dl item (:, ; or empty)
else switch(prev.charAt(i)) { case'':case'*':case'#': ps('<dl>') }
}
switch (l_match[1].charAt(l_match[1].length-1)) {
case '*': case '#':
ps('<li>' + parse_inline_nowiki(l_match[2])); break
case ';':
ps('<dt>')
var dt_match
// handle ;dt :dd format
if (dt_match = l_match[2].match(/(.*?)(:.*?)$/)) {
ps(parse_inline_nowiki(dt_match[1]))
ll.unshift(dt_match[2])
} else ps(parse_inline_nowiki(l_match[2]))
break
case ':':
ps('<dd>' + parse_inline_nowiki(l_match[2]))
}
prev=l_match[1]
}
// close remaining lists
for (var i=prev.length-1; i>=0; i--)
ps(f('</?>', (prev.charAt(i)=='*')? 'ul': ((prev.charAt(i)=='#')? 'ol': 'dl')))
}
function parse_table()
{
endl(f('<table?>', $(/^\{\|( .*)$/)? $r[1]: ''))
for (;remain();) if ($('|')) switch (_(1)) {
case '}': endl('</table>'); return
case '-': endl(f('<tr ?>', $(/\|-*(.*)/)[1])); break
default: parse_table_data()
}
else if ($('!')) parse_table_data()
else sh()
}
function parse_table_data()
{
var td_line, match_i
// 1: "|+", '|' or '+'
// 2: ??
// 3: attributes ??
// TODO: finish commenting this regexp
var td_match = sh().match(/^(\|\+|\||!)((?:([^[|]*?)\|(?!\|))?(.*))$/)
if (td_match[1] == '|+') ps('<caption');
else ps('<t' + ((td_match[1]=='|')?'d':'h'))
if (typeof td_match[3] != 'undefined') {
ps(' ' + td_match[3])
match_i = 4
} else match_i = 2
ps('>')
if (td_match[1] != '|+') {
// use || or !! as a cell separator depending on context
// NOTE: when split() is passed a regexp make sure to use non-capturing brackets
td_line = td_match[match_i].split((td_match[1] == '|')? '||': /(?:\|\||!!)/)
ps(parse_inline_nowiki(td_line.shift()))
while (td_line.length) ll.unshift(td_match[1] + td_line.pop())
} else ps(td_match[match_i])
var tc = 0, td = []
for (;remain(); td.push(sh()))
if ($('|')) {
if (!tc) break // we're at the outer-most level (no nested tables), skip to td parse
else if (_(1)=='}') tc--
}
else if (!tc && $('!')) break
else if ($('{|')) tc++
if (td.length) ps(Insta.convert(td))
}
function parse_pre()
{
ps('<pre>')
do endl(parse_inline_nowiki(ll[0].substring(1)) + "\n"); while (remain() && $(' '))
ps('</pre>')
}
function parse_block_image()
{
ps(parse_image(sh()))
}
function parse_image(str)
{
//<NOLITE>
// get what's in between "[[Image:" and "]]"
var tag = str.substring(Insta.conf.locale.image.length + 3, str.length - 2);
var width;
var attr = [], filename, caption = '';
var thumb=0, frame=0, center=0;
var align='';
if (tag.match(/\|/)) {
// manage nested links
var nesting = 0;
var last_attr;
for (var i = tag.length-1; i > 0; i--) {
if (tag.charAt(i) == '|' && !nesting) {
last_attr = tag.substr(i+1);
tag = tag.substring(0, i);
break;
} else switch (tag.substr(i-1, 2)) {
case ']]':
nesting++;
i--;
break;
case '[[':
nesting--;
i--;
}
}
attr = tag.split(/\s*\|\s*/);
attr.push(last_attr);
filename = attr.shift();
var w_match;
for (;attr.length; attr.shift())
if (w_match = attr[0].match(/^(\d*)(?:[px]*\d*)?px$/)) width = w_match[1]
else switch(attr[0]) {
case 'thumb':
case 'thumbnail':
thumb=true;
case 'frame':
frame=true;
break;
case 'none':
case 'right':
case 'left':
center=false;
align=attr[0];
break;
case 'center':
center=true;
align='none';
break;
default:
if (attr.length == 1) caption = attr[0];
}
} else filename = tag;
var o='';
if (frame) {
if (align=='') align = 'right';
o += f("<div class='thumb t?'>", align);
if (thumb) {
if (!width) width = Insta.conf.wiki.default_thumb_width;
o += f("<div style='width:?px;'>?", 2+width*1, make_image(filename, caption, width)) +
f("<div class='thumbcaption'><div class='magnify' style='float:right'><a href='?' class='internal' title='Enlarge'><img src='?'></a></div>?</div>",
Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename,
Insta.conf.paths.magnify_icon,
parse_inline_nowiki(caption)
)
} else {
o += '<div>' + make_image(filename, caption) + f("<div class='thumbcaption'>?</div>", parse_inline_nowiki(caption))
}
o += '</div></div>';
} else if (align != '') {
o += f("<div class='float?'><span>?</span></div>", align, make_image(filename, caption, width));
} else {
return make_image(filename, caption, width);
}
return center? f("<div class='center'>?</div>", o): o;
//</NOLITE>
}
function parse_inline_nowiki(str)
{
var start, lastend=0
var substart=0, nestlev=0, open, close, subloop;
var html='';
while (-1 != (start = str.indexOf('<nowiki>', substart))) {
html += parse_inline_wiki(str.substring(lastend, start));
start += 8;
substart = start;
subloop = true;
do {
open = str.indexOf('<nowiki>', substart);
close = str.indexOf('</nowiki>', substart);
if (close<=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));
}
function make_image(filename, caption, width)
{
//<NOLITE>
// uppercase first letter in file name
filename = filename.charAt(0).toUpperCase() + filename.substr(1);
// replace spaces with underscores
filename = filename.replace(/ /g, '_');
caption = strip_inline_wiki(caption);
var md5 = hex_md5(filename);
var source = md5.charAt(0) + '/' + md5.substr(0,2) + '/' + filename;
if (width) width = "width='" + width + "px'";
var img = f("<img onerror=\"this.onerror=null;this.src='?'\" src='?' ? ?>", Insta.conf.paths.images_fallback + source, Insta.conf.paths.images + source, (caption!='')? "alt='" + caption + "'" : '', width);
return f("<a class='image' ? href='?'>?</a>", (caption!='')? "title='" + caption + "'" : '', Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename, img);
//</NOLITE>
}
function parse_inline_images(str)
{
//<NOLITE>
var start, substart=0, nestlev=0;
var loop, close, open, wiki, html;
while (-1 != (start=str.indexOf('[[', substart))) {
if(str.substr(start+2).match(RegExp('^' + Insta.conf.locale.image + ':','i'))) {
loop=true;
substart=start;
do {
substart+=2;
close=str.indexOf(']]',substart);
open=str.indexOf('[[',substart);
if (close<=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;
}
//</NOLITE>
return str;
}
// the output of this function doesn't respect the FILO structure of HTML
// but since most browsers can handle it I'll save myself the hassle
function parse_inline_formatting(str)
{
var em,st,i,li,o='';
while ((i=str.indexOf("''",li))+1) {
o += str.substring(li,i);
li=i+2;
if (str.charAt(i+2)=="'") {
li++;
st=!st;
o+=st?'<strong>':'</strong>';
} else {
em=!em;
o+=em?'<em>':'</em>';
}
}
return o+str.substr(li);
}
function parse_inline_wiki(str)
{
var aux_match;
str = parse_inline_images(str);
str = parse_inline_formatting(str);
// math
while (aux_match = str.match(/<(?:)math>(.*?)<\/math>/i)) {
var math_md5 = hex_md5(aux_match[1]);
str = str.replace(aux_match[0], f("<img src='?.png'>", Insta.conf.paths.math+math_md5));
}
// Build a Mediawiki-formatted date string
var date = new Date;
var minutes = date.getUTCMinutes();
if (minutes < 10) minutes = '0' + minutes;
var date = f("?:?, ? ? ? (UTC)", date.getUTCHours(), minutes, date.getUTCDate(), Insta.conf.locale.months[date.getUTCMonth()], date.getUTCFullYear());
// text formatting
return str.
// signatures
replace(/~{5}(?!~)/g, date).
replace(/~{4}(?!~)/g, Insta.conf.user.name+' '+date).
replace(/~{3}(?!~)/g, Insta.conf.user.name).
// [[:Category:...]], [[:Image:...]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):[^|]*?)\\]\\](\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$1$2</a>").
// remove straight category and interwiki tags
replace(RegExp('\\[\\[(?:'+Insta.conf.locale.category+'|'+Insta.conf.wiki.interwiki+'):.*?\\]\\]','gi'),'').
// [[:Category:...|Links]], [[:Image:...|Links]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):.*?)\\|([^\\]]+?)\\]\\](\\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$2$3</a>").
// [[/Relative links]]
replace(/\[\[(\/[^|]*?)\]\]/g, f("<a href='?$1'>$1</a>", Insta.conf.baseUrl)).
// [[/Replaced|Relative links]]
replace(/\[\[(\/.*?)\|(.+?)\]\]/g, f("<a href='?$1'>$2</a>", Insta.conf.baseUrl)).
// [[Common links]]
replace(/\[\[([^|]*?)\]\](\w*)/g, f("<a href='?$1'>$1$2</a>", Insta.conf.paths.articles)).
// [[Replaced|Links]]
replace(/\[\[(.*?)\|([^\]]+?)\]\](\w*)/g, f("<a href='?$1'>$2$3</a>", Insta.conf.paths.articles)).
// [[Stripped:Namespace|Namespace]]
replace(/\[\[([^\]]*?:)?(.*?)( *\(.*?\))?\|\]\]/g, f("<a href='?$1$2$3'>$2</a>", Insta.conf.paths.articles)).
// External links
replace(/\[(https?|news|ftp|mailto|gopher|irc):(\/*)([^\]]*?) (.*?)\]/g, "<a class='external' href='$1:$2$3'>$4</a>").
replace(/\[http:\/\/(.*?)\]/g, "<a class='external' href='http://$1'>[#]</a>").
replace(/\[(news|ftp|mailto|gopher|irc):(\/*)(.*?)\]/g, "<a class='external' href='$1:$2$3'>$1:$2$3</a>").
replace(/(^| )(https?|news|ftp|mailto|gopher|irc):(\/*)([^ $]*[^.,!?;: $])/g, "$1<a class='external' href='$2:$3$4'>$2:$3$4</a>").
replace('__NOTOC__','').
replace('__NOEDITSECTION__','');
}
function strip_inline_wiki(str)
{
return str
.replace(/\[\[[^\]]*\|(.*?)\]\]/g,'$1')
.replace(/\[\[(.*?)\]\]/g,'$1')
.replace(/''(.*?)''/g,'$1');
}
// begin parsing
for (;remain();) if ($(/^(={1,6})(.*)\1(.*)$/)) {
p=0
endl(f('<h?>?</h?>?', $r[1].length, parse_inline_nowiki($r[2]), $r[1].length, $r[3]))
} else if ($(/^[*#:;]/)) {
p=0
parse_list()
} else if ($(' ')) {
p=0
parse_pre()
} else if ($('{|')) {
p=0
parse_table()
} else if ($(/^----+$/)) {
p=0
endl('<hr>')
} else if ($(Insta.BLOCK_IMAGE)) {
p=0
parse_block_image()
} else {
// handle paragraphs
if ($$('')) {
if (p = (remain()>1 && ll[1]==(''))) endl('<p><br>')
} else {
if(!p) {
ps('<p>')
p=1
}
ps(parse_inline_nowiki(ll[0]) + ' ')
}
sh();
}
return o
};
window.wiki2html=function(txt,baseurl) {
Insta.conf.baseUrl=baseurl;
return Insta.convert(txt);
};
// ENDFILE: livepreview.js
// STARTFILE: pageinfo.js
//<NOLITE>
function popupFilterPageSize(data) {
return formatBytes(data.length);
}
function popupFilterCountLinks(data) {
var num=countLinks(data);
return String(num) + ' ' + ((num!=1)?popupString('wikiLinks'):popupString('wikiLink'));
}
function popupFilterCountImages(data) {
var num=countImages(data);
return String(num) + ' ' + ((num!=1)?popupString('images'):popupString('image'));
}
function popupFilterCountCategories(data) {
var num=countCategories(data);
return String(num) + ' ' + ((num!=1)?popupString('categories'):popupString('category'));
}
function popupFilterLastModified(data,download) {
var lastmod=download.lastModified;
var now=new Date();
var age=now-lastmod;
if (lastmod && getValueOf('popupLastModified')) {
return (tprintf('%s old', [formatAge(age)])).replace(RegExp(' ','g'), ' ');
}
return '';
}
function formatAge(age) {
// coerce into a number
var a=0+age, aa=a;
var seclen = 1000;
var minlen = 60*seclen;
var hourlen = 60*minlen;
var daylen = 24*hourlen;
var weeklen = 7*daylen;
var numweeks = (a-a%weeklen)/weeklen; a = a-numweeks*weeklen; var sweeks = addunit(numweeks, 'week');
var numdays = (a-a%daylen)/daylen; a = a-numdays*daylen; var sdays = addunit(numdays, 'day');
var numhours = (a-a%hourlen)/hourlen; a = a-numhours*hourlen; var shours = addunit(numhours,'hour');
var nummins = (a-a%minlen)/minlen; a = a-nummins*minlen; var smins = addunit(nummins, 'minute');
var numsecs = (a-a%seclen)/seclen; a = a-numsecs*seclen; var ssecs = addunit(numsecs, 'second');
if (aa > 4*weeklen) { return sweeks; }
if (aa > weeklen) { return sweeks + ' ' + sdays; }
if (aa > daylen) { return sdays + ' ' + shours; }
if (aa > 6*hourlen) { return shours; }
if (aa > hourlen) { return shours + ' ' + smins; }
if (aa > 10*minlen) { return smins; }
if (aa > minlen) { return smins + ' ' + ssecs; }
return ssecs;
}
function addunit(num,str) { return '' + num + ' ' + ((num!=1) ? popupString(str+'s') : popupString(str)) ;}
function runPopupFilters(list, data, download) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i] && typeof list[i] == 'function') {
var s=list[i](data, download, download.owner.article);
if (s) { ret.push(s); }
}
}
return ret;
}
function getPageInfo(data, download) {
if (!data || data.length === 0) { return popupString('Empty page'); }
var popupFilters=getValueOf('popupFilters') || [];
var extraPopupFilters = getValueOf('extraPopupFilters') || [];
var pageInfoArray = runPopupFilters(popupFilters.concat(extraPopupFilters), data, download);
var pageInfo=pageInfoArray.join(', ');
if (pageInfo !== '' ) { pageInfo = upcaseFirst(pageInfo); }
return pageInfo;
}
// this could be improved!
function countLinks(wikiText) { return wikiText.split('[[').length - 1; }
// if N = # matches, n = # brackets, then
// String.parenSplit(regex) intersperses the N+1 split elements
// with Nn other elements. So total length is
// L= N+1 + Nn = N(n+1)+1. So N=(L-1)/(n+1).
function countImages(wikiText) {
return (wikiText.parenSplit(pg.re.image).length - 1) / (pg.re.imageBracketCount + 1);
}
function countCategories(wikiText) {
return (wikiText.parenSplit(pg.re.category).length - 1) / (pg.re.categoryBracketCount + 1);
}
function popupFilterStubDetect(data, download, article) {
var counts=stubCount(data, article);
if (counts.real) { return popupString('stub'); }
if (counts.sect) { return popupString('section stub'); }
return '';
}
function popupFilterDisambigDetect(data, download, article) {
if (getValueOf('popupOnlyArticleDabStub') && article.namespace()) { return ''; }
return (isDisambig(data, article)) ? popupString('disambig') : '';
}
function formatBytes(num) {
return (num > 949) ? (Math.round(num/100)/10+popupString('kB')) : (num +' ' + popupString('bytes')) ;
}
//</NOLITE>
// ENDFILE: pageinfo.js
// STARTFILE: titles.js
/**
@fileoverview Defines the {@link Title} class, and associated crufty functions.
<code>Title</code> deals with article titles and their various
forms. {@link Stringwrapper} is the parent class of
<code>Title</code>, which exists simply to make things a little
neater.
*/
/**
Creates a new Stringwrapper.
@constructor
@class the Stringwrapper class. This base class is not really
useful on its own; it just wraps various common string operations.
*/
function Stringwrapper() {
/**
Wrapper for this.toString().indexOf()
@param {String} x
@type integer
*/
this.indexOf=function(x){return this.toString().indexOf(x);};
/**
Returns this.value.
@type String
*/
this.toString=function(){return this.value;};
/**
Wrapper for {@link String#parenSplit} applied to this.toString()
@param {RegExp} x
@type Array
*/
this.parenSplit=function(x){return this.toString().parenSplit(x);};
/**
Wrapper for this.toString().substring()
@param {String} x
@param {String} y (optional)
@type String
*/
this.substring=function(x,y){
if (typeof y=='undefined') { return this.toString().substring(x); }
return this.toString().substring(x,y);
};
/**
Wrapper for this.toString().split()
@param {String} x
@type Array
*/
this.split=function(x){return this.toString().split(x);};
/**
Wrapper for this.toString().replace()
@param {String} x
@param {String} y
@type String
*/
this.replace=function(x,y){ return this.toString().replace(x,y); };
}
/**
Creates a new <code>Title</code>.
@constructor
@class The Title class. Holds article titles and converts them into
various forms. Also deals with anchors, by which we mean the bits
of the article URL after a # character, representing locations
within an article.
@param {String} value The initial value to assign to the
article. This must be the canonical title (see {@link
Title#value}. Omit this in the constructor and use another function
to set the title if this is unavailable.
*/
function Title(val) {
/**
The canonical article title. This must be in UTF-8 with no
entities, escaping or nasties. Also, underscores should be
replaced with spaces.
@type String
@private
*/
this.value=null;
/**
The canonical form of the anchor. This should be exactly as
it appears in the URL, i.e. with the .C3.0A bits in.
@type String
*/
this.anchor='';
this.setUtf(val);
}
Title.prototype=new Stringwrapper();
/**
Returns the canonical representation of the article title, optionally without anchor.
@param {boolean} omitAnchor
@fixme Decide specs for anchor
@return String The article title and the anchor.
*/
Title.prototype.toString=function(omitAnchor) {
return this.value + ( (!omitAnchor && this.anchor) ? '#' + this.anchorString() : '' );
};
Title.prototype.anchorString=function() {
if (!this.anchor) { return ''; }
var split=this.anchor.parenSplit(/((?:[.][0-9A-F]{2})+)/);
var len=split.length;
for (var j=1; j<len; j+=2) {
// FIXME s/decodeURI/decodeURIComponent/g ?
split[j]=decodeURIComponent(split[j].split('.').join('%')).split('_').join(' ');
}
return split.join('');
};
Title.prototype.urlAnchor=function() {
var split=this.anchor.parenSplit('/((?:[%][0-9A-F]{2})+)/');
var len=split.length;
for (var j=1; j<len; j+=2) {
split[j]=split[j].split('%').join('.');
}
return split.join('');
};
Title.prototype.anchorFromUtf=function(str) {
this.anchor=encodeURIComponent(str).split('.').join('%2E').split('%').join('.');
};
Title.fromURL=function(h) {
return new Title().fromURL(h);
};
Title.prototype.fromURL=function(h) {
if (typeof h != 'string') {
this.value=null;
return this;
}
// NOTE : playing with decodeURI, encodeURI, escape, unescape,
// we seem to be able to replicate the IE borked encoding
// IE doesn't do this new-fangled utf-8 thing.
// and it's worse than that.
// IE seems to treat the query string differently to the rest of the url
// the query is treated as bona-fide utf8, but the first bit of the url is pissed around with
// we fix up & for all browsers, just in case.
var splitted=h.split('?');
splitted[0]=splitted[0].split('&').join('%26');
if (pg.flag.linksLikeIE6) {
splitted[0]=encodeURI(decode_utf8(splitted[0]));
}
h=splitted.join('?');
var contribs=pg.re.contribs.exec(h);
if (contribs !== null) {
if (contribs[1]=='title=') { contribs[3]=contribs[3].split('+').join(' '); }
var u=new Title(contribs[3]);
this.setUtf(this.decodeNasties(pg.ns.user + ':' + u.stripNamespace()));
return this;
}
var email=pg.re.email.exec(h);
if (email !== null) {
this.setUtf(this.decodeNasties(pg.ns.user + ':' + new Title(email[3]).stripNamespace()));
return this;
}
var backlinks=pg.re.backlinks.exec(h);
if (backlinks) {
this.setUtf(this.decodeNasties(new Title(backlinks[3])));
return this;
}
// no more special cases to check --
// hopefully it's not a disguised user-related or specially treated special page
var m=pg.re.main.exec(h);
if(m===null) { this.value=null; }
else {
var fromBotInterface = /[?](.+[&])?title=/.test(h);
if (fromBotInterface) {
m[2]=m[2].split('+').join('_');
}
var extracted = m[2] + (m[3] ? '#' + m[3] : '');
this.setUtf(this.decodeNasties(extracted));
}
return this;
};
Title.prototype.decodeNasties=function(txt) {
var ret= this.decodeEscapes(decodeURI(txt));
ret = ret.replace(/[_ ]*$/, '');
return ret;
};
Title.prototype.decodeEscapes=function(txt) {
var split=txt.parenSplit(/((?:[%][0-9A-Fa-f]{2})+)/);
var len=split.length;
for (var i=1; i<len; i=i+2) {
// FIXME is decodeURIComponent better?
split[i]=unescape(split[i]);
}
return split.join('');
};
Title.fromAnchor=function(a) {
return new Title().fromAnchor(a);
};
Title.prototype.fromAnchor=function(a) {
if (!a) { this.value=null; return this; }
return this.fromURL(a.href);
};
Title.fromWikiText=function(txt) {
return new Title().fromWikiText(txt);
};
Title.prototype.fromWikiText=function(txt) {
// FIXME - testing needed
if (!pg.flag.linksLikeIE6) { txt=myDecodeURI(txt); }
this.setUtf(txt);
return this;
};
Title.prototype.hintValue=function(){
if(!this.value) { return ''; }
return safeDecodeURI(this.value);
};
//<NOLITE>
Title.prototype.toUserName=function(withNs) {
if (this.namespace() != pg.ns.user && this.namespace() != pg.ns.usertalk) {
this.value=null;
return;
}
this.value = (withNs ? pg.ns.user + ':' : '') + this.stripNamespace().split('/')[0];
};
Title.prototype.userName=function(withNs) {
var t=(new Title(this.value));
t.toUserName(withNs);
if (t.value) { return t; }
return null;
};
Title.prototype.toTalkPage=function() {
// convert article to a talk page, or if we can't return null
// or, in other words, return null if this ALREADY IS a talk page
// and return the corresponding talk page otherwise
if (this.value===null) { return null; }
var talkRegex=namespaceListToRegex(pg.ns.talkList);
if (talkRegex.exec(this.value)) { this.value=null; return null;}
var nsReg=namespaceListToRegex(pg.ns.withTalkList);
var splitted=this.value.parenSplit(nsReg);
if (splitted.length<2) {
this.value= (pg.ns.talkList[0]+':'+this.value).split(' ').join('_');
return this.value;
}
for (var i=0; i< pg.ns.withTalkList.length; ++i) {
if (splitted[1]==pg.ns.withTalkList[i]) {
splitted[1]=pg.ns.talkList[i];
this.value=splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return null;
};
//</NOLITE>
Title.prototype.namespace=function() {
var n=this.value.indexOf(':');
if (n<0) { return ''; }
var list=pg.ns.list;
for (var i=0; i<list.length; ++i) {
if (upcaseFirst(list[i]) == this.value.substring(0,n)) { return list[i]; }
}
return '';
};
//<NOLITE>
Title.prototype.talkPage=function() {
var t=new Title(this.value);
t.toTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.isTalkPage=function() {
if (this.talkPage()===null) { return true; }
return false;
};
Title.prototype.toArticleFromTalkPage=function() {
var talkRegex=namespaceListToRegex(pg.ns.talkList);
var splitted=this.value.parenSplit(talkRegex);
if (splitted.length < 2 || splitted[0].length > 0) { this.value=null; return null; }
if (splitted[1]==pg.ns.talkList[0]) {
splitted[1]='';
this.value=splitted.join(':').substring(2).split(' ').join('_');
return this.value;
}
for (var i=1; i< pg.ns.talkList.length; ++i) {
if (splitted[1]==pg.ns.talkList[i] || splitted[1]==pg.ns.talkList[i].split(' ').join('_')) {
splitted[1]=pg.ns.withTalkList[i];
this.value= splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return this.value;
};
Title.prototype.articleFromTalkPage=function() {
var t=new Title(this.value);
t.toArticleFromTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.articleFromTalkOrArticle=function() {
var t=new Title(this.value);
if ( t.toArticleFromTalkPage() ) { return t; }
return this;
};
Title.prototype.isIpUser=function() {
return pg.re.ipUser.test(this.userName());
};
//</NOLITE>
Title.prototype.stripNamespace=function(){ // returns a string, not a Title
// this isn't very sophisticated
// it just removes everything up to the final :
// BUG: probably does silly things for images with colons in the name - check it out
var list = this.value.split(':');
return list[list.length-1];
};
Title.prototype.setUtf=function(value){
if (!value) { this.value=''; return; }
var anch=value.indexOf('#');
if(anch < 0) { this.value=value.split('_').join(' '); this.anchor=''; return; }
this.value=value.substring(0,anch).split('_').join(' ');
this.anchor=value.substring(anch+1);
this.ns=null; // wait until namespace() is called
};
Title.prototype.setUrl=function(urlfrag) {
var anch=urlfrag.indexOf('#');
this.value=safeDecodeURI(urlfrag.substring(0,anch));
this.anchor=value.substring(anch+1);
};
Title.prototype.append=function(x){
this.setUtf(this.value + x);
};
Title.prototype.urlString=function(x) {
x || ( x={} );
var v=this.toString(true);
if (!x.omitAnchor && this.anchor) { v+= '#' + this.urlAnchor(); }
if (!x.keepSpaces) { v=v.split(' ').join('_'); }
return encodeURI(v).split('&').join('%26').split('?').join('%3F').split('+').join('%2B');
};
Title.prototype.removeAnchor=function() {
return new Title(this.toString(true));
};
Title.prototype.toUrl=function() {
return pg.wiki.titlebase + this.urlString();
};
function paramValue(param, url) {
var s=url.parenSplit(RegExp('[?&]' + literalizeRegex(param) + '=([^?&]*)'));
if (!url) { return null; }
return s[1] || null;
}
function parseParams(url) {
var ret={};
if (url.indexOf('?')==-1) { return ret; }
var s=url.split('?').slice(1).join();
var t=s.split('&');
for (var i=0; i<t.length; ++i) {
var z=t[i].split('=');
z.push(null);
ret[z[0]]=z[1];
}
return ret;
}
// all sorts of stuff here
// FIXME almost everything needs to be rewritten
function oldidFromAnchor(a) { return paramValue('oldid', a.href); }
//function diffFromAnchor(a) { return paramValue('diff', a.href); }
function wikiMarkupToAddressFragment (str) { // for images
var ret = safeDecodeURI(str);
ret = ret.split(' ').join('_');
ret = encodeURI(ret);
return ret;
}
// (a) myDecodeURI (first standard decodeURI, then pg.re.urlNoPopup)
// (b) change spaces to underscores
// (c) encodeURI (just the straight one, no pg.re.urlNoPopup)
function myDecodeURI (str) {
var ret;
// FIXME decodeURIComponent??
try { ret=decodeURI(str.toString()); }
catch (summat) { return str; }
for (var i=0; i<pg.misc.decodeExtras.length; ++i) {
var from=pg.misc.decodeExtras[i].from;
var to=pg.misc.decodeExtras[i].to;
ret=ret.split(from).join(to);
}
return ret;
}
function safeDecodeURI(str) { var ret=myDecodeURI(str); return ret || str; }
///////////
// TESTS //
///////////
//<NOLITE>
function isIpUser(user) {return pg.re.ipUser.test(user);}
function isDisambig(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
return ! article.isTalkPage() && pg.re.disambig.test(data);
}
function stubCount(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
var sectStub=0;
var realStub=0;
if (pg.re.stub.test(data)) {
var s=data.parenSplit(pg.re.stub);
for (var i=1; i<s.length; i=i+2) {
if (s[i]) { ++sectStub; }
else { ++realStub; }
}
}
return { real: realStub, sect: sectStub };
}
function isValidImageName(str){ // extend as needed...
return ( str.indexOf('{') == -1 );
}
function isInStrippableNamespace(article) {
return ( findInArray( pg.ns.nonArticleList, article.namespace() ) > -1 );
}
function isInMainNamespace(article) { return !isInStrippableNamespace(article); }
function anchorContainsImage(a) {
// iterate over children of anchor a
// see if any are images
if (a===null) { return false; }
kids=a.childNodes;
for (var i=0; i<kids.length; ++i) { if (kids[i].nodeName=='IMG') { return true; } }
return false;
}
//</NOLITE>
function isPopupLink(a) {
// NB for performance reasons, TOC links generally return true
// they should be stripped out later
if (!markNopopupSpanLinks.done) { markNopopupSpanLinks(); }
if (a.inNopopupSpan || a.className=='sortheader') { return false; }
// FIXME is this faster inline?
if (a.onmousedown || a.getAttribute('nopopup')) { return false; }
var h=a.href;
if (!pg.re.basenames.test(h)) { return false; }
if ( !pg.re.urlNoPopup.test(h) ) { return true; }
return (
(pg.re.email.test(h) || pg.re.contribs.test(h) || pg.re.backlinks.test(h)) &&
h.indexOf('&limit=') == -1 );
}
function markNopopupSpanLinks() {
var s=document.getElementsByTagName('span');
for (var i=0; i<s.length; ++i) {
if (s[i].className && s[i].className.toLowerCase()=='nopopups') {
var as=s[i].getElementsByTagName('a');
for (var j=0; j<as.length; ++j) {
as[j].inNopopupSpan=true;
}
}
}
markNopopupSpanLinks.done=true;
}
// ENDFILE: titles.js
// STARTFILE: cookies.js
//<NOLITE>
//////////////////////////////////////////////////
// Cookie handling
// from http://www.quirksmode.org/js/cookies.html
var Cookie= {
create: function(name,value,days)
{
var expires;
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}
else { expires = ""; }
document.cookie = name+"="+value+expires+"; path=/";
},
read: function(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') { c = c.substring(1,c.length); }
if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length,c.length); }
}
return null;
},
erase: function(name)
{
Cookie.create(name,"",-1);
}
};
//</NOLITE>
// ENDFILE: cookies.js
// STARTFILE: getpage.js
//////////////////////////////////////////////////
// Wiki-specific downloading
//
// Schematic for a getWiki call
//
// getWiki->-getPageWithCaching
// |
// false | true
// getPage<-[findPictureInCache]->-onComplete(a fake download)
// \.
// (async)->addPageToCache(download)->-onComplete(download)
/** @todo {document}
@param {Title} article
@param {Function} onComplete
@param {integer} oldid
@param {Navapopup} owner
*/
function getWiki(article, onComplete, oldid, owner) {
// set ctype=text/css to get around opera gzip bug
var url = pg.wiki.titlebase + article.removeAnchor().urlString() +
'&action=raw&ctype=text/css';
if (oldid || oldid===0 || oldid==='0') { url += '&oldid='+oldid; }
url += '&maxage=0&smaxage=0';
getPageWithCaching(url, onComplete, owner);
}
// check cache to see if page exists
function getPageWithCaching(url, onComplete, owner) {
log('getPageWithCaching, url='+url);
var i=findInPageCache(url);
if (i > -1) {
var d=fakeDownload(url, owner.idNumber, onComplete,
pg.cache.pages[i].data, pg.cache.pages[i].lastModified,
owner);
} else {
var d=getPage(url, onComplete, owner);
if (d && owner && owner.addDownload) {
owner.addDownload(d);
d.owner=owner;
}
}
}
function getPage(url, onComplete, owner) {
log('getPage');
var callback= function (d) { if (!d.aborted) {addPageToCache(d); onComplete(d);} };
return startDownload(url, owner.idNumber, callback);
}
function findInPageCache(url) {
for (var i=0; i<pg.cache.pages.length; ++i) {
if (url==pg.cache.pages[i].url) { return i; }
}
return -1;
}
function addPageToCache(download) {
log('addPageToCache '+download.url);
var page = {url: download.url, data: download.data, lastModified: download.lastModified};
return pg.cache.pages.push(page);
}
// ENDFILE: getpage.js
// STARTFILE: md5-2.2alpha.js
//<NOLITE>
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }
function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }
function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }
function hex_hmac_md5(k, d)
{ return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function b64_hmac_md5(k, d)
{ return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function any_hmac_md5(k, d, e)
{ return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
/*
* Calculate the MD5 of a raw string
*/
function rstr_md5(s)
{
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
}
/*
* Calculate the HMAC-MD5, of a key and some data (raw strings)
*/
function rstr_hmac_md5(key, data)
{
var bkey = rstr2binl(key);
if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
}
/*
* Convert a raw string to a hex string
*/
function rstr2hex(input)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var output = "";
var x;
for(var i = 0; i < input.length; i++)
{
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F)
+ hex_tab.charAt( x & 0x0F);
}
return output;
}
/*
* Convert a raw string to a base-64 string
*/
function rstr2b64(input)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var output = "";
var len = input.length;
for(var i = 0; i < len; i += 3)
{
var triplet = (input.charCodeAt(i) << 16)
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
| (i + 2 < len ? input.charCodeAt(i+2) : 0);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > input.length * 8) output += b64pad;
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
}
}
return output;
}
/*
* Convert a raw string to an arbitrary string encoding
*/
function rstr2any(input, encoding)
{
var divisor = encoding.length;
var remainders = Array();
var i, q, x, quotient;
/* Convert to an array of 16-bit big-endian values, forming the dividend */
var dividend = Array(input.length / 2);
for(i = 0; i < dividend.length; i++)
{
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
}
/*
* Repeatedly perform a long division. The binary array forms the dividend,
* the length of the encoding is the divisor. Once computed, the quotient
* forms the dividend for the next step. We stop when the dividend is zero.
* All remainders are stored for later use.
*/
while(dividend.length > 0)
{
quotient = Array();
x = 0;
for(i = 0; i < dividend.length; i++)
{
x = (x << 16) + dividend[i];
q = Math.floor(x / divisor);
x -= q * divisor;
if(quotient.length > 0 || q > 0)
quotient[quotient.length] = q;
}
remainders[remainders.length] = x;
dividend = quotient;
}
/* Convert the remainders to the output string */
var output = "";
for(i = remainders.length - 1; i >= 0; i--)
output += encoding.charAt(remainders[i]);
return output;
}
/*
* Encode a string as utf-8.
* For efficiency, this assumes the input is valid utf-16.
*/
function str2rstr_utf8(input)
{
var output = "";
var i = -1;
var x, y;
while(++i < input.length)
{
/* Decode utf-16 surrogate pairs */
x = input.charCodeAt(i);
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
{
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++;
}
/* Encode output as utf-8 */
if(x <= 0x7F)
output += String.fromCharCode(x);
else if(x <= 0x7FF)
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
0x80 | ( x & 0x3F));
else if(x <= 0xFFFF)
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
else if(x <= 0x1FFFFF)
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
0x80 | ((x >>> 12) & 0x3F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
}
return output;
}
/*
* Encode a string as utf-16
*/
function str2rstr_utf16le(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
(input.charCodeAt(i) >>> 8) & 0xFF);
return output;
}
function str2rstr_utf16be(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
input.charCodeAt(i) & 0xFF);
return output;
}
/*
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*/
function rstr2binl(input)
{
var output = Array(input.length >> 2);
for(var i = 0; i < output.length; i++)
output[i] = 0;
for(var i = 0; i < input.length * 8; i += 8)
output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
return output;
}
/*
* Convert an array of little-endian words to a string
*/
function binl2rstr(input)
{
var output = "";
for(var i = 0; i < input.length * 32; i += 8)
output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
return output;
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length.
*/
function binl_md5(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
//</NOLITE>
// ENDFILE: md5-2.2alpha.js
// STARTFILE: parensplit.js
//////////////////////////////////////////////////
// parenSplit
// String.prototype.parenSplit should do what ECMAscript says
// String.prototype.split does, interspersing paren matches between
// the split elements
if (String('abc'.split(/(b)/))!='a,b,c') {
// broken String.split, e.g. konq, IE
String.prototype.parenSplit=function (re) {
re=nonGlobalRegex(re);
var s=this;
var m=re.exec(s);
var ret=[];
while (m && s) {
// without the following loop, we have
// 'ab'.parenSplit(/a|(b)/) != 'ab'.split(/a|(b)/)
for(var i=0; i<m.length; ++i) {
if (typeof m[i]=='undefined') m[i]='';
}
ret.push(s.substring(0,m.index));
ret = ret.concat(m.slice(1));
s=s.substring(m.index + m[0].length);
m=re.exec(s);
}
ret.push(s);
return ret;
};
} else {
String.prototype.parenSplit=function (re) { return this.split(re); };
String.prototype.parenSplit.isNative=true;
}
function nonGlobalRegex(re) {
var s=re.toString();
flags='';
for (var j=s.length; s.charAt(j) != '/'; --j) {
if (s.charAt(j) != 'g') { flags += s.charAt(j); }
}
var t=s.substring(1,j);
return RegExp(t,flags);
}
// ENDFILE: parensplit.js
// STARTFILE: tools.js
// IE madness with encoding
// ========================
//
// suppose throughout that the page is in utf8, like wikipedia
//
// if a is an anchor DOM element and a.href should consist of
//
// http://host.name.here/wiki/foo?bar=baz
//
// then IE gives foo as "latin1-encoded" utf8; we have foo = decode_utf8(decodeURI(foo_ie))
// but IE gives bar=baz correctly as plain utf8
//
// ---------------------------------
//
// IE's xmlhttp doesn't understand utf8 urls. Have to use encodeURI here.
//
// ---------------------------------
//
// summat else
// Source: http://aktuell.de.selfhtml.org/artikel/javascript/utf8b64/utf8.htm
//<NOLITE>
function encode_utf8(rohtext) {
// dient der Normalisierung des Zeilenumbruchs
rohtext = rohtext.replace(/\r\n/g,"\n");
var utftext = "";
for(var n=0; n<rohtext.length; n++)
{
// ermitteln des Unicodes des aktuellen Zeichens
var c=rohtext.charCodeAt(n);
// alle Zeichen von 0-127 => 1byte
if (c<128)
utftext += String.fromCharCode(c);
// alle Zeichen von 127 bis 2047 => 2byte
else if((c>127) && (c<2048)) {
utftext += String.fromCharCode((c>>6)|192);
utftext += String.fromCharCode((c&63)|128);}
// alle Zeichen von 2048 bis 66536 => 3byte
else {
utftext += String.fromCharCode((c>>12)|224);
utftext += String.fromCharCode(((c>>6)&63)|128);
utftext += String.fromCharCode((c&63)|128);}
}
return utftext;
}
function getJsObj(json) {
var jsobj;
try {
eval('jsobj='+json);
return jsobj;
} catch (someError) {
log('Something went wrong with getJsobj, json='+json);
return 1;
}
}
function anyChild(obj) {
for (var p in obj) {
return obj[p];
}
return null;
}
//</NOLITE>
function decode_utf8(utftext) {
var plaintext = ""; var i=0, c=0, c1=0, c2=0;
// while-Schleife, weil einige Zeichen uebersprungen werden
while(i<utftext.length)
{
c = utftext.charCodeAt(i);
if (c<128) {
plaintext += String.fromCharCode(c);
i++;}
else if((c>191) && (c<224)) {
c2 = utftext.charCodeAt(i+1);
plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
i+=2;}
else {
c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
i+=3;}
}
return plaintext;
}
function upcaseFirst(str) {
if (typeof str != typeof '' || str=='') return '';
return str.charAt(0).toUpperCase() + str.substring(1);
}
function findInArray(arr, foo) {
if (!arr || !arr.length) { return -1; }
var len=arr.length;
for (var i=0; i<len; ++i) { if (arr[i]==foo) { return i; } }
return -1;
}
function nextOne (array, value) {
// NB if the array has two consecutive entries equal
// then this will loop on successive calls
var i=findInArray(array, value);
if (i<0) { return null; }
return array[i+1];
}
function literalizeRegex(str){
return str.replace(RegExp('([-.|()\\+?*^${}\\[\\]])', 'g'), '\\$1');
}
String.prototype.entify=function() {
//var shy='­';
return this.split('&').join('&').split('<').join('<').split('>').join('>'/*+shy*/).split('"').join('"');
};
function findThis(array, value) {
if (typeof array.length == 'undefined') { return null; }
for (var i=0; i<array.length; ++i) {
if (array[i]==value) { return i; }
}
return null;
}
function removeNulls(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i]) {
ret.push(list[i]);
}
}
return ret;
}
function joinPath(list) {
return removeNulls(list).join('/');
}
function simplePrintf(str, subs) {
if (!str || !subs) { return str; }
var ret=[];
var s=str.parenSplit(/(%s|\$[0-9]+)/);
var i=0;
do {
ret.push(s.shift());
if ( !s.length ) { break; }
var cmd=s.shift();
if (cmd == '%s') {
if ( i < subs.length ) { ret.push(subs[i]); } else { ret.push(cmd); }
++i;
} else {
var j=parseInt( cmd.replace('$', ''), 10 ) - 1;
if ( j > -1 && j < subs.length ) { ret.push(subs[j]); } else { ret.push(cmd); }
}
} while (s.length > 0);
return ret.join('');
}
function max(a,b){return a<b ? b : a;}
function min(a,b){return a>b ? b : a;}
function isString(x) { return (typeof x === 'string' || x instanceof String); }
//function isNumber(x) { return (typeof x === 'number' || x instanceof Number); }
function isRegExp(x) { return x instanceof RegExp; }
function isArray (x) { return x instanceof Array; }
function isObject(x) { return x instanceof Object; }
function isFunction(x) {
return !isRegExp(x) && (typeof x === 'function' || x instanceof Function);
}
function repeatString(s,mult) {
var ret='';
for (var i=0; i<mult; ++i) { ret += s; }
return ret;
}
function zeroFill(s, min) {
min = min || 2;
var t=s.toString();
return repeatString('0', min - t.length) + t;
}
function map(f, o) {
if (isArray(o)) { return map_array(f,o); }
return map_object(f,o);
}
function map_array(f,o) {
var ret=[];
for (var i=0; i<o.length; ++i) {
ret.push(f(o[i]));
}
return ret;
}
function map_object(f,o) {
var ret={};
for (var i in o) { ret[o]=f(o[i]); }
return ret;
}
// ENDFILE: tools.js
// STARTFILE: dab.js
//<NOLITE>
//////////////////////////////////////////////////
// Dab-fixing code
//
function retargetDab(newTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) {
log('retargetDab: newTarget='+newTarget + ' oldTarget=' + oldTarget);
return changeLinkTargetLink(
{newTarget: newTarget,
text: newTarget.split(' ').join(' '),
hint: tprintf('disambigHint', [newTarget]),
summary: simplePrintf(
getValueOf('popupFixDabsSummary'), [friendlyCurrentArticleName, newTarget ]),
clickButton: 'wpDiff', minor: true, oldTarget: oldTarget,
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit});
}
function listLinks(wikitext, oldTarget, titleToEdit) {
// mediawiki strips trailing spaces, so we do the same
// testcase: http://en.wikipedia.org/w/index.php?title=Radial&oldid=97365633
var reg=RegExp('\\[\\[([^|]*?) *(\\||\\]\\])', 'gi');
var ret=[];
var splitted=wikitext.parenSplit(reg);
// ^[a-z]+ should match interwiki links, hopefully (case-insensitive)
// and ^[a-z]* should match those and [[:Category...]] style links too
var omitRegex=RegExp('^[a-z]*:|^[Ss]pecial:|^[Ii]mage|^[Cc]ategory');
var friendlyCurrentArticleName= oldTarget.toString();
for (var i=1; i<splitted.length; i=i+3) {
if (typeof splitted[i] == typeof 'string' && splitted[i].length>0 && !omitRegex.test(splitted[i])) {
ret.push( retargetDab(splitted[i], oldTarget, friendlyCurrentArticleName, titleToEdit) );
} /* if */
} /* for loop */
ret = rmDupesFromSortedList(ret.sort());
var wikTarget='wiktionary:' + friendlyCurrentArticleName.replace( RegExp('^(.+)\\s+[(][^)]+[)]\\s*$'), '$1' );
ret.push( retargetDab(wikTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) );
ret.push(changeLinkTargetLink(
{ newTarget: null,
text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this disambig page from this article"),
clickButton: "wpDiff", oldTarget: oldTarget,
summary: simplePrintf(getValueOf('popupRmDabLinkSummary'), [friendlyCurrentArticleName]),
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit
}));
return ret;
}
function rmDupesFromSortedList(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (ret.length===0 || list[i]!=ret[ret.length-1]) { ret.push(list[i]); }
}
return ret;
}
function makeFixDab(data, navpop) {
// grab title from parent popup if there is one; default exists in changeLinkTargetLink
var titleToEdit=(navpop.parentPopup && navpop.parentPopup.article.toString());
var list=listLinks(data, navpop.originalArticle, titleToEdit);
if (list.length===0) { log('listLinks returned empty list'); return null; }
var html='<hr>' + popupString('Click to disambiguate this link to:') + '<br>';
html+=list.join(', ');
return html;
}
function makeFixDabs(wikiText, navpop) {
if (getValueOf('popupFixDabs') && isDisambig(wikiText, navpop.article) &&
Title.fromURL(location.href).namespace() != pg.ns.special &&
navpop.article.talkPage() ) {
setPopupHTML(makeFixDab(wikiText, navpop), 'popupFixDab', navpop.idNumber);
}
}
function popupRedlinkHTML(article) {
return changeLinkTargetLink(
{ newTarget: null, text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this page from this article"),
clickButton: "wpDiff",
oldTarget: article.toString(),
summary: simplePrintf(getValueOf('popupRedlinkSummary'), [article.toString()])});
}
//</NOLITE>
// ENDFILE: dab.js
// STARTFILE: htmloutput.js
function appendPopupContent(obj, elementId, popupId, onSuccess) {
return setPopupHTML(obj, elementId, popupId, onSuccess, true);
}
// this has to use a timer loop as we don't know if the DOM element exists when we want to set the text
function setPopupHTML (str, elementId, popupId, onSuccess, append) {
if (elementId=='popupPreview') {
}
if (typeof popupId === 'undefined') {
//console.error('popupId is not defined in setPopupHTML, html='+str.substring(0,100));
popupId = pg.idNumber;
}
var popupElement=document.getElementById(elementId+popupId);
if (popupElement) {
if (!append) { popupElement.innerHTML=''; }
if (isString(str)) {
popupElement.innerHTML+=str;
} else {
popupElement.appendChild(str);
}
if (onSuccess) { onSuccess(); }
setTimeout(checkPopupPosition, 100);
return true;
} else {
// call this function again in a little while...
setTimeout(function(){
setPopupHTML(str,elementId,popupId,onSuccess);
}, 600);
}
return null;
}
//<NOLITE>
function setImageStatus(str, id) {return; } // setPopupHTML(str, 'popupImageStatus', id);}
function setPopupTrailer(str,id) {return setPopupHTML(str, 'popupData', id);}
//</NOLITE>
function fillEmptySpans(args) { return fillEmptySpans2(args); }
// args.navpopup is mandatory
// optional: args.redir, args.redirTarget
// FIXME: ye gods, this is ugly stuff
function fillEmptySpans2(args) { // if redir is present and true then redirTarget is mandatory
var redir=true;
if (typeof args != 'object' || typeof args.redir == 'undefined' || !args.redir) { redir=false; }
var a=args.navpopup.parentAnchor;
var article, hint=null, oldid=null, params={};
if (redir && typeof args.redirTarget == typeof {}) {
article=args.redirTarget;
//hint=article.hintValue();
} else {
article=(new Title()).fromAnchor(a);
hint=a.originalTitle || article.hintValue();
params=parseParams(a.href);
oldid=(getValueOf('popupHistoricalLinks')) ? params.oldid : null;
rcid=params.rcid;
}
var x={ article:article, hint: hint, oldid: oldid, rcid: rcid, navpop:args.navpopup, params:params };
var structure=pg.structures[getValueOf('popupStructure')];
if (typeof structure != 'object') {
setPopupHTML('popupError', 'Unknown structure (this should never happen): '+
pg.option.popupStructure, args.navpopup.idNumber);
return;
}
var spans=flatten(pg.misc.layout);
var numspans = spans.length;
var redirs=pg.misc.redirSpans;
for (var i=0; i<numspans; ++i) {
var f=findThis(redirs, spans[i]);
//log('redir='+redir+', f='+f+', spans[i]='+spans[i]);
if ( (f!==null && !redir) || (f===null && redir) ) {
//log('skipping this set of the loop');
continue;
}
var structurefn=structure[spans[i]];
var setfn = setPopupHTML;
if (getValueOf('popupActiveNavlinks') && spans[i].indexOf('popupTopLinks')==0) {
setfn = setPopupTipsAndHTML;
}
switch (typeof structurefn) {
case 'function':
//log('running '+spans[i]+'({article:'+x.article+', hint:'+x.hint+', oldid: '+x.oldid+'})');
setfn(structurefn(x), spans[i], args.navpopup.idNumber);
break;
case 'string':
setfn(structurefn, spans[i], args.navpopup.idNumber);
break;
default:
errlog('unknown thing with label '+spans[i]);
break;
}
}
}
// flatten an array
function flatten(list, start) {
var ret=[];
if (typeof start == 'undefined') { start=0; }
for (var i=start; i<list.length; ++i) {
if (typeof list[i] == typeof []) {
return ret.concat(flatten(list[i])).concat(flatten(list, i+1));
}
else { ret.push(list[i]); }
}
return ret;
}
// Generate html for whole popup
function popupHTML (a) {
getValueOf('popupStructure');
var structure=pg.structures[pg.option.popupStructure];
if (typeof structure != 'object') {
//return 'Unknown structure: '+pg.option.popupStructure;
// override user choice
pg.option.popupStructure=pg.optionDefault.popupStructure;
return popupHTML(a);
}
if (typeof structure.popupLayout != 'function') { return 'Bad layout'; }
pg.misc.layout=structure.popupLayout();
if (typeof structure.popupRedirSpans == 'function') { pg.misc.redirSpans=structure.popupRedirSpans(); }
else { pg.misc.redirSpans=[]; }
return makeEmptySpans(pg.misc.layout, a.navpopup);
}
function makeEmptySpans (list, navpop) {
var ret='';
for (var i=0; i<list.length; ++i) {
if (typeof list[i] == typeof '') {
ret += emptySpanHTML(list[i], navpop.idNumber, 'div');
} else if (typeof list[i] == typeof [] && list[i].length > 0 ) {
ret = ret.parenSplit(RegExp('(</[^>]*?>$)')).join(makeEmptySpans(list[i], navpop));
} else if (typeof list[i] == typeof {} && list[i].nodeType ) {
ret += emptySpanHTML(list[i].name, navpop.idNumber, list[i].nodeType);
}
}
return ret;
}
function emptySpanHTML(name, id, tag, classname) {
tag = tag || 'span';
if (!classname) { classname = emptySpanHTML.classAliases[name]; }
classname = classname || name;
if (name == getValueOf('popupDragHandle')) { classname += ' popupDragHandle'; }
return simplePrintf('<%s id="%s" class="%s"></%s>', [tag, name + id, classname, tag]);
}
emptySpanHTML.classAliases={ 'popupSecondPreview': 'popupPreview' };
// generate html for popup image
// <a id="popupImageLinkn"><img id="popupImagen">
// where n=idNumber
function imageHTML(article, idNumber) {
return simplePrintf('<a id="popupImageLink$1">' +
'<img align="right" valign="top" id="popupImg$1" style="display: none;"></img>' +
'</a>', [ idNumber ]);
}
function popTipsSoonFn(id, when, popData) {
when || ( when=250 );
var popTips=function(){ setupTooltips(document.getElementById(id), false, true, popData); };
return function() { setTimeout( popTips, when, popData ); };
}
function setPopupTipsAndHTML(html, divname, idnumber, popData) {
setPopupHTML(html, divname, idnumber,
getValueOf('popupSubpopups') ?
popTipsSoonFn(divname + idnumber, null, popData) :
null);
}
// ENDFILE: htmloutput.js
// STARTFILE: mouseout.js
//////////////////////////////////////////////////
// fuzzy checks
function fuzzyCursorOffMenus(x,y, fuzz, parent) {
if (!parent) { return null; }
var uls=parent.getElementsByTagName('ul');
for (var i=0; i<uls.length; ++i) {
if (uls[i].className=='popup_menu') {
if (uls[i].offsetWidth > 0) return false;
} // else {document.title+='.';}
}
return true;
}
function checkPopupPosition () { // stop the popup running off the right of the screen
// FIXME avoid pg.current.link
pg.current.link && pg.current.link.navpopup &&
pg.current.link.navpopup.limitHorizontalPosition();
}
function mouseOutWikiLink () {
if (!window.popupsReady || !window.popupsReady()) { return; }
//console ('mouseOutWikiLink');
var a=this;
if (a.navpopup==null) return;
if ( ! a.navpopup.isVisible() ) {
a.navpopup.banish();
return;
}
Navpopup.tracker.addHook(posCheckerHook(a.navpopup));
}
function posCheckerHook(navpop) {
return function() {
if (!navpop.isVisible()) { return true; /* remove this hook */ }
if (Navpopup.tracker.dirty) {
return false;
}
var x=Navpopup.tracker.x, y=Navpopup.tracker.y;
var mouseOverNavpop = navpop.isWithin(x,y,navpop.fuzz, navpop.mainDiv) ||
!fuzzyCursorOffMenus(x,y,navpop.fuzz, navpop.mainDiv);
// FIXME it'd be prettier to do this internal to the Navpopup objects
var t=getValueOf('popupHideDelay');
if (t) { t = t * 1000; }
if (!t) {
if(!mouseOverNavpop) {
navpop.banish();
return true; /* remove this hook */
}
return false;
}
// we have a hide delay set
var d=+(new Date());
if ( !navpop.mouseLeavingTime ) {
navpop.mouseLeavingTime = d;
return false;
}
if ( mouseOverNavpop ) {
navpop.mouseLeavingTime=null;
return false;
}
if (d - navpop.mouseLeavingTime > t) {
navpop.mouseLeavingTime=null;
navpop.banish(); return true; /* remove this hook */
}
return false;
};
}
function runStopPopupTimer(navpop) {
// at this point, we should have left the link but remain within the popup
// so we call this function again until we leave the popup.
if (!navpop.stopPopupTimer) {
navpop.stopPopupTimer=setInterval(posCheckerHook(navpop), 500);
navpop.addHook(function(){clearInterval(navpop.stopPopupTimer);},
'hide', 'before');
}
}
// ENDFILE: mouseout.js
// STARTFILE: previewmaker.js
/**
@fileoverview
Defines the {@link Previewmaker} object, which generates short previews from wiki markup.
*/
/**
Creates a new Previewmaker
@constructor
@class The Previewmaker class. Use an instance of this to generate short previews from Wikitext.
@param {String} wikiText The Wikitext source of the page we wish to preview.
@param {String} baseUrl The url we should prepend when creating relative urls.
@param {Navpopup} owner The navpop associated to this preview generator
*/
function Previewmaker(wikiText, baseUrl, owner) {
/** The wikitext which is manipulated to generate the preview. */
this.originalData=wikiText;
this.setData();
this.baseUrl=baseUrl;
this.owner=owner;
this.maxCharacters=getValueOf('popupMaxPreviewCharacters');
this.maxSentences=getValueOf('popupMaxPreviewSentences');
}
Previewmaker.prototype.setData=function() {
var maxSize=max(10000, 2*this.maxCharacters);
this.data=this.originalData.substring(0,maxSize);
};
/** Remove HTML comments
@private
*/
Previewmaker.prototype.killComments = function () {
// this also kills trailing spaces and one trailing newline, eg [[diamyo]]
this.data=this.data.replace(RegExp('<!--[\\s\\S]*?--> *\\n?', 'g'), '');
};
/**
@private
*/
Previewmaker.prototype.killDivs = function () {
// say goodbye, divs (can be nested, so use * not *?)
this.data=this.data.replace(RegExp('< *div[^>]* *>[\\s\\S]*?< */ *div *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killGalleries = function () {
this.data=this.data.replace(RegExp('< *gallery[^>]* *>[\\s\\S]*?< */ *gallery *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.kill = function(opening, closing, subopening, subclosing, repl) {
var oldk=this.data;
var k=this.killStuff(this.data, opening, closing, subopening, subclosing, repl);
while (k.length < oldk.length) {
oldk=k;
k=this.killStuff(k, opening, closing, subopening, subclosing, repl);
}
this.data=k;
};
/**
@private
*/
Previewmaker.prototype.killStuff = function (txt, opening, closing, subopening, subclosing, repl) {
var op=this.makeRegexp(opening);
var cl=this.makeRegexp(closing, '^');
var sb=subopening ? this.makeRegexp(subopening, '^') : null;
var sc=subclosing ? this.makeRegexp(subclosing, '^') : cl;
if (!op || !cl) {
alert('Navigation Popups error: op or cl is null! something is wrong.');
return;
}
if (!op.test(txt)) { return txt; }
var ret='';
var opResult = op.exec(txt);
ret = txt.substring(0,opResult.index);
txt=txt.substring(opResult.index+opResult[0].length);
var depth = 1;
while (txt.length > 0) {
var removal=0;
if (depth==1 && cl.test(txt)) {
depth--;
removal=cl.exec(txt)[0].length;
} else if (depth > 1 && sc.test(txt)) {
depth--;
removal=sc.exec(txt)[0].length;
}else if (sb && sb.test(txt)) {
depth++;
removal=sb.exec(txt)[0].length;
}
if ( !removal ) { removal = 1; }
txt=txt.substring(removal);
if (depth==0) { break; }
}
return ret + (repl || '') + txt;
};
/**
@private
*/
Previewmaker.prototype.makeRegexp = function (x, prefix, suffix) {
prefix = prefix || '';
suffix = suffix || '';
var reStr='';
var flags='';
if (isString(x)) {
reStr=prefix + literalizeRegex(x) + suffix;
} else if (isRegExp(x)) {
var s=x.toString().substring(1);
var sp=s.split('/');
flags=sp[sp.length-1];
sp[sp.length-1]='';
s=sp.join('/');
s=s.substring(0,s.length-1);
reStr= prefix + s + suffix;
} else {
log ('makeRegexp failed');
}
log ('makeRegexp: got reStr=' + reStr + ', flags=' + flags);
return RegExp(reStr, flags);
};
/**
@private
*/
Previewmaker.prototype.killBoxTemplates = function () {
// taxobox removal... in fact, there's a saudiprincebox_begin, so let's be more general
// also, have float_begin, ... float_end
this.kill(RegExp('[{][{][^{}\\s|]*?(float|box)[_ ](begin|start)', 'i'), /[}][}]\s*/, '{{');
// infoboxes etc
// from [[User:Zyxw/popups.js]]: kill frames too
this.kill(RegExp('[{][{][^{}\\s|]*?(infobox|elementbox|frame)[_ ]', 'i'), /[}][}]\s*/, '{{');
};
/**
@private
*/
Previewmaker.prototype.killTemplates = function () {
this.kill('{{', '}}', '{', '}', ' ');
};
/**
@private
*/
Previewmaker.prototype.killTables = function () {
// tables are bad, too
// this can be slow, but it's an inprovement over a browser hang
// torture test: [[Comparison_of_Intel_Central_Processing_Units]]
this.kill('{|', /[|]}\s*/, '{|');
this.kill(/<table.*?>/i, /<\/table.*?>/i, /<table.*?>/i);
// remove lines starting with a pipe for the hell of it (?)
this.data=this.data.replace(RegExp('^[|].*$', 'mg'), '');
};
/**
@private
*/
Previewmaker.prototype.killImages = function () {
// images and categories are a nono
this.kill(RegExp('[[][[]\\s*(' + pg.ns.image + '|' + pg.ns.category + ')\\s*:', 'i'),
/\]\]\s*/, '[', ']');
};
/**
@private
*/
Previewmaker.prototype.killHTML = function () {
// kill <ref ...>...</ref>
this.kill(/<ref\b.*?>/i, /<\/ref>/i);
// let's also delete entire lines starting with <. it's worth a try.
this.data=this.data.replace(RegExp('(^|\\n) *<.*', 'g'), '\n');
// and those pesky html tags, but not <nowiki> or <blockquote>
var splitted=this.data.parenSplit(/(<.*?>)/);
var len=splitted.length;
for (var i=1; i<len; i=i+2) {
switch (splitted[i]) {
case '<nowiki>':
case '</nowiki>':
break;
default:
if (! /^< *\/? *blockquote\b/i.test(splitted[i])) {
splitted[i]='';
}
}
}
this.data=splitted.join('');
};
/**
@private
*/
Previewmaker.prototype.killChunks = function() { // heuristics alert
// chunks of italic text? you crazy, man?
var italicChunkRegex=new RegExp
("((^|\\n)\\s*:*\\s*''[^']([^']|'''|'[^']){20}(.|\\n[^\\n])*''[.!?\\s]*\\n)+", 'g');
// keep stuff separated, though, so stick in \n (fixes [[Union Jack]]?
this.data=this.data.replace(italicChunkRegex, '\n');
};
/**
@private
*/
Previewmaker.prototype.mopup = function () {
// we simply *can't* be doing with horizontal rules right now
this.data=this.data.replace(RegExp('^-{4,}','mg'),'');
// no indented lines
this.data=this.data.replace(RegExp('(^|\\n) *:[^\\n]*','g'), '');
// replace __TOC__, __NOTOC__ and whatever else there is
// this'll probably do
this.data=this.data.replace(RegExp('^__[A-Z_]*__ *$', 'gmi'),'');
};
/**
@private
*/
Previewmaker.prototype.firstBit = function () {
// dont't be givin' me no subsequent paragraphs, you hear me?
/// first we "normalize" section headings, removing whitespace after, adding before
var d=this.data;
if (getValueOf('popupPreviewCutHeadings')) {
this.data=this.data.replace(RegExp('\\s*(==+[^=]*==+)\\s*', 'g'), '\n\n$1 ');
/// then we want to get rid of paragraph breaks whose text ends badly
this.data=this.data.replace(RegExp('([:;]) *\\n{2,}', 'g'), '$1\n');
this.data=this.data.replace(RegExp('^[\\s\\n]*'), '');
stuff=(RegExp('^([^\\n]|\\n[^\\n\\s])*')).exec(this.data);
if (stuff) { d = stuff[0]; }
if (!getValueOf('popupPreviewFirstParOnly')) { d = this.data; }
/// now put \n\n after sections so that bullets and numbered lists work
d=d.replace(RegExp('(==+[^=]*==+)\\s*', 'g'), '$1\n\n');
}
// superfluous sentences are RIGHT OUT.
// note: exactly 1 set of parens here needed to make the slice work
d = d.parenSplit(RegExp('([!?.]+["'+"'"+']*\\s)','g'));
// leading space is bad, mmkay?
d[0]=d[0].replace(RegExp('^\\s*'), '');
var notSentenceEnds=RegExp('([^.][a-z][.] *[a-z]|etc|sic|Dr|Mr|Mrs|Ms|St|no|op|cit|\\[[^\\]]*|\\s[A-Zvclm])$', 'i');
d = this.fixSentenceEnds(d, notSentenceEnds);
this.fullLength=d.join('').length;
var maxChars=getValueOf('popupMaxPreviewCharacters') + this.extraCharacters;
var n=this.maxSentences;
var dd=this.firstSentences(d,n);
do {
dd=this.firstSentences(d,n); --n;
} while ( dd.length > this.maxCharacters && n != 0 );
this.data = dd;
};
/**
@private
*/
Previewmaker.prototype.fixSentenceEnds = function(strs, reg) {
// take an array of strings, strs
// join strs[i] to strs[i+1] & strs[i+2] if strs[i] matches regex reg
var abbrevRe=/\b[a-z][^a-z]*$/i;
for (var i=0; i<strs.length-2; ++i) {
if (reg.test(strs[i])) {
a=[];
for (var j=0; j<strs.length; ++j) {
if (j<i) a[j]=strs[j];
if (j==i) a[i]=strs[i]+strs[i+1]+strs[i+2];
if (j>i+2) a[j-2]=strs[j];
}
return this.fixSentenceEnds(a,reg);
}
// BUGGY STUFF - trying to fix up [[S. C. Johnson & Son]] preview
if (false && abbrevRe.test(strs[i])) {
var j=i, buf='';
do {
buf=buf+strs[i]+strs[i+1];
i=i+2;
} while (i<strs.length-2 && abbrevRe.test(strs[i]));
strs[i]=buf+strs[i];
var a=(j?strs.slice(0,j-1):[]).concat(strs.slice(i));
return this.fixSentenceEnds(a,reg);
}
}
return strs;
};
/**
@private
*/
Previewmaker.prototype.firstSentences = function(strs, howmany) {
var t=strs.slice(0, 2*howmany);
return t.join('');
};
/**
@private
*/
Previewmaker.prototype.killBadWhitespace = function() {
// also cleans up isolated '''', eg [[Suntory Sungoliath]]
this.data=this.data.replace(RegExp('^ *\'+ *$', 'gm'), '');
};
/**
Runs the various methods to generate the preview.
The preview is stored in the <code>html</html> field.
@private
*/
Previewmaker.prototype.makePreview = function() {
if (this.owner.article.namespace()!=pg.ns.template) {
this.killComments();
this.killDivs();
this.killGalleries();
this.killBoxTemplates();
if (getValueOf('popupPreviewKillTemplates')) {
this.killTemplates();
} else {
this.killMultilineTemplates();
}
this.killTables();
this.killImages();
this.killHTML();
this.killChunks();
this.mopup();
this.firstBit();
this.killBadWhitespace();
}
this.html=wiki2html(this.data, this.baseUrl); // needs livepreview
this.fixHTML();
this.stripLongTemplates();
};
Previewmaker.prototype.editSummaryPreview=function() {
var c=this.data;
var re=/^\/[*] +(.*?) +[*]\/(.*)/;
if (re.test(c)) {
var section=c.replace(re, '$1');
var t=new Title().fromURL(this.baseUrl);
t.anchorFromUtf(section);
// work around livepreview brokenness with anchors:
// pass .-escaped anchor instead of literal value
c=c.replace(re, '[[' + t.toString(true).split("'").join('%27') +
'#' + t.anchor.split("'").join('%27') + '|→]]' +
'<span class=autocomment>$1</span>$2');
}
this.html=wiki2html(c, this.baseUrl);
return this.html;
};
//<NOLITE>
/** Test function for debugging preview problems one step at a time.
*/
function previewSteps(txt) {
try {
txt=txt || document.editform.wpTextbox1.value;
} catch (err) {
if (pg.cache.pages.length > 0) {
txt=pg.cache.pages[pg.cache.pages.length-1].data;
} else {
alert('provide text or use an edit page');
}
}
txt=txt.substring(0,10000);
var base=pg.wiki.articlebase + Title.fromURL(document.location.href).urlString();
var p=new Previewmaker(txt, base, pg.current.link.navpopup);
if (this.owner.article.namespace() != pg.ns.template) {
p.killComments(); if (!confirm('done killComments(). Continue?\n---\n' + p.data)) { return; }
p.killDivs(); if (!confirm('done killDivs(). Continue?\n---\n' + p.data)) { return; }
p.killGalleries(); if (!confirm('done killGalleries(). Continue?\n---\n' + p.data)) { return; }
p.killBoxTemplates(); if (!confirm('done killBoxTemplates(). Continue?\n---\n' + p.data)) { return; }
if (getValueOf('popupPreviewKillTemplates')) {
p.killTemplates(); if (!confirm('done killTemplates(). Continue?\n---\n' + p.data)) { return; }
} else {
p.killMultilineTemplates(); if (!confirm('done killMultilineTemplates(). Continue?\n---\n' + p.data)) { return; }
}
p.killTables(); if (!confirm('done killTables(). Continue?\n---\n' + p.data)) { return; }
p.killImages(); if (!confirm('done killImages(). Continue?\n---\n' + p.data)) { return; }
p.killHTML(); if (!confirm('done killHTML(). Continue?\n---\n' + p.data)) { return; }
p.killChunks(); if (!confirm('done killChunks(). Continue?\n---\n' + p.data)) { return; }
p.mopup(); if (!confirm('done mopup(). Continue?\n---\n' + p.data)) { return; }
p.firstBit(); if (!confirm('done firstBit(). Continue?\n---\n' + p.data)) { return; }
p.killBadWhitespace(); if (!confirm('done killBadWhitespace(). Continue?\n---\n' + p.data)) { return; }
}
p.html=wiki2html(p.data, base); // needs livepreview
p.fixHTML(); if (!confirm('done fixHTML(). Continue?\n---\n' + p.html)) { return; }
p.stripLongTemplates(); if (!confirm('done stripLongTemplates(). Continue?\n---\n' + p.html)) { return; }
alert('finished preview - end result follows.\n---\n' + p.html);
}
//</NOLITE>
/**
Works around a quoting bug in livepreview.
<code>wiki2html('[[Foo\'s "bar"]]')</code> gives @literal{<a href='Foo's "bar"'>}
which doesn't do very well. We change this into @literal{<a href="Foo's %22bar%22">}
@private
*/
Previewmaker.prototype.fixHTML = function() {
if(!this.html) return;
// all links seem to have potential issues with quotation marks
var splitted=this.html.parenSplit(/href='([^>]*)'/g);
var ret='';
for (var i=0; i<splitted.length; ++i) {
if(i%2==0) { ret += splitted[i]; continue; }
if(i%2==1) { ret += 'href="' + splitted[i].split('"').join('%22') + '"'; }
}
// fix question marks in wiki links
// maybe this'll break some stuff :-(
ret=ret.replace(RegExp('\(<a href="/' + pg.wiki.articlePath + '/[^"]*\)[?]\(.*?"\)', 'g'), '$1%3F$2');
// FIXME fix up % too
this.html=ret;
};
/**
Generates the preview and displays it in the current popup.
Does nothing if the generated preview is invalid or consists of whitespace only.
Also activates wikilinks in the preview for subpopups if the popupSubpopups option is true.
*/
Previewmaker.prototype.showPreview = function () {
this.makePreview();
if (typeof this.html != typeof '') return;
if (RegExp('^\\s*$').test(this.html)) return;
setPopupHTML('<hr>', 'popupPrePreviewSep', this.owner.idNumber);
setPopupTipsAndHTML(this.html, 'popupPreview', this.owner.idNumber, { owner: this.owner });
var more = (this.fullLength > this.data.length) ? this.moreLink() : '';
setPopupHTML(more, 'popupPreviewMore', this.owner.idNumber);
};
/**
@private
*/
Previewmaker.prototype.moreLink=function() {
var a=document.createElement('a');
a.className='popupMoreLink';
a.innerHTML=popupString('more...');
var savedThis=this;
a.onclick=function() {
savedThis.maxCharacters+=2000;
savedThis.maxSentences+=20;
savedThis.setData();
savedThis.showPreview();
}
return a;
}
/**
@private
*/
Previewmaker.prototype.stripLongTemplates = function() {
// operates on the HTML!
this.html=this.html.replace(RegExp('^.{0,1000}[{][{][^}]*?(<(p|br)( /)?>\\s*){2,}([^{}]*?[}][}])?', 'gi'), '');
this.html=this.html.split('\n').join(' '); // workaround for <pre> templates
this.html=this.html.replace(RegExp('[{][{][^}]*<pre>[^}]*[}][}]','gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killMultilineTemplates = function() {
this.kill('{{{', '}}}');
this.kill(RegExp('\\s*[{][{][^{}]*\\n'), '}}', '{{');
};
// ENDFILE: previewmaker.js
// STARTFILE: querypreview.js
//<NOLITE>
function loadQueryPreview(queryType, article, navpop) {
var art=new Title(article).urlString();
var url=pg.wiki.wikibase + '/query.php?format=json&';
var htmlGenerator=function(a,d){alert('invalid html generator');};
switch (queryType) {
case 'history':
url += 'titles=' + art + '&what=revisions|userinfo&uioptions=timecorrection&rvcomments&rvlimit=' +
getValueOf('popupHistoryPreviewLimit');
htmlGenerator=historyPreviewHTML;
break;
case 'imagelinks':
// redundant case
url += 'titles=' + art + '&what=imagelinks&ilfilter=all';
htmlGenerator=imagelinksPreviewHTML;
break;
case 'category':
url += 'what=category&cptitle=' + art;
htmlGenerator=categoryPreviewHTML;
break;
case 'contribs':
url += 'what=usercontribs|userinfo&uioptions=timecorrection&titles=' + art + '&uccomments' +
'&uclimit=' + getValueOf('popupContribsPreviewLimit');
htmlGenerator=contribsPreviewHTML;
break;
case 'imagepagepreview':
var trail='&what=imageinfo|content|imagelinks&ilfilter=all';
if (!getValueOf('popupImageLinks')) { trail = '&what=imageinfo|content'; }
if (pg.wiki.commons) { trail += '&iishared'; }
url += 'titles=' + art + trail;
htmlGenerator=imagepagePreviewHTML;
break;
case 'sharedimagepage':
url += 'titles=' + art + '&what=content&proxylang=' + pg.wiki.commonslang;
htmlGenerator=sharedImagePagePreviewHTML;
break;
case 'backlinks':
url += 'what=backlinks&titles=' + art;
htmlGenerator=backlinksPreviewHTML;
break;
}
pendingNavpopTask(navpop);
var callback=function(d){
showQueryPreview(queryType, htmlGenerator(article,d,navpop), navpop.idNumber, navpop, d);
};
var go = function(){
getPageWithCaching(url, callback, navpop);
return true;
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_'+queryType+'_QUERY_DATA'); }
}
function showQueryPreview(queryType, html, id, navpop, download) {
var target='popupPreview';
switch (queryType) {
case 'imagelinks':
case 'category':
target='popupPostPreview'; break;
case 'sharedimagepage':
target='popupSecondPreview'; break;
}
setPopupTipsAndHTML(html, target, id);
completedNavpopTask(navpop);
}
function backlinksPreviewHTML(article, download, navpop) {
var jsObj=getJsObj(download.data);
try {
var page=anyChild(jsObj.pages);
var list=page.backlinks;
} catch (someError) { return 'backlinksPreviewHTML went wonky'; }
var html=[];
if (!list) { return popupString('No backlinks found'); }
for (var i=0; i<list.length; ++i) {
var t=new Title(list[i]['*']);
html.push('<a href="' + pg.wiki.titlebase + t.urlString() + '">' + t + '</a>');
}
html=html.join(', ');
if (jsObj.query && jsObj.query.backlinks && jsObj.query.backlinks.next) {
html += popupString(' and more');
}
return html;
}
function sharedImagePagePreviewHTML(article, download, navpop) {
var jsObj=getJsObj(download.data);
try {
var page=anyChild(jsObj.pages);
var content=(page && page.content) ? page.content['*'] : null;
} catch (someError) { return 'sharedimagepage preview failed :( is the query.php extension installed?'; }
var ret='';
if (content) {
var p=prepPreviewmaker(content, article, navpop);
p.makePreview();
if (p.html) { ret += '<hr>' + p.html; }
}
return ret;
}
function imagepagePreviewHTML(article, download, navpop) {
var jsObj=getJsObj(download.data);
try {
var page=anyChild(jsObj['pages']);
var content=(page && page.content) ? page.content['*'] : null;
var a=page.image;
var b=page.sharedimage;
} catch (someError) { return 'imagepage preview failed :( is the query.php extension installed?'; }
var ret='';
if (content) {
var p=prepPreviewmaker(content, article, navpop);
p.makePreview();
if (p.html) { ret += '<hr>' + p.html; }
}
var sharingInfo=getSharingInfo(a,b);
if (sharingInfo) { ret += '<hr>' + sharingInfo; }
if (content!==null && getValueOf('popupSummaryData')) {
var info=getPageInfo(content, download);
log(info);
setPopupTrailer(info, navpop.idNumber);
}
if (!a && b) {
loadQueryPreview('sharedimagepage', article, navpop);
}
showQueryPreview('imagelinks', imagelinksPreviewHTML(article,download), navpop.idNumber, download);
return ret;
}
function getSharingInfo(a,b) {
if (!pg.wiki.commons) { return ''; }
var sharingInfo='';
if (a && b) {
if (checkSameImage(a,b)) {
sharingInfo = popupString('commons dupe');
} else {
sharingInfo = popupString('commons conflict');
}
} else if (a && !b) {
// nothing interesting
if (getValueOf('popupShowNonCommonsImages')) {
sharingInfo = popupString('not commons');
}
} else if (!a && b) {
sharingInfo = popupString('commons only');
} else {
sharingInfo = popupString('No image found');
}
return sharingInfo;
}
function checkSameImage(a,b){
return (a['size']==b['size'] && a['width']==b['width'] && a['bits']==b['bits'] &&
a['media']==b['media'] && a['mime']==b['mime']);
}
function imagelinksPreviewHTML(article, download) {
var jsobj=getJsObj(download.data);
try {
var list=anyChild(jsobj['pages'])['imagelinks'];
if (!list) { return popupString('No image links found'); }
} catch(someError) { return 'Image links preview generation failed :( Is the query.php extension installed?'; }
var ret=[];
for (var i=0; i<list.length; ++i) { ret.push(list[i]['*']); }
if (ret.length === 0) { return popupString('No image links found'); }
return '<h2>' + popupString('File links') + '</h2>' + linkList(ret);
}
function categoryPreviewHTML(article, download) {
var jsobj=getJsObj(download.data);
try{ var list=jsobj['pages']; }
catch(someError) { return 'Category preview failed :( Is the query.php extension installed?'; }
var ret=[];
for (var p in list) { ret.push(list[p]['title']); }
if (ret.length === 0) { return popupString('Empty category'); }
return '<h2>' + tprintf('Category members (%s shown)', [ret.length]) + '</h2>' +linkList(ret);
}
function linkList(list) {
list.sort(function(x,y) { return (x==y ? 0 : (x<y ? -1 : 1)); });
var buf=[];
for (var i=0; i<list.length; ++i) {
buf.push(wikiLink({article: new Title(list[i]),
text: list[i].split(' ').join(' '),
action: 'view'}));
}
return buf.join(', ');
}
function contribsPreviewHTML(article, download, navpop) {
return historyPreviewHTML(article, download, navpop, true);
}
function historyPreviewHTML(article, download, navpop, reallyContribs) {
var jsobj=getJsObj(download.data);
try {
var tz=jsobj.meta.user.timecorrection;
var edits=anyChild(jsobj.pages)[reallyContribs ? 'contributions' : 'revisions'];
} catch (someError) {
return 'Preview failed :-( Is the query.php extension installed?';
}
var timeOffset = getTimeOffset(tz);
Cookie.create('popTz', timeOffset, 1);
var ret=editPreviewTable(article, edits, reallyContribs, timeOffset);
return ret;
}
function getTimeOffset(tz) {
return ( tz && tz.indexOf(':') > -1 ) ? ( parseInt(tz,10)*60 + parseInt(tz.split(':')[1],10) ) : 0;
}
function editPreviewTable(article, h, reallyContribs, timeOffset) {
var html=['<table>'];
var day=null;
var curart=article;
for (var i=0; i<h.length; ++i) {
if (reallyContribs) { var page=h[i]['*']; curart = new Title(page); }
var minor=typeof h[i]['minor']=='undefined' ? '' : '<b>m </b>';
var editDate=adjustDate(getDateFromTimestamp(h[i].timestamp), timeOffset);
var thisDay = dayFormat(editDate);
var thisTime = timeFormat(editDate);
if (thisDay==day) { thisDay=''; }
else { day=thisDay; }
if (thisDay) {
html.push( '<tr><td colspan=3><span class="popup_history_date">' +
thisDay+'</span></td></tr>' );
}
html.push('<tr class="popup_history_row_' + ( (i%2) ? 'odd' : 'even') + '">');
html.push('<td>(<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&diff=prev&oldid=' + h[i]['revid'] + '">' + popupString('last') + '</a>)</td>');
html.push('<td>' +
'<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&oldid=' + h[i]['revid'] + '">' + thisTime + '</a></td>');
var col3url='', col3txt='';
if (!reallyContribs) {
var user=h[i]['user'];
col3url=pg.wiki.titlebase + pg.ns.user + ':' + new Title(user).urlString();
col3txt=user;
} else {
col3url=pg.wiki.titlebase + curart.urlString();
col3txt=page; // FIXME do we have to escape this?
}
html.push('<td>' + (reallyContribs ? minor : '') +
'<a href="' + col3url + '">' + col3txt + '</a></td>');
var comment='';
var c=h[i].comment || h[i]['*'];
if (c) {
comment=new Previewmaker(c, new Title(curart).toUrl()).editSummaryPreview();
}
html.push('<td>' + (!reallyContribs ? minor : '') + comment + '</td>');
html.push('</tr>');
html=[html.join('')];
}
html.push('</table>');
return html.join('');
}
function getDateFromTimestamp(t) {
var s=t.split(/[^0-9]/);
switch(s.length) {
case 0: return null;
case 1: return new Date(s[0]);
case 2: return new Date(s[0], s[1]-1);
case 3: return new Date(s[0], s[1]-1, s[2]);
case 4: return new Date(s[0], s[1]-1, s[2], s[3]);
case 5: return new Date(s[0], s[1]-1, s[2], s[3], s[4]);
case 6: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]);
default: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5], s[6]);
}
}
function adjustDate(d, offset) {
// offset is in minutes
var o=offset * 60 * 1000;
return new Date( +d + o);
}
function dayFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCFullYear(), editDate.getUTCMonth()+1, editDate.getUTCDate()]).join('-'); }
return map(zeroFill, [editDate.getFullYear(), editDate.getMonth()+1, editDate.getDate()]).join('-');
}
function timeFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCHours(), editDate.getUTCMinutes(), editDate.getUTCSeconds()]).join(':'); }
return map(zeroFill, [editDate.getHours(), editDate.getMinutes(), editDate.getSeconds()]).join(':');
}
//</NOLITE>
// ENDFILE: querypreview.js
// STARTFILE: debug.js
////////////////////////////////////////////////////////////////////
// Debugging functions
////////////////////////////////////////////////////////////////////
function log(){}; // dummy to stop errors
function setupDebugging() {
//<NOLITE>
// debugging - change DEBUG to NONE to switch off
if (window.popupDebug) { // popupDebug is set from .version
window.log=function(x) { //if(gMsg!='')gMsg += '\n'; gMsg+=time() + ' ' + x; };
if (pg.debugLevel != log.None) { window.logger.debug(x); }
}
window.errlog=function(x) {
if (pg.debugLevel != log.None) { window.logger.error(x); }
}
pg.debugLevel=Log.DEBUG;
window.logger = new Log(pg.debugLevel, Log.popupLogger);
log('Initializing logger');
} else {
//</NOLITE>
window.log = function(x) {};
window.errlog = function(x) {};
//<NOLITE>
}
//</NOLITE>
}
// ENDFILE: debug.js
// STARTFILE: images.js
//<NOLITE>
// FIXME rewrite ALL of this
// How the URLs for images in the popup come about
// loadPreview
// |
// getWiki
// |<----------------see other schematic for details
// insertPreview (insertPreview = onComplete)
// |
// | insertPreview gets a wikiText fragment from
// | the wikiText downloaded by getWiki
// |
// [wikiMarkupToAddressFragment]
// |
// | mouseOverWikiLink (gets an "address fragment",
// | | no processing needed)
// \->-*loadThisImage---<----loadImages
// |
// [image(Thumb)URL]-->--hopefully valid image urls
// FIXME get rid of pg.idNumber
function sequentialLoadThisImage (image) {
if (!getValueOf('popupImages')) { return false; }
if (!isValidImageName(image)) { return false; }
var imageUrls=getImageUrls(image);
if (!imageUrls) { return null; }
var img=new Image();
img.isNew=true;
img.pg.idNumber=pg.idNumber;
img.counter=1;
img.onload = function () {
// clear status thingy
setImageStatus('');
var i=findThis(imageUrls, this.src);
var goodSrc=this.src;
var setPopupImage=function () {
var popupImage=document.getElementById("popupImage"+this.pg.idNumber);
if (popupImage && typeof popupImage.src != 'undefined') {
clearInterval(pg.timer.image);
popupImage.src=goodSrc;
popupImage.width=getValueOf('popupImageSize');
popupImage.style.display='inline';
setPopupImageLink(image, pg.wiki.imageSources[i].wiki);
return true;
} else { return false; }
};
pg.timer.image=setInterval(setPopupImage, 250);
pg.cache.images.push(goodSrc);
};
img.onerror = function () {
pg.cache.badImageUrls.push(this.src);
};
img.setNext = function () {
var currentSrc=null;
var newSrc;
if (!this.isNew) { currentSrc=this.src; }
this.isNew=false;
newSrc= (currentSrc) ? nextOne(imageUrls, currentSrc) : imageUrls[0];
while (findThis(pg.cache.badImageUrls, newSrc)) {
newSrc=nextOne(imageUrls, newSrc);
if (!newSrc) {
setImageStatus (' :-(');
return;
}
}
setImageStatus(' '+findThis(imageUrls, newSrc));
this.src=newSrc;
};
// start the ball rolling
img.setNext();
}
function loadThisImageAtThisUrl(image, url) {
log('loading "best" image:\n'+url);
pg.misc.gImage=new Title(image.toString());
pg.misc.imageArray = [];
pg.misc.imageArray[0] = new Image();
pg.misc.imageArray[0].src=url;
if (pg.timer.image || pg.timer.image===0) {
clearInterval(pg.timer.image);
pg.counter.checkImages=0;
}
pg.timer.image=setInterval(checkImages, 250);
return;
}
// methinks this is unbelievably silly
// it dovetails with the parallel image loader function
function checkImages() {
//log('checkImages: pg.counter.loop='+pg.counter.loop+'; pg.counter.checkImages='+pg.counter.checkImages);
if (pg.timer.checkImages || pg.timer.checkImages===0) {
clearInterval(pg.timer.checkImages);
pg.timer.checkImages=null;
if (pg.counter.loop > 10) {pg.counter.loop=0; log('too many iterations of checkImages'); return;}
pg.counter.loop++;
} else pg.counter.checkImages++;
var status = ( pg.counter.checkImages % 2 ) ? ':' : '.' ;
setImageStatus(status);
if (pg.counter.checkImages > 100) {
pg.counter.checkImages = 0;
log ('pg.counter.checkImages too big in checkImages; returning');
clearInterval(pg.timer.image);
}
var popupImage=null;
popupImage=document.getElementById("popupImg"+pg.idNumber);
if (popupImage == null) {
// this doesn't seem to happen any more in practise for some reason
// still, I'll leave it in
log('checkImages: document.getElementById("popupImg'+pg.idNumber+'") is null! retrying in 333ms...');
pg.timer.checkImages=setInterval("checkImages()",333);
return;
}
log('checkImages: found element popupImg'+pg.idNumber+', and src='+popupImage.src);
// get the first image to successfully load
// and put it in the popupImage
for(var i = 0; i < pg.misc.imageArray.length; ++i) {
if(isImageOk(pg.misc.imageArray[i])) {
// stop all the gubbins, assign the image and return
log('checkImages: got at pos '+i+', src='+pg.misc.imageArray[i].src);
clearInterval(pg.timer.image);
if(pg.misc.gImage && pg.misc.gImage.namespace() == pg.ns.image) {
popupImage.src=pg.misc.imageArray[i].src;
popupImage.width=getValueOf('popupImageSize');
popupImage.style.display='inline';
// should we check to see if it's already there? maybe...
pg.cache.images.push(pg.misc.imageArray[i].src);
setPopupImageLink(pg.misc.gImage, pg.wiki.imageSources[i].wiki);
stopImagesDownloading();
}
setImageStatus('');
// reset evil nonconstant globals
delete pg.misc.imageArray; pg.misc.imageArray=[];
pg.timer.image=null;
pg.counter.checkImages=0;
pg.counter.loop=0;
return popupImage.src;
}
}
log('checkImages: no good image found. retrying in a tic...');
pg.timer.checkImages=setInterval("checkImages()",333);
}
function stopImagesDownloading() {
pg.misc.gImage=null;
if (pg.misc.imageArray == null) { return null; }
for (var i=0; i<pg.misc.imageArray.length; ++i) {
//pg.misc.imageArray[i].src=''; // this is a REALLY BAD IDEA
delete pg.misc.imageArray[i];
//pg.misc.imageArray[i] = new Image();
}
pg.misc.imageArray = [];
}
function toggleSize() {
var imgContainer=this;
if (!imgContainer) { alert('imgContainer is null :/'); return;}
img=imgContainer.firstChild;
if (!img) { alert('img is null :/'); return;}
if (!img.style.width || img.style.width=='') { img.style.width='100%'; }
else { img.style.width=''; }
}
function setPopupImageLink (img, wiki) {
if( wiki === null || img === null ) { return null; }
var a=document.getElementById("popupImageLink"+pg.idNumber);
if (a === null) { return null; }
switch (getValueOf('popupThumbAction')) {
case 'imagepage':
if (pg.current.article.namespace()!=pg.ns.image) {
a.href=pg.wiki.titlebase + img.urlString();
// FIXME: unreliable pg.idNumber
popTipsSoonFn('popupImage' + pg.idNumber)();
break;
} // else fall through
case 'sizetoggle':
a.onclick=toggleSize;
a.title=popupString('Toggle image size');
return;
case 'linkfull':
var linkURL = imageURL(img, wiki);
if (linkURL) {
a.href = linkURL;
a.title=popupString('Open full-size image');
}
return;
}
}
function isImageOk(img) {
// IE test
if (!img.complete) { return false; }
// gecko test
if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) { return false; }
// test for konqueror and opera
// note that img.width must not be defined in the html with a width="..."
// for this to work.
// konq seems to give "broken images" width 16, presumably an icon width
// this test would probably work in gecko too, *except for very small images*
if (typeof img.width == 'undefined' || img.width <= 16) { return false; }
// No other way of checking: assume it's ok.
return true;
}
// those odd a/a5/ bits of image urls
function imagePathComponent(article) { // article is string, no namespace
// FIXME needs testing with odd characters
var forhash=article.split(' ').join('_');
var hash=hex_md5(forhash);
return hash.substring(0,1) + '/' + hash.substring(0,2) + '/';
}
function getImageUrlStart(wiki) { // this returns a trailing slash
switch (wiki) {
case 'en.wikipedia.org': return 'http://upload.wikimedia.org/wikipedia/en/';
case pg.wiki.commons: return 'http://upload.wikimedia.org/wikipedia/commons/';
case 'en.wiktionary.org': return 'http://en.wiktionary.org/upload/en/';
case 'secure.wikimedia.org':
return joinPath(['http://upload.wikimedia.org', pg.wiki.prePath]) + '/'; break;
default: // unsupported - take a guess
if (pg.wiki.wikimedia) {
return 'http://upload.wikimedia.org/wikipedia/' + pg.wiki.lang +'/';
}
/* this should work for wikicities */
return 'http://' + wiki + '/images/';
}
}
function imageURL(img, wiki) {
if (getValueOf('popupImagesFromThisWikiOnly') && wiki != pg.wiki.hostname) return null;
var imgurl=null;
var pathcpt = imagePathComponent(img.stripNamespace());
imgurl=getImageUrlStart(wiki) + pathcpt + img.stripNamespace().split(' ').join('_');
return imgurl;
}
function imageThumbURL(img, wiki, width) {
//
// eg http://upload.wikimedia.org/wikipedia/en/thumb/6/61/
// Rubiks_cube_solved.jpg/120px-Rubiks_cube_solved.jpg
// ^^^^^^^^^^^^^^^^^^^^^^^
// wikicities omits this bit
// AND wikicities needs a new pathcpt for each filename including thumbs
if (getValueOf('popupImagesFromThisWikiOnly') && wiki != pg.wiki.hostname) return null;
if (getValueOf('popupNeverGetThumbs')) return null;
var imgurl=null;
var stripped=img.stripNamespace();
var pathcpt;
if (pg.wiki.wikimedia) pathcpt = imagePathComponent(stripped);
else pathcpt = imagePathComponent(width+'px-'+stripped);
imgurl=getImageUrlStart(wiki) + "thumb/" + pathcpt;
if (pg.wiki.wikimedia) imgurl += stripped + '/';
imgurl += width +"px-" + stripped;
return imgurl;
}
function loadImages(image) {
if (typeof image.stripNamespace != 'function') { alert('loadImages bad'); }
if (getValueOf('popupLoadImagesSequentially')) { return sequentialLoadThisImage(image); }
return parallelLoadThisImage(image);
}
function getImageUrls(image) {
if (typeof image.stripNamespace != 'function') { alert('getImageUrls bad'); }
var imageUrls=[];
for (var i=0; i<pg.wiki.imageSources.length; ++i) {
var url;
if (pg.wiki.imageSources[i].thumb) {
url=imageThumbURL(image, pg.wiki.imageSources[i].wiki, pg.wiki.imageSources[i].width);
} else { url=imageURL(image, pg.wiki.imageSources[i].wiki); }
for (var j=0; j<pg.cache.images.length; ++j) {
if (url == pg.cache.images[j]) {
loadThisImageAtThisUrl(image, url);
return null;
}
}
if (url!=null) imageUrls.push(url);
}
return imageUrls;
}
// this is probably very wasteful indeed of bandwidth
// hey ho
function parallelLoadThisImage (image) {
if (typeof image.stripNamespace != 'function') { alert('parallelLoadThisImage bad'); }
if (!getValueOf('popupImages')) return;
if (!isValidImageName(image)) return false;
var imageUrls=getImageUrls(image);
if (!imageUrls) return null;
for (var i=0; i<imageUrls.length; ++i) {
var url = imageUrls[i];
pg.misc.imageArray[i]=new Image();
pg.misc.imageArray[i].src=url;
}
if (pg.timer.image != null) {
clearInterval(pg.timer.image);
pg.counter.checkImages=0;
}
pg.misc.gImage=new Title(image.toString());
pg.timer.image=setInterval("checkImages()", 250);
return true;
}
function getValidImageFromWikiText(wikiText) {
var imagePage=null;
// nb in pg.re.image we're interested in the second bracketed expression
// this may change if the regex changes :-(
//var match=pg.re.image.exec(wikiText);
var matched=null;
var match;
// strip html comments, used by evil bots :-(
var t = removeMatchesUnless(wikiText, RegExp('(<!--[\\s\\S]*?-->)'), 1,
RegExp('^<!--[^[]*popup', 'i'));
while ( match = pg.re.image.exec(t) ) {
// now find a sane image name - exclude templates by seeking {
var m = match[2] || match[6];
var pxWidth=match[4];
if ( isValidImageName(m) &&
(!pxWidth || parseInt(pxWidth,10) >= getValueOf('popupMinImageWidth')) ) {
matched=m;
break;
}
}
pg.re.image.lastIndex=0;
if (!matched) { return null; }
return pg.ns.image+':'+upcaseFirst(matched);
}
function removeMatchesUnless(str, re1, parencount, re2) {
var split=str.parenSplit(re1);
var c=parencount + 1;
for (var i=0; i<split.length; ++i) {
if ( i%c === 0 || re2.test(split[i]) ) { continue; }
split[i]='';
}
return split.join('');
}
//</NOLITE>
// ENDFILE: images.js
// STARTFILE: namespaces.js
// Set up namespaces and other non-strings.js localization
// (currently that means redirs too)
// Put the right namespace list into pg.ns.list, based on pg.wiki.lang
// Default to english if nothing seems to fit
function setNamespaceList() {
var m="Media";
var list = [m, "Special", "Talk", "User", "User talk", "Wikipedia", "Wikipedia talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk", "Portal", "Portal talk"];
var nsIndex = { '': 0, 'Special': 1,
'Talk': 2, 'User': 3, 'User talk': 4, 'Wikipedia': 5,
'Wikipedia talk': 6, 'Image': 7, 'Image talk': 8, 'MediaWiki': 9,
'MediaWiki talk': 10, 'Template': 11, 'Template talk': 12,
'Help': 13, 'Help talk': 14, 'Category': 15, 'Category talk':16,
'Portal': 17, 'Portal talk': 18};
var nsLists = {
//<NOLITE>
"af": [m, "Spesiaal", "Bespreking", "Gebruiker", "Gebruikerbespreking", "Wikipedia", "Wikipediabespreking", "Beeld", "Beeldbespreking", "MediaWiki", "MediaWikibespreking", "Sjabloon", "Sjabloonbespreking", "Hulp", "Hulpbespreking", "Kategorie", "Kategoriebespreking"],
"als": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion"],
"ar": ["ملف", "خاص", "نقاش", "مستخدم", "نقاش المستخدم", "ويكيبيديا", "نقاش ويكيبيديا", "صورة", "نقاش الصورة", "ميدياويكي", "نقاش ميدياويكي", "Template", "نقاش Template", "مساعدة", "نقاش المساعدة", "تصنيف", "نقاش التصنيف"],
"ast": [m, "Especial", "Discusión", "Usuariu", "Usuariu discusión", "Uiquipedia", "Uiquipedia discusión", "Imaxen", "Imaxen discusión", "MediaWiki", "MediaWiki discusión", "Plantilla", "Plantilla discusión", "Ayuda", "Ayuda discusión", "Categoría", "Categoría discusión"],
"be": ["Мэдыя", "Спэцыяльныя", "Абмеркаваньне", "Удзельнік", "Гутаркі ўдзельніка", "Вікіпэдыя", "Абмеркаваньне Вікіпэдыя", "Выява", "Абмеркаваньне выявы", "MediaWiki", "Абмеркаваньне MediaWiki", "Шаблён", "Абмеркаваньне шаблёну", "Дапамога", "Абмеркаваньне дапамогі", "Катэгорыя", "Абмеркаваньне катэгорыі"],
"bg": ["Медия", "Специални", "Беседа", "Потребител", "Потребител беседа", "Уикипедия", "Уикипедия беседа", "Картинка", "Картинка беседа", "МедияУики", "МедияУики беседа", "Шаблон", "Шаблон беседа", "Помощ", "Помощ беседа", "Категория", "Категория беседа"],
"bm": [m, "Special", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipedia", "Discussion Wikipedia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie"],
"bn": ["বিশেষ", "আলাপ", "ব্যবহারকারী", "ব্যবহারকারী আলাপ", "উইকিপেডিয়া", "উইকিপেডিয়া আলাপ", "চিত্র", "চিত্র আলাপ", "MediaWik i আলাপ", m, "MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"br": [m, "Dibar", "Kaozeal", "Implijer", "Kaozeadenn Implijer", "Wikipedia", "Kaozeadenn Wikipedia", "Skeudenn", "Kaozeadenn Skeudenn", "MediaWiki", "Kaozeadenn MediaWiki", "Patrom", "Kaozeadenn Patrom", "Skoazell", "Kaozeadenn Skoazell", "Rummad", "Kaozeadenn Rummad"],
"ca": [m, "Especial", "Discussió", "Usuari", "Usuari Discussió", "Viquipèdia", "Viquipèdia Discussió", "Imatge", "Imatge Discussió", "MediaWiki", "MediaWiki Discussió", "Template", "Template Discussió", "Ajuda", "Ajuda Discussió", "Categoria", "Categoria Discussió"],
"cs": ["Média", "Speciální", "Diskuse", "Wikipedista", "Wikipedista diskuse", "Wikipedie", "Wikipedie diskuse", "Soubor", "Soubor diskuse", "MediaWiki", "MediaWiki diskuse", "Šablona", "Šablona diskuse", "Nápověda", "Nápověda diskuse", "Kategorie", "Kategorie diskuse"],
"csb": [m, "Specjalnô", "Diskùsëjô", "Brëkòwnik", "Diskùsëjô brëkòwnika", "Wiki", "Diskùsëjô Wiki", "Òbrôzk", "Diskùsëjô òbrôzków", "MediaWiki", "Diskùsëjô MediaWiki", "Szablóna", "Diskùsëjô Szablónë", "Pòmòc", "Diskùsëjô Pòmòcë", "Kategòrëjô", "Diskùsëjô Kategòrëji"],
"cv": ["Медиа", "Ятарлă", "Сӳтсе явасси", "Хутшăнакан", "Хутшăнаканăн канашлу страници", "Wikipedia", "0", "Ӳкерчĕк", "Ӳкерчĕке сӳтсе явмалли", "MediaWiki", "MediaWiki сӳтсе явмалли", "Шаблон", "Шаблона сӳтсе явмалли", "Пулăшу", "Пулăшăва сӳтсе явмалли", "Категори", "Категорине сӳтсе явмалли"],
"cy": [m, "Arbennig", "Sgwrs", "Defnyddiwr", "Sgwrs Defnyddiwr", "Wicipedia", "Sgwrs Wicipedia", "Delwedd", "Sgwrs Delwedd", "MediaWiki", "Sgwrs MediaWiki", "Nodyn", "Sgwrs Nodyn", "Help", "Help talk", "Category", "Category talk"],
"da": [m, "Speciel", "Diskussion", "Bruger", "Brugerdiskussion", "Wikipedia", "Wikipedia-diskussion", "Billede", "Billeddiskussion", "MediaWiki", "MediaWiki-diskussion", "Skabelon", "Skabelondiskussion", "Hjælp", "Hjælpdiskussion", "Kategori", "Kategoridiskussion", "Portal", "Portaldiskussion"],
"de": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion", "Portal", "Portal Diskussion"],
"el": ["Μέσον", "Ειδικό", "Συζήτηση", "Χρήστης", "Συζήτηση χρήστη", "Βικιπαίδεια", "Βικιπαίδεια συζήτηση", "Εικόνα", "Συζήτηση εικόνας", "MediaWiki", "MediaWiki talk", "Πρότυπο", "Συζήτηση προτύπου", "Βοήθεια", "Συζήτηση βοήθειας", "Κατηγορία", "Συζήτηση κατηγορίας"],
"eo": [m, "Speciala", "Diskuto", "Vikipediisto", "Vikipediista diskuto", "Vikipedio", "Vikipedio diskuto", "Dosiero", "Dosiera diskuto", "MediaWiki", "MediaWiki diskuto", "Ŝablono", "Ŝablona diskuto", "Helpo", "Helpa diskuto", "Kategorio", "Kategoria diskuto"],
"es": [m, "Especial", "Discusión", "Usuario", "Usuario Discusión", "Wikipedia", "Wikipedia Discusión", "Imagen", "Imagen Discusión", "MediaWiki", "MediaWiki Discusión", "Plantilla", "Plantilla Discusión", "Ayuda", "Ayuda Discusión", "Categoría", "Categoría Discusión"],
"et": ["Meedia", "Eri", "Arutelu", "Kasutaja", "Kasutaja arutelu", "Vikipeedia", "Vikipeedia arutelu", "Pilt", "Pildi arutelu", "MediaWiki", "MediaWiki arutelu", "Mall", "Malli arutelu", "Juhend", "Juhendi arutelu", "Kategooria", "Kategooria arutelu"],
"eu": [m, "Aparteko", "Eztabaida", "Lankide", "Lankide eztabaida", "Wikipedia", "Wikipedia eztabaida", "Irudi", "Irudi eztabaida", "MediaWiki", "MediaWiki eztabaida", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"fa": ["مدیا", "ویژه", "بحث", "کاربر", "بحث کاربر", "ویکیپدیا", "بحث ویکیپدیا", "تصویر", "بحث تصویر", "مدیاویکی", "بحث مدیاویکی", "الگو", "بحث الگو", "راهنما", "بحث راهنما", "رده", "بحث رده"],
"fi": [m, "Toiminnot", "Keskustelu", "Käyttäjä", "Keskustelu käyttäjästä", "Wikipedia", "Keskustelu Wikipediasta", "Kuva", "Keskustelu kuvasta", "MediaWiki", "MediaWiki talk", "Malline", "Keskustelu mallineesta", "Ohje", "Keskustelu ohjeesta", "Luokka", "Keskustelu luokasta"],
"fo": ["Miðil", "Serstakur", "Kjak", "Brúkari", "Brúkari kjak", "Wikipedia", "Wikipedia kjak", "Mynd", "Mynd kjak", "MidiaWiki", "MidiaWiki kjak", "Fyrimynd", "Fyrimynd kjak", "Hjálp", "Hjálp kjak", "Bólkur", "Bólkur kjak"],
"fr": [m, "Special", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipédia", "Discussion Wikipédia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie", "Portail", "Discussion Portail"],
"fur": [m, "Speciâl", "Discussion", "Utent", "Discussion utent", "Vichipedie", "Discussion Vichipedie", "Figure", "Discussion figure", "MediaWiki", "Discussion MediaWiki", "Model", "Discussion model", "Jutori", "Discussion jutori", "Categorie", "Discussion categorie"],
"fy": [m, "Wiki", "Oerlis", "Meidogger", "Meidogger oerlis", "Wikipedy", "Wikipedy oerlis", "Ofbyld", "Ofbyld oerlis", "MediaWiki", "MediaWiki oerlis", "Berjocht", "Berjocht oerlis", "Hulp", "Hulp oerlis", "Kategory", "Kategory oerlis"],
"ga": ["Meán", "Speisialta", "Plé", "Úsáideoir", "Plé úsáideora", "Vicipéid", "Plé Vicipéide", "Íomhá", "Plé íomhá", "MediaWiki", "Plé MediaWiki", "Teimpléad", "Plé teimpléid", "Cabhair", "Plé cabhrach", "Catagóir", "Plé catagóire"],
"gu": [m, "Special", "Talk", "User", "User talk", "વિકિપીડિયા", "વિકિપીડિયા talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"he": [m, "מיוחד", "שיחה", "משתמש", "שיחת משתמש", "ויקיפדיה", "שיחת ויקיפדיה", "תמונה", "שיחת תמונה", "MediaWiki", "שיחת MediaWiki", "תבנית", "שיחת תבנית", "עזרה", "שיחת עזרה", "קטגוריה", "שיחת קטגוריה"],
"hi": [m, "विशेष", "वार्ता", "सदस्य", "सदस्य वार्ता", "विकिपीडिया", "विकिपीडिया वार्ता", "चित्र", "चित्र वार्ता", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "श्रेणी", "श्रेणी वार्ता", "Help", "Help talk"],
"hr": ["Mediji", "Posebno", "Razgovor", "Suradnik", "Razgovor sa suradnikom", "Wikipedia", "Razgovor Wikipedia", "Slika", "Razgovor o slici", "MediaWiki", "MediaWiki razgovor", "Predložak", "Razgovor o predlošku", "Pomoć", "Razgovor o pomoći", "Kategorija", "Razgovor o kategoriji"],
"hu": ["Média", "Speciális", "Vita", "User", "User vita", "Wikipédia", "Wikipédia vita", "Kép", "Kép vita", "MediaWiki", "MediaWiki vita", "Sablon", "Sablon vita", "Segítség", "Segítség vita", "Kategória", "Kategória vita"],
"ia": [m, "Special", "Discussion", "Usator", "Discussion Usator", "Wikipedia", "Discussion Wikipedia", "Imagine", "Discussion Imagine", "MediaWiki", "Discussion MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"id": [m, "Istimewa", "Bicara", "Pengguna", "Bicara Pengguna", "Wikipedia", "Pembicaraan Wikipedia", "Gambar", "Pembicaraan Gambar", "MediaWiki", "Pembicaraan MediaWiki", "Templat", "Pembicaraan Templat", "Bantuan", "Pembicaraan Bantuan", "Kategori", "Pembicaraan Kategori"],
"is": ["Miðill", "Kerfissíða", "Spjall", "Notandi", "Notandaspjall", "Wikipedia", "Wikipediaspjall", "Mynd", "Myndaspjall", "Melding", "Meldingarspjall", "Snið", "Sniðaspjall", "Hjálp", "Hjálparspjall", "Flokkur", "Flokkaspjall"],
"it": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "Immagine", "Discussioni immagine", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria"],
"ja": [m, "特別", "ノート", "利用者", "利用者‐会話", "Wikipedia", "Wikipedia‐ノート", "画像", "画像‐ノート", "MediaWiki", "MediaWiki‐ノート", "Template", "Template‐ノート", "Help", "Help‐ノート", "Category", "Category‐ノート"],
"ka": ["მედია", "სპეციალური", "განხილვა", "მომხმარებელი", "მომხმარებელი განხილვა", "ვიკიპედია", "ვიკიპედია განხილვა", "სურათი", "სურათი განხილვა", "მედიავიკი", "მედიავიკი განხილვა", "თარგი", "თარგი განხილვა", "დახმარება", "დახმარება განხილვა", "კატეგორია", "კატეგორია განხილვა"],
"ko": [m, "특수기능", "토론", "사용자", "사용자토론", "위키백과", "위키백과토론", "그림", "그림토론", "분류", "분류토론", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk"],
"ku": ["Medya", "Taybet", "Nîqaş", "Bikarhêner", "Bikarhêner nîqaş", "Wîkîpediya", "Wîkîpediya nîqaş", "Wêne", "Wêne nîqaş", "MediaWiki", "MediaWiki nîqaş", "Şablon", "Şablon nîqaş", "Alîkarî", "Alîkarî nîqaş", "Kategorî", "Kategorî nîqaş"],
"la": ["Specialis", "Disputatio", "Usor", "Disputatio Usoris", "Vicipaedia", "Disputatio Vicipaediae", "Imago", "Disputatio Imaginis", "MediaWiki", "Disputatio MediaWiki", "Formula", "Disputatio Formulae", "Auxilium", "Disputatio Auxilii", "Categoria", "Disputatio Categoriae", m],
"li": [m, "Speciaal", "Euverlik", "Gebroeker", "Euverlik gebroeker", "Wikipedia", "Euverlik Wikipedia", "Aafbeilding", "Euverlik afbeelding", "MediaWiki", "Euverlik MediaWiki", "Sjabloon", "Euverlik sjabloon", "Help", "Euverlik help", "Kategorie", "Euverlik kategorie"],
"lt": ["Medija", "Specialus", "Aptarimas", "Naudotojas", "Naudotojo aptarimas", "Wikipedia", "Wikipedia aptarimas", "Vaizdas", "Vaizdo aptarimas", "MediaWiki", "MediaWiki aptarimas", "Šablonas", "Šablono aptarimas", "Pagalba", "Pagalbos aptarimas", "Kategorija", "Kategorijos aptarimas"],
"mk": ["Медија", "Специјални", "Разговор", "Корисник", "Корисник разговор", "Wikipedia", "Wikipedia разговор", "Слика", "Слика разговор", "МедијаВики", "МедијаВики разговор", "Шаблон", "Шаблон разговор", "Помош", "Помош разговор", "Категорија", "Категорија разговор"],
"ms": [m, "Istimewa", "Perbualan", "Pengguna", "Perbualan Pengguna", "Wikipedia", "Perbualan Wikipedia", "Imej", "Imej Perbualan", "MediaWiki", "MediaWiki Perbualan", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"mt": [m, "Special", "Talk", "User", "User talk", "Wikipedija", "Wikipedija talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"nap": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "Immagine", "Discussioni immagine", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria"],
"nds": [m, "Spezial", "Diskuschoon", "Bruker", "Bruker Diskuschoon", "Wikipedia", "Wikipedia Diskuschoon", "Bild", "Bild Diskuschoon", "MediaWiki", "MediaWiki Diskuschoon", "Vörlaag", "Vörlaag Diskuschoon", "Hülp", "Hülp Diskuschoon", "Kategorie", "Kategorie Diskuschoon"],
"nl": [m, "Speciaal", "Overleg", "Gebruiker", "Overleg gebruiker", "Wikipedia", "Overleg Wikipedia", "Afbeelding", "Overleg afbeelding", "MediaWiki", "Overleg MediaWiki", "Sjabloon", "Overleg sjabloon", "Help", "Overleg help", "Categorie", "Overleg categorie"],
"nn": ["Filpeikar", "Spesial", "Diskusjon", "Brukar", "Brukardiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Fil", "Fildiskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"no": ["Medium", "Spesial", "Diskusjon", "Bruker", "Brukerdiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Bilde", "Bildediskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"nv": [m, "Special", "Naaltsoos baa yinísht'į́", "Choinish'įįhí", "Choinish'įįhí baa yinísht'į́", "Wikiibíídiiya", "Wikiibíídiiya baa yinísht'į́", "E'elyaaígíí", "E'elyaaígíí baa yinísht'į́", "MediaWiki", "MediaWiki baa yinísht'į́", "Template", "Template talk", "Aná'álwo'", "Aná'álwo' baa yinísht'į́", "T'ááłáhági át'éego", "T'ááłáhági át'éego baa yinísht'į́"],
"oc": ["Especial", "Discutir", "Utilisator", "Discutida Utilisator", "Oiquipedià", "Discutida Oiquipedià", "Image", "Discutida Image", "MediaWiki", "MediaWiki talk", "Template", "Template talk", m, "Help", "Help talk", "Category", "Category talk"],
"os": [m, "Сæрмагонд", "Дискусси", "Архайæг", "Архайæджы дискусси", "Wikipedia", "0", "Ныв", "Нывы тыххæй дискусси", "MediaWiki", "Дискусси MediaWiki", "Шаблон", "Шаблоны тыххæй дискусси", "Æххуыс", "Æххуысы тыххæй дискусси", "Категори", "Категорийы тыххæй дискусси"],
"pa": ["ਮੀਡੀਆ", "ਖਾਸ", "ਚਰਚਾ", "ਮੈਂਬਰ", "ਮੈਂਬਰ ਚਰਚਾ", "Wikipedia", "Wikipedia ਚਰਚਾ", "ਤਸਵੀਰ", "ਤਸਵੀਰ ਚਰਚਾ", "ਮੀਡੀਆਵਿਕਿ", "ਮੀਡੀਆਵਿਕਿ ਚਰਚਾ", "ਨਮੂਨਾ", "ਨਮੂਨਾ ਚਰਚਾ", "ਮਦਦ", "ਮਦਦ ਚਰਚਾ", "ਸ਼੍ਰੇਣੀ", "ਸ਼੍ਰੇਣੀ ਚਰਚਾ"],
"pl": [m, "Specjalna", "Dyskusja", "Wikipedysta", "Dyskusja Wikipedysty", "Wikipedia", "Dyskusja Wikipedii", "Grafika", "Dyskusja grafiki", "MediaWiki", "Dyskusja MediaWiki", "Szablon", "Dyskusja szablonu", "Pomoc", "Dyskusja pomocy", "Kategoria", "Dyskusja kategorii", "Portal", "Dyskusja portalu"],
"pt": [m, "Especial", "Discussão", "Usuário", "Usuário Discussão", "Wikipedia", "Wikipedia Discussão", "Imagem", "Imagem Discussão", "MediaWiki", "MediaWiki Discussão", "Predefinição", "Predefinição Discussão", "Ajuda", "Ajuda Discussão", "Categoria", "Categoria Discussão"],
"ro": [m, "Special", "Discuţie", "Utilizator", "Discuţie Utilizator", "Wikipedia", "Discuţie Wikipedia", "Imagine", "Discuţie Imagine", "MediaWiki", "Discuţie MediaWiki", "Format", "Discuţie Format", "Ajutor", "Discuţie Ajutor", "Categorie", "Discuţie Categorie"],
"ru": ["Медиа", "Служебная", "Обсуждение", "Участник", "Обсуждение участника", "Википедия", "Обсуждение Википедии", "Изображение", "Обсуждение изображения", "MediaWiki", "Обсуждение MediaWiki", "Шаблон", "Обсуждение шаблона", "Справка", "Обсуждение справки", "Категория", "Обсуждение категории"],
"sc": ["Speciale", "Contièndha", "Utente", "Utente discussioni", "Wikipedia", "Wikipedia discussioni", "Immàgini", "Immàgini contièndha", m, "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sk": ["Médiá", "Špeciálne", "Diskusia", "Redaktor", "Diskusia s redaktorom", "Wikipédia", "Diskusia k Wikipédii", "Obrázok", "Diskusia k obrázku", "MediaWiki", "Diskusia k MediaWiki", "Šablóna", "Diskusia k šablóne", "Pomoc", "Diskusia k pomoci", "Kategória", "Diskusia ku kategórii"],
"sl": [m, "Posebno", "Pogovor", "Uporabnik", "Uporabniški pogovor", "Wikipedija", "Pogovor k Wikipediji", "Slika", "Pogovor k sliki", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sq": [m, "Speciale", "Diskutim", "Përdoruesi", "Përdoruesi diskutim", "Wikipedia", "Wikipedia diskutim", "Figura", "Figura diskutim", "MediaWiki", "MediaWiki diskutim", "Stampa", "Stampa diskutim", "Ndihmë", "Ndihmë diskutim", "Category", "Category talk"],
"sr": [m, "Посебно", "Разговор", "Корисник", "Разговор са корисником", "Википедија", "Разговор о Википедији", "Слика", "Разговор о слици", "МедијаВики", "Разговор о МедијаВикију", "Шаблон", "Разговор о шаблону", "Помоћ", "Разговор о помоћи", "Категорија", "Разговор о категорији", "Портал", "Разговор о порталу"],
"sv": [m, "Special", "Diskussion", "Användare", "Användardiskussion", "Wikipedia", "Wikipediadiskussion", "Bild", "Bilddiskussion", "MediaWiki", "MediaWiki diskussion", "Mall", "Malldiskussion", "Hjälp", "Hjälp diskussion", "Kategori", "Kategoridiskussion"],
"ta": ["ஊடகம்", "சிறப்பு", "பேச்சு", "பயனர்", "பயனர் பேச்சு", "Wikipedia", "Wikipedia பேச்சு", "படிமம்", "படிமப் பேச்சு", "மீடியாவிக்கி", "மீடியாவிக்கி பேச்சு", "வார்ப்புரு", "வார்ப்புரு பேச்சு", "உதவி", "உதவி பேச்சு", "பகுப்பு", "பகுப்பு பேச்சு"],
"th": [m, "พิเศษ", "พูดคุย", "ผู้ใช้", "คุยเกี่ยวกับผู้ใช้", "Wikipedia", "Wikipedia talk", "ภาพ", "คุยเกี่ยวกับภาพ", "MediaWiki", "คุยเกี่ยวกับ MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"tlh": ["Doch", "le'", "ja'chuq", "lo'wI'", "lo'wI' ja'chuq", "wIqIpe'DIya", "wIqIpe'DIya ja'chuq", "nagh beQ", "nagh beQ ja'chuq", "MediaWiki", "MediaWiki ja'chuq", "chen'ay'", "chen'ay' ja'chuq", "QaH", "QaH ja'chuq", "Segh", "Segh ja'chuq"],
"tr": [m, "Özel", "Tartışma", "Kullanıcı", "Kullanıcı mesaj", "Vikipedi", "Vikipedi tartışma", "Resim", "Resim tartışma", "MedyaViki", "MedyaViki tartışma", "Şablon", "Şablon tartışma", "Yardım", "Yardım tartışma", "Kategori", "Kategori tartışma"],
"tt": [m, "Maxsus", "Bäxäs", "Äğzä", "Äğzä bäxäse", "Wikipedia", "Wikipedia bäxäse", "Räsem", "Räsem bäxäse", "MediaWiki", "MediaWiki bäxäse", "Ürnäk", "Ürnäk bäxäse", "Yärdäm", "Yärdäm bäxäse", "Törkem", "Törkem bäxäse"],
"uk": ["Медіа", "Спеціальні", "Обговорення", "Користувач", "Обговорення користувача", "Wikipedia", "Обговорення Wikipedia", "Зображення", "Обговорення зображення", "MediaWiki", "Обговорення MediaWiki", "Шаблон", "Обговорення шаблону", "Довідка", "Обговорення довідки", "Категорія", "Обговорення категорії"],
"vi": ["Phương tiện", "Đặc biệt", "Thảo luận", "Thành viên", "Thảo luận Thành viên", "Wikipedia", "Thảo luận Wikipedia", "Hình", "Thảo luận Hình", "MediaWiki", "Thảo luận MediaWiki", "Tiêu bản", "Thảo luận Tiêu bản", "Trợ giúp", "Thảo luận Trợ giúp", "Thể loại", "Thảo luận Thể loại"],
"wa": [m, "Sipeciås", "Copene", "Uzeu", "Uzeu copene", "Wikipedia", "Wikipedia copene", "Imådje", "Imådje copene", "MediaWiki", "MediaWiki copene", "Modele", "Modele copene", "Aidance", "Aidance copene", "Categoreye", "Categoreye copene"]
//</NOLITE>
};
pg.ns.list = nsLists[pg.wiki.lang] || list;
pg.ns.index = nsIndex;
}
function namespaceListToRegex(list) {return RegExp('^('+list.join('|').split(' ').join('[ _]')+'):');};
// function setNamespaceList is ugly as sin, moved to later in the code
function setNamespaces() {
setNamespaceList();
pg.ns.withTalkList=[null]; // NB root (article) corresponds with this entry, null
pg.ns.talkList=[pg.ns.list[2]];
// if the number of namespaces changes then this will have to be changed
// maybe the easiest way is to specify the arrays by hand as in the comments following the loop
for (var i=3; i+1<pg.ns.list.length; i=i+2) {
pg.ns.withTalkList.push(pg.ns.list[i]);
pg.ns.talkList.push(pg.ns.list[i+1]);
}
// ALERT! SILLY HARDCODED VALUES FOLLOW!
pg.ns.special = pg.ns.list[pg.ns.index.Special];
pg.ns.image = pg.ns.list[pg.ns.index.Image];
pg.ns.user = pg.ns.list[pg.ns.index.User];
pg.ns.usertalk = pg.ns.list[pg.ns.index['User talk']];
pg.ns.category = pg.ns.list[pg.ns.index.Category];
pg.ns.template = pg.ns.list[pg.ns.index.Template];
pg.ns.nonArticleList=pg.ns.list.slice(0,2).concat(pg.ns.list.slice(2));
}
function setRedirs() {
var r='redirect';
var R='REDIRECT';
var redirLists={
//<NOLITE>
'ar': [ R, 'تحويل' ],
'be': [ r, 'перанакіраваньне' ],
'bg': [ r, 'пренасочване', 'виж' ],
'bs': [ r, 'Preusmjeri', 'preusmjeri', 'PREUSMJERI' ],
'cs': [ R, 'PŘESMĚRUJ' ],
'cy': [ r, 'ail-cyfeirio' ],
'et': [ r, 'suuna' ],
'ga': [ r, 'athsheoladh' ],
'he': [ R, 'הפניה' ],
'is': [ r, 'tilvísun', 'TILVÍSUN' ],
'mk': [ r, 'пренасочување', 'види' ],
'nds': [ r, 'wiederleiden' ],
'nn': [ r, 'omdiriger' ],
'pt': [ R, 'redir' ],
'ru': [ R, 'ПЕРЕНАПРАВЛЕНИЕ', 'ПЕРЕНАПР' ],
'sk': [ r, 'presmeruj' ],
'sr': [ r, 'Преусмери', 'преусмери', 'ПРЕУСМЕРИ', 'Preusmeri', 'preusmeri', 'PREUSMERI' ],
'tt': [ 'yünältü' ],
'vi': [ r, 'đổi' ] // no comma
//</NOLITE>
};
var redirList=redirLists[ pg.wiki.lang ] || [r, R];
// Mediawiki is very tolerant about what comes after the #redirect at the start
pg.re.redirect=RegExp('^\\s*[#](' + redirList.join('|') + ').*?\\[{2}([^\\|\\]]*)(|[^\\]]*)?\\]{2}\\s*(.*)', 'i');
}
function setInterwiki() {
if (pg.wiki.wikimedia) {
pg.wiki.interwiki='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';
pg.re.interwiki=RegExp('^'+pg.wiki.interwiki+':');
} else {
pg.wiki.interwiki=null;
pg.re.interwiki=RegExp('^$');
}
}
function nsRe(label) {
var l=upcaseFirst(label);
return nsRegexString(pg.ns.list[pg.ns.index[l]], l);
}
function nsRegexString(str, extra) {
return '(?:' + str + '|' + encodeURI(str) + (extra ? '|' + extra : '') + ')';
}
function nsRegex(str, extra) {
return RegExp(nsRegexString(str, extra));
}
// ENDFILE: namespaces.js
// STARTFILE: selpop.js
//<NOLITE>
function getEditboxSelection() {
// see http://www.webgurusforum.com/8/12/0
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
// IE, Opera
if (document.selection) { return document.selection.createRange().text; }
// Mozilla
var selStart = editbox.selectionStart;
var selEnd = editbox.selectionEnd;
return (editbox.value).substring(selStart, selEnd);
}
function doSelectionPopup() {
// popup if the selection looks like [[foo|anything afterwards at all
// or [[foo|bar]]text without ']]'
// or [[foo|bar]]
var sel=getEditboxSelection();
var open=sel.indexOf('[[');
var pipe=sel.indexOf('|');
var close=sel.indexOf(']]');
if (open == -1 || ( pipe == -1 && close == -1) ) { return; }
if (pipe != -1 && open > pipe || close != -1 && open > close) { return; }
if (getValueOf('popupOnEditSelection')=='boxpreview') {
return doSeparateSelectionPopup(sel);
}
var article=new Title(sel.substring(open+2, (pipe < 0) ? close : pipe)).urlString();
if (close > 0 && sel.substring(close+2).indexOf('[[') >= 0) {
return;
}
var a=document.createElement('a');
a.href=pg.wiki.titlebase + article;
mouseOverWikiLink2(a);
if (a.navpopup) {
a.navpopup.addHook(function(){runStopPopupTimer(a.navpopup);}, 'unhide', 'after');
}
}
function doSeparateSelectionPopup(str) {
var div=document.getElementById('selectionPreview');
if (!div) {
div = document.createElement('div');
div.id='selectionPreview';
try { var box=document.editform.wpTextbox1; }
catch (oopsie) { return; }
box.parentNode.insertBefore(div, box);
}
div.innerHTML=wiki2html(str);
div.ranSetupTooltipsAlready = false;
popTipsSoonFn('selectionPreview')();
}
//</NOLITE>
// ENDFILE: selpop.js
// STARTFILE: navpopup.js
/**
@fileoverview Defines two classes: {@link Navpopup} and {@link Mousetracker}.
<code>Navpopup</code> describes popups: when they appear, where, what
they look like and so on.
<code>Mousetracker</code> "captures" the mouse using
<code>document.onmousemove</code>.
*/
/**
Creates a new Mousetracker.
@constructor
@class The Mousetracker class. This monitors mouse movements and manages associated hooks.
*/
function Mousetracker() {
/**
Interval to regularly run the hooks anyway, in milliseconds.
@type Integer
*/
this.loopDelay=400;
/**
Timer for the loop.
@type Timer
*/
this.timer=null;
/**
Flag - are we switched on?
@type Boolean
*/
this.active=false;
/**
Flag - are we probably inaccurate, i.e. not reflecting the actual mouse position?
*/
this.dirty=true;
/**
Array of hook functions.
@private
@type Array
*/
this.hooks=[];
}
/**
Adds a hook, to be called when we get events.
@param {Function} f A function which is called as
<code>f(x,y)</code>. It should return <code>true</code> when it
wants to be removed, and <code>false</code> otherwise.
*/
Mousetracker.prototype.addHook = function (f) {
this.hooks.push(f);
};
/**
Runs hooks, passing them the x
and y coords of the mouse. Hook functions that return true are
passed to {@link Mousetracker#removeHooks} for removal.
@private
*/
Mousetracker.prototype.runHooks = function () {
if (!this.hooks || !this.hooks.length) { return; }
//log('Mousetracker.runHooks; we got some hooks to run');
var remove=false;
var removeObj={};
// this method gets called a LOT -
// pre-cache some variables
var x=this.x, y=this.y, len = this.hooks.length;
for (var i=0; i<len; ++i) {
//~ run the hook function, and remove it if it returns true
if (this.hooks[i](x, y)===true) {
remove=true;
removeObj[i]=true;
}
}
if (remove) { this.removeHooks(removeObj); }
};
/**
Removes hooks.
@private
@param {Object} removeObj An object whose keys are the index
numbers of functions for removal, with values that evaluate to true
*/
Mousetracker.prototype.removeHooks = function(removeObj) {
var newHooks=[];
var len = this.hooks.length;
for (var i=0; i<len; ++i) {
if (! removeObj[i]) { newHooks.push(this.hooks[i]); }
}
this.hooks=newHooks;
};
/**
Event handler for mouse wiggles.
We simply grab the event, set x and y and run the hooks.
This makes the cpu all hot and bothered :-(
@private
@param {Event} e Mousemove event
*/
Mousetracker.prototype.track=function (e) {
//~ Apparently this is needed in IE.
e = e || window.event;
var x, y;
if (e) {
if (e.pageX) { x=e.pageX; y=e.pageY; }
else if (typeof e.clientX!='undefined') {
var left, top, docElt = window.document.documentElement;
if (docElt) { left=docElt.scrollLeft; }
left = left || window.document.body.scrollLeft || window.document.scrollLeft || 0;
if (docElt) { top=docElt.scrollTop; }
top = top || window.document.body.scrollTop || window.document.scrollTop || 0;
x=e.clientX + left;
y=e.clientY + top;
} else { return; }
this.setPosition(x,y);
}
};
/**
Sets the x and y coordinates stored and takes appropriate action,
running hooks as appropriate.
@param {Integer} x, y Screen coordinates to set
*/
Mousetracker.prototype.setPosition=function(x,y) {
this.x = x;
this.y = y;
if (this.dirty || this.hooks.length === 0) { this.dirty=false; return; }
if (typeof this.lastHook_x != 'number') { this.lastHook_x = -100; this.lastHook_y=-100; }
var diff = (this.lastHook_x - x)*(this.lastHook_y - y);
diff = (diff >= 0) ? diff : -diff;
if ( diff > 1 ) {
this.lastHook_x=x;
this.lastHook_y=y;
if (this.dirty) { this.dirty = false; }
else { this.runHooks(); }
}
}
/**
Sets things in motion, unless they are already that is, registering an event handler on <code>document.onmousemove</code>.
A half-hearted attempt is made to preserve the old event handler if there is one.
*/
Mousetracker.prototype.enable = function () {
if (this.active) { return; }
this.active=true;
//~ Save the current handler for mousemove events. This isn't too
//~ robust, of course.
this.savedHandler=document.onmousemove;
//~ Gotta save @tt{this} again for the closure, and use apply for
//~ the member function.
var savedThis=this;
document.onmousemove=function (e) {savedThis.track.apply(savedThis, [e]);};
if (this.loopDelay) { this.timer = setInterval(function() { //log('loop delay in mousetracker is working');
savedThis.runHooks();}, this.loopDelay); }
};
/**
Disables the tracker, removing the event handler.
*/
Mousetracker.prototype.disable = function () {
if (!this.active) { return; }
if (typeof this.savedHandler=='function') {
document.onmousemove=this.savedHandler;
} else { delete document.onmousemove; }
if (this.timer) { clearInterval(this.timer); }
this.active=false;
};
/**
Creates a new Navpopup.
Gets a UID for the popup and
@param init Contructor object. If <code>init.draggable</code> is true or absent, the popup becomes draggable.
@constructor
@class The Navpopup class. This generates popup hints, and does some management of them.
*/
function Navpopup(init) {
//alert('new Navpopup(init)');
/** UID for each Navpopup instance.
Read-only.
@type integer
*/
this.uid=Navpopup.uid++;
/**
Read-only flag for current visibility of the popup.
@type boolean
@private
*/
this.visible=false;
/** Flag to be set when we want to cancel a previous request to
show the popup in a little while.
@private
@type boolean
*/
this.noshow=false;
/** Categorised list of hooks.
@see #runHooks
@see #addHook
@private
@type Object
*/
this.hooks={
'create': [],
'unhide': [],
'hide': []
};
/** list of unique IDs of hook functions, to avoid duplicates
@private
*/
this.hookIds={};
/** List of downloads associated with the popup.
@private
@type Array
*/
this.downloads=[];
/** Number of uncompleted downloads.
@type integer
*/
this.pending=null;
/** Tolerance in pixels when detecting whether the mouse has left the popup.
@type integer
*/
this.fuzz=5;
/** Flag to toggle running {@link #limitHorizontalPosition} to regulate the popup's position.
@type boolean
*/
this.constrained=true;
/** The popup width in pixels.
@private
@type integer
*/
this.width=0;
/** The popup width in pixels.
@private
@type integer
*/
this.height=0;
/** The main content DIV element.
@type HTMLDivElement
*/
this.mainDiv=null;
this.createMainDiv();
// if (!init || typeof init.draggable=='undefined' || init.draggable) {
// this.makeDraggable(true);
// }
}
/**
A UID for each Navpopup. This constructor property is just a counter.
@type integer
@private
*/
Navpopup.uid=0;
/**
Retrieves the {@link #visible} attribute, indicating whether the popup is currently visible.
@type boolean
*/
Navpopup.prototype.isVisible=function() {
return this.visible;
};
/**
Repositions popup using CSS style.
@private
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@param {boolean} noLimitHor Don't call {@link #limitHorizontalPosition}
*/
Navpopup.prototype.reposition= function (x,y, noLimitHor) {
log ('reposition('+x+','+y+','+noLimitHor+')');
if (typeof x != 'undefined' && x!==null) { this.left=x; }
if (typeof y != 'undefined' && y!==null) { this.top=y; }
if (typeof this.left != 'undefined' && typeof this.top != 'undefined') {
this.mainDiv.style.left=this.left + 'px';
this.mainDiv.style.top=this.top + 'px';
}
if (!noLimitHor) { this.limitHorizontalPosition(); }
//console.log('navpop'+this.uid+' - (left,top)=(' + this.left + ',' + this.top + '), css=('
//+ this.mainDiv.style.left + ',' + this.mainDiv.style.top + ')');
};
/**
Prevents popups from being in silly locations. Hopefully.
Should not be run if {@link #constrained} is true.
@private
*/
Navpopup.prototype.limitHorizontalPosition=function() {
if (!this.constrained || this.tooWide) { return; }
this.updateDimensions();
var x=this.left;
var w=this.width;
var cWidth=document.body.clientWidth;
// log('limitHorizontalPosition: x='+x+
// ', this.left=' + this.left +
// ', this.width=' + this.width +
// ', cWidth=' + cWidth);
if ( (x+w) >= cWidth ||
( x > 0 && this.maxWidth && this.width < this.maxWidth && this.height > this.width
&& x > cWidth - this.maxWidth ) ) {
// This is a very nasty hack. There has to be a better way!
// We find the "natural" width of the div by positioning it at the far left
// then reset it so that it should be flush right (well, nearly)
this.mainDiv.style.left='-10000px';
this.mainDiv.style.width = this.maxWidth + 'px';
var naturalWidth=parseInt(this.mainDiv.offsetWidth, 10);
var newLeft=cWidth - naturalWidth - 1;
if (newLeft < 0) { newLeft = 0; this.tooWide=true; } // still unstable for really wide popups?
log ('limitHorizontalPosition: moving to ('+newLeft + ','+ this.top+');' + ' naturalWidth=' + naturalWidth + ', clientWidth=' + cWidth);
this.reposition(newLeft, null, true);
}
};
/**
Counter indicating the z-order of the "highest" popup.
We start the z-index at 1000 so that popups are above everything
else on the screen.
@private
@type integer
*/
Navpopup.highest=1000;
/**
Brings popup to the top of the z-order.
We increment the {@link #highest} property of the contructor here.
@private
*/
Navpopup.prototype.raise = function () {
this.mainDiv.style.zIndex=Navpopup.highest + 1;
++Navpopup.highest;
};
/**
Shows the popup provided {@link #noshow} is not true.
Updates the position, brings the popup to the top of the z-order and unhides it.
*/
Navpopup.prototype.show = function () {
//document.title+='s';
if (this.noshow) { return; }
//document.title+='t';
this.reposition();
this.raise();
this.unhide();
};
/**
Runs the {@link #show} method in a little while, unless we're
already visible.
@param {integer} time Delay in milliseconds
@see #showSoonIfStable
*/
Navpopup.prototype.showSoon = function (time) {
if (this.visible) { return; }
this.noshow=false;
//~ We have to save the value of @tt{this} so that the closure below
//~ works.
var savedThis=this;
//this.start_x = Navpopup.tracker.x;
//this.start_y = Navpopup.tracker.y;
setTimeout(function () {
if (Navpopup.tracker.active) {
savedThis.reposition.apply(savedThis, [Navpopup.tracker.x + 2, Navpopup.tracker.y + 2]);
}
//~ Have to use apply to invoke his member function here
savedThis.show.apply(savedThis, []);
}, time);
};
/**
Checks to see if the mouse pointer has
stabilised (checking every <code>time</code>/2 milliseconds) and runs the
{@link #show} method if it has. This method makes {@link #showSoon} redundant.
@param {integer} time The minimum time (ms) before the popup may be shown.
*/
Navpopup.prototype.showSoonIfStable = function (time) {
log ('showSoonIfStable, time='+time);
if (this.visible) { return; }
this.noshow = false;
//~ initialize these variables so that we never run @tt{show} after
//~ just half the time
this.stable_x = -10000; this.stable_y = -10000;
var stableShow = function() {
log('stableShow called');
var new_x = Navpopup.tracker.x, new_y = Navpopup.tracker.y;
var dx = savedThis.stable_x - new_x, dy = savedThis.stable_y - new_y;
var fuzz2 = 0; // savedThis.fuzz * savedThis.fuzz;
//document.title += '[' + [savedThis.stable_x,new_x, savedThis.stable_y,new_y, dx, dy, fuzz2].join(',') + '] ';
if ( dx * dx <= fuzz2 && dy * dy <= fuzz2 ) {
log ('mouse is stable');
clearInterval(savedThis.showSoonStableTimer);
savedThis.reposition.apply(savedThis, [new_x + 2, new_y + 2]);
savedThis.show.apply(savedThis, []);
return;
}
savedThis.stable_x = new_x; savedThis.stable_y = new_y;
};
var savedThis = this;
this.showSoonStableTimer = setInterval(stableShow, time/2);
};
/**
Makes the popup unhidable until we call {@link #unstick}.
*/
Navpopup.prototype.stick=function() {
this.noshow=false;
this.sticky=true;
};
/**
Allows the popup to be hidden.
*/
Navpopup.prototype.unstick=function() {
this.sticky=false;
};
/**
Sets the {@link #noshow} flag and hides the popup. This should be called
when the mouse leaves the link before
(or after) it's actually been displayed.
*/
Navpopup.prototype.banish = function () {
log ('banish called');
// hide and prevent showing with showSoon in the future
this.noshow=true;
if (this.showSoonStableTimer) {
log('clearing showSoonStableTimer');
clearInterval(this.showSoonStableTimer);
}
this.hide();
};
/**
Runs hooks added with {@link #addHook}.
@private
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
*/
Navpopup.prototype.runHooks = function (key, when) {
if (!this.hooks[key]) { return; }
var keyHooks=this.hooks[key];
var len=keyHooks.length;
for (var i=0; i< len; ++i) {
if (keyHooks[i] && keyHooks[i].when == when) {
if (keyHooks[i].hook.apply(this, [])) {
// remove the hook
if (keyHooks[i].hookId) {
delete this.hookIds[keyHooks[i].hookId];
}
keyHooks[i]=null;
}
}
}
};
/**
Adds a hook to the popup. Hook functions are run with <code>this</code> set to refer to the Navpopup instance, and no arguments.
@param {Function} hook The hook function. Functions that return true are deleted.
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
@param {String} uid A truthy string identifying the hook function; if it matches another hook in this position, it won't be added again.
*/
Navpopup.prototype.addHook = function ( hook, key, when, uid ) {
when = when || 'after';
if (!this.hooks[key]) { return; }
// if uid is specified, don't add duplicates
var hookId=null;
if (uid) {
hookId=[key,when,uid].join('|');
if (this.hookIds[hookId]) {
return;
}
this.hookIds[hookId]=true;
}
this.hooks[key].push( {hook: hook, when: when, hookId: hookId} );
};
/**
Creates the main DIV element, which contains all the actual popup content.
Runs hooks with key 'create'.
@private
*/
Navpopup.prototype.createMainDiv = function () {
if (this.mainDiv) { return; }
this.runHooks('create', 'before');
var mainDiv=document.createElement('div');
var savedThis=this;
mainDiv.onclick=function(e) {savedThis.onclickHandler(e);};
mainDiv.className=(this.className) ? this.className : 'navpopup_maindiv';
mainDiv.id=mainDiv.className + this.uid;
mainDiv.style.position='absolute';
mainDiv.style.display='none';
mainDiv.className='navpopup';
// easy access to javascript object through DOM functions
mainDiv.navpopup=this;
this.mainDiv=mainDiv;
document.body.appendChild(mainDiv);
this.runHooks('create', 'after');
};
/**
Calls the {@link #raise} method.
@private
*/
Navpopup.prototype.onclickHandler=function(e) {
this.raise();
};
/**
Makes the popup draggable, using a {@link Drag} object.
@private
*/
Navpopup.prototype.makeDraggable=function(handleName) {
if (!this.mainDiv) { this.createMainDiv(); }
var drag=new Drag();
if (!handleName) {
drag.startCondition=function(e) {
try { if (!e.shiftKey) { return false; } } catch (err) { return false; }
return true;
};
}
var dragHandle = document.getElementById(handleName) || this.mainDiv;
var np=this;
drag.endHook=function(x,y) {
Navpopup.tracker.dirty=true;
np.reposition(x,y);
};
drag.init(dragHandle,this.mainDiv);
};
/** Hides the popup using CSS. Runs hooks with key 'hide'.
Sets {@link #visible} appropriately. {@link #banish} should be called externally instead of this method.
@private
*/
Navpopup.prototype.hide = function () {
this.runHooks('hide', 'before');
this.abortDownloads();
if (this.sticky) { return; }
if (typeof this.visible != 'undefined' && this.visible) {
this.mainDiv.style.display='none';
this.visible=false;
}
this.runHooks('hide', 'after');
};
/** Shows the popup using CSS. Runs hooks with key 'unhide'.
Sets {@link #visible} appropriately. {@link #show} should be called externally instead of this method.
@private
*/
Navpopup.prototype.unhide = function () {
this.runHooks('unhide', 'before');
if (typeof this.visible != 'undefined' && !this.visible) {
this.mainDiv.style.display='inline';
this.visible=true;
}
this.runHooks('unhide', 'after');
};
/**
Sets the <code>innerHTML</code> attribute of the main div containing the popup content.
@param {String} html The HTML to set.
*/
Navpopup.prototype.setInnerHTML = function (html) {
this.mainDiv.innerHTML = html;
};
/**
Updates the {@link #width} and {@link #height} attributes with the CSS properties.
@private
*/
Navpopup.prototype.updateDimensions = function () {
this.width=parseInt(this.mainDiv.offsetWidth, 10);
this.height=parseInt(this.mainDiv.offsetHeight, 10);
};
/**
Checks if the point (x,y) is within {@link #fuzz} of the
{@link #mainDiv}.
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@type boolean
*/
Navpopup.prototype.isWithin = function(x,y) {
//~ If we're not even visible, no point should be considered as
//~ being within the popup.
if (!this.visible) { return false; }
this.updateDimensions();
var fuzz=this.fuzz || 0;
//~ Use a simple box metric here.
return (x+fuzz >= this.left && x-fuzz <= this.left + this.width &&
y+fuzz >= this.top && y-fuzz <= this.top + this.height);
};
/**
Adds a download to {@link #downloads}.
@param {Downloader} download
*/
Navpopup.prototype.addDownload=function(download) {
if (!download) { return; }
this.downloads.push(download);
};
/**
Aborts the downloads listed in {@link #downloads}.
@see Downloader#abort
*/
Navpopup.prototype.abortDownloads=function() {
for(var i=0; i<this.downloads.length; ++i) {
var d=this.downloads[i];
if (d && d.abort) { d.abort(); }
}
this.downloads=[];
};
/**
A {@link Mousetracker} instance which is a property of the constructor (pseudo-global).
*/
Navpopup.tracker=new Mousetracker();
// ENDFILE: navpopup.js
// STARTFILE: diff.js
//<NOLITE>
/*
* Javascript Diff Algorithm
* By John Resig (http://ejohn.org/) and [[:en:User:Lupin]]
*
* More Info:
* http://ejohn.org/projects/javascript-diff-algorithm/
*/
function delFmt(x) {
if (!x.length) { return ''; }
return "<del class='popupDiff'>" + x.join('').split('\n').join('¶\n') +"</del>";
}
function insFmt(x) {
if (!x.length) { return ''; }
return "<ins class='popupDiff'>" + x.join('').split('\n').join('¶\n') +"</ins>";
}
function countCrossings(a, b, i, eject) {
// count the crossings on the edge starting at b[i]
if (!b[i].row && b[i].row !== 0) { return -1; }
var count=0;
for (var j=0; j<a.length; ++j) {
if (!a[j].row && a[j].row !== 0) { continue; }
if ( (j-b[i].row)*(i-a[j].row) > 0) {
if(eject) { return true; }
count++;
}
}
return count;
}
function shortenDiffString(str, context) {
var re=RegExp('(<del[\\s\\S]*?</del>|<ins[\\s\\S]*?</ins>)');
var splitted=str.parenSplit(re);
var ret=[''];
for (var i=0; i<splitted.length; i+=2) {
if (splitted[i].length < 2*context) {
ret[ret.length-1] += splitted[i];
if (i+1<splitted.length) { ret[ret.length-1] += splitted[i+1]; }
continue;
}
else {
if (i > 0) { ret[ret.length-1] += splitted[i].substring(0,context); }
if (i+1 < splitted.length) {
ret.push(splitted[i].substring(splitted[i].length-context) +
splitted[i+1]);
}
}
}
while (ret.length > 0 && !ret[0]) { ret = ret.slice(1); }
return ret;
}
function diffString( o, n, simpleSplit ) {
var splitRe=RegExp('([[]{2}|[\]]{2}|[{]{2,3}|[}]{2,3}|[|]|=|[*:]+|\\s|\\b)');
o=o.entify(); n=n.entify();
var out, i;
if (simpleSplit) { out = diff( o.split(/\b/), n.split(/\b/) ); }
else { out = diff( o.parenSplit(splitRe), n.parenSplit(splitRe) ); }
var str = "";
var acc=[]; // accumulator for prettier output
// crossing pairings -- eg 'A B' vs 'B A' -- cause problems, so let's iron them out
// this doesn't always do things optimally but it should be fast enough
var maxOutputPair=0;
for (i=0; i<out.n.length; ++i) {
if ( out.n[i].paired ) {
if( maxOutputPair > out.n[i].row ) {
// tangle - delete pairing
out.o[ out.n[i].row ]=out.o[ out.n[i].row ].text;
out.n[i]=out.n[i].text;
}
if (maxOutputPair < out.n[i].row) { maxOutputPair = out.n[i].row; }
}
}
// output the stuff preceding the first paired old line
for (i=0; i<out.o.length && !out.o[i].paired; ++i) { acc.push( out.o[i] ); }
str += delFmt(acc); acc=[];
// main loop
for ( i = 0; i < out.n.length; ++i ) {
// output unpaired new "lines"
while ( i < out.n.length && !out.n[i].paired ) { acc.push( out.n[i++] ); }
str += insFmt(acc); acc=[];
if ( i < out.n.length ) { // this new "line" is paired with the (out.n[i].row)th old "line"
str += out.n[i].text;
// output unpaired old rows starting after this new line's partner
var m = out.n[i].row + 1;
while ( m < out.o.length && !out.o[m].paired ) { acc.push ( out.o[m++] ); }
str += delFmt(acc); acc=[];
}
}
return str;
}
// see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object
// FIXME: use obj.hasOwnProperty instead of this kludge!
window.jsReservedProperties=RegExp('^(constructor|prototype|__((define|lookup)[GS]etter)__' +
'|eval|hasOwnProperty|propertyIsEnumerable' +
'|to(Source|String|LocaleString)|(un)?watch|valueOf)$');
function diffBugAlert(word) {
if (!diffBugAlert.list[word]) {
diffBugAlert.list[word]=1;
alert('Bad word: '+word+'\n\nPlease report this bug.');
}
}
diffBugAlert.list={};
function makeDiffHashtable(src) {
var ret={};
for ( var i = 0; i < src.length; i++ ) {
if ( jsReservedProperties.test(src[i]) ) { src[i] += '<!-- -->'; }
if ( !ret[ src[i] ] ) { ret[ src[i] ] = []; }
try { ret[ src[i] ].push( i ); } catch (err) { diffBugAlert(src[i]); }
}
return ret;
}
function diff( o, n ) {
// pass 1: make hashtable ns with new rows as keys
var ns = makeDiffHashtable(n);
// pass 2: make hashtable os with old rows as keys
var os = makeDiffHashtable(o);
// pass 3: pair unique new rows and matching unique old rows
var i;
for ( i in ns ) {
if ( ns[i].length == 1 && os[i] && os[i].length == 1 ) {
n[ ns[i][0] ] = { text: n[ ns[i][0] ], row: os[i][0], paired: true };
o[ os[i][0] ] = { text: o[ os[i][0] ], row: ns[i][0], paired: true };
}
}
// pass 4: pair matching rows immediately following paired rows (not necessarily unique)
for ( i = 0; i < n.length - 1; i++ ) {
if ( n[i].paired && ! n[i+1].paired && n[i].row + 1 < o.length && ! o[ n[i].row + 1 ].paired &&
n[i+1] == o[ n[i].row + 1 ] ) {
n[i+1] = { text: n[i+1], row: n[i].row + 1, paired: true };
o[n[i].row+1] = { text: o[n[i].row+1], row: i + 1, paired: true };
}
}
// pass 5: pair matching rows immediately preceding paired rows (not necessarily unique)
for ( i = n.length - 1; i > 0; i-- ) {
if ( n[i].paired && ! n[i-1].paired && n[i].row > 0 && ! o[ n[i].row - 1 ].paired &&
n[i-1] == o[ n[i].row - 1 ] ) {
n[i-1] = { text: n[i-1], row: n[i].row - 1, paired: true };
o[n[i].row-1] = { text: o[n[i].row-1], row: i - 1, paired: true };
}
}
return { o: o, n: n };
}
//</NOLITE>
// ENDFILE: diff.js
// STARTFILE: init.js
function setSiteInfo() {
if (window.popupLocalDebug) {
pg.wiki.hostname = 'en.wikipedia.org';
} else {
pg.wiki.hostname = location.hostname; // use in preference to location.hostname for flexibility (?)
}
pg.wiki.wikimedia=RegExp('(wiki([pm]edia|source|books|news|quote|versity)|wiktionary)[.]org').test(pg.wiki.hostname);
pg.wiki.wikia=RegExp('[.]wikia[.]com$', 'i').test(pg.wiki.hostname);
pg.wiki.isLocal=RegExp('^localhost').test(pg.wiki.hostname);
pg.wiki.commons=( pg.wiki.wikimedia && pg.wiki.hostname != 'commons.wikimedia.org') ? 'commons.wikimedia.org' : null;
pg.wiki.commonslang = pg.wiki.commons ? pg.wiki.commons.split('.')[0] : null;
pg.wiki.lang = pg.wiki.hostname.split('.')[0];
// toolDbName needs pg.wiki.lang and pg.wiki.hostname
window.toolDbName && (pg.wiki.userNameCookie=toolDbName(true) + 'UserName');
pg.wiki.prePath='';
if (pg.wiki.hostname == 'secure.wikimedia.org') {
var s=document.location.href.split('/');
pg.wiki.prePath=s.slice(3,5).join('/');
pg.wiki.lang=s[4];
}
var port = location.port ? ':' + location.port : '';
pg.wiki.sitebase = joinPath([pg.wiki.hostname + port, pg.wiki.prePath]);
}
function getArticlePath() {
if (isFunction(window.siteArticlePath)) {
return siteArticlePath();
}
return 'wiki';
}
function getBotInterfacePath() {
if (isFunction(window.siteBotInterfacePath)) {
return siteBotInterfacePath();
}
var botInterfacePath = pg.wiki.articlePath.replace(/\/index[.]php$/, '');
if (pg.wiki.wikimedia) { botInterfacePath = 'w'; } // as in http://some.thing.com/w/index.php?title=foo
else if (pg.wiki.wikia) { botInterfacePath = ''; }
return botInterfacePath;
}
function setTitleBase() {
var protocol = ( window.popupLocalDebug ? 'http:' : location.protocol );
pg.wiki.articlePath = getArticlePath(); // as in http://some.thing.com/wiki/Article
pg.wiki.botInterfacePath = getBotInterfacePath();
// default mediawiki setting is paths like http://some.thing.com/articlePath/index.php?title=foo
var titletail = joinPath([pg.wiki.botInterfacePath, 'index.php?title=']);
var titletail2 = joinPath([pg.wiki.botInterfacePath, 'wiki.phtml?title=']);
// other sites may need to add code here to set titletail depending on how their urls work
pg.wiki.titlebase = protocol + '//' + joinPath([pg.wiki.sitebase, titletail]);
pg.wiki.titlebase2 = protocol + '//' + joinPath([pg.wiki.sitebase, titletail2]);
pg.wiki.wikibase = protocol + '//' + joinPath([pg.wiki.sitebase, pg.wiki.botInterfacePath]);
pg.wiki.articlebase = protocol + '//' + joinPath([pg.wiki.sitebase, pg.wiki.articlePath]);
pg.re.basenames = RegExp( '^(' +
map( literalizeRegex, [ pg.wiki.titlebase, pg.wiki.titlebase2,
pg.wiki.articlebase ]).join('|') + ')' );
}
//////////////////////////////////////////////////
// Global regexps
function setMainRegex() {
var reStart='[^:]*://';
var preTitles = joinPath([literalizeRegex(pg.wiki.botInterfacePath), '(?:index[.]php|wiki[.]phtml)[?]title=']);
// slightly ugly hack when pg.wiki.articlePath is empty
preTitles += '|' + literalizeRegex( ( pg.wiki.articlePath ? pg.wiki.articlePath + '/' : ''));
var reEnd='/(' + preTitles + ')([^&?#]*)[^#]*(?:#(.+))?';
pg.re.main = RegExp(reStart + literalizeRegex(pg.wiki.sitebase) + reEnd);
}
function setRegexps() {
setMainRegex();
var sp=nsRe('Special');
pg.re.urlNoPopup=RegExp('((title=|/)' + sp + '(?:%3A|:)|section=[0-9])') ;
pg.re.contribs =RegExp('(title=|/)' + sp + '(?:%3A|:)Contributions' + '(&target=|/|/' + pg.ns.user+':)(.*)') ;
pg.re.email =RegExp('(title=|/)' + sp + '(?:%3A|:)Emailuser' + '(&target=|/|/(?:' + pg.ns.user+':)?)(.*)') ;
pg.re.backlinks =RegExp('(title=|/)' + sp + '(?:%3A|:)Whatlinkshere' + '(&target=|/)([^&]*)');
//<NOLITE>
var im=nsRe('Image');
// note: tries to get images in infobox templates too, e.g. movie pages, album pages etc
// (^|\[\[)image: *([^|\]]*[^|\] ]) *
// (^|\[\[)image: *([^|\]]*[^|\] ])([^0-9\]]*([0-9]+) *px)?
// $4 = 120 as in 120px
pg.re.image = RegExp('(^|\\[\\[)' + im + ': *([^|\\]]*[^|\\] ])' +
'([^0-9\\]]*([0-9]+) *px)?|(?:\\n *[|]?|[|]) *' +
'(' + getValueOf('popupImageVarsRegexp') + ')' +
' *= *(?:\\[\\[ *)?(?:' + im + ':)?' +
'([^|]*?)(?:\\]\\])? *[|]? *\\n', 'img') ;
pg.re.imageBracketCount = 6;
pg.re.category = RegExp('\\[\\[' +nsRe('Category') +
': *([^|\\]]*[^|\\] ]) *', 'i');
pg.re.categoryBracketCount = 1;
pg.re.ipUser=RegExp('('+nsRe('User')+':)?' +
'((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}' +
'(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])');
pg.re.stub= RegExp(getValueOf('popupStubRegexp'), 'im');
pg.re.disambig=RegExp(getValueOf('popupDabRegexp'), 'im');
//</NOLITE>
// FIXME replace with general parameter parsing function, this is daft
pg.re.oldid=RegExp('[?&]oldid=([^&]*)');
pg.re.diff=RegExp('[?&]diff=([^&]*)');
}
//<NOLITE>
//////////////////////////////////////////////////
// Image sources
function setImageSources() {
pg.wiki.imageSources=[];
// frequently seen thumbs
pg.wiki.imageSources.push(
{wiki: pg.wiki.hostname, thumb: true, width: 180}, // default
{wiki: pg.wiki.hostname, thumb: true, width: 120} // gallery
);
// frequently seen thumbs on commons
if (pg.wiki.commons) {
pg.wiki.imageSources.push(
{wiki: pg.wiki.commons, thumb: true, width: 180},
{wiki: pg.wiki.commons, thumb: true, width: 120}
);
}
// unusual thumb sizes and full-size
pg.wiki.imageSources.push(
{wiki: pg.wiki.hostname, thumb: true, width: 200}, // common?
{wiki: pg.wiki.hostname, thumb: true, width: 250}, // common?
{wiki: pg.wiki.hostname, thumb: true, width: 300},
{wiki: pg.wiki.hostname, thumb: true, width: 210},
{wiki: pg.wiki.hostname, thumb: true, width: 230},
{wiki: pg.wiki.hostname, thumb: false, width: 0} // no comma
);
// full-size on commons
if (pg.wiki.commons) {
pg.wiki.imageSources.push({wiki: pg.wiki.commons, thumb: false, width: 0});
}
}
//</NOLITE>
//////////////////////////////////////////////////
// miscellany
function setupCache() {
// page caching
pg.cache.pages = [];
pg.cache.images = [];
// global array for 404'ed image urls
pg.cache.badImageUrls=[];
}
function setMisc() {
pg.current.link=null;
pg.current.links=[];
pg.current.linksHash={};
// downloading images are put here
pg.misc.imageArray=[];
setupCache();
// FIXME what is this for?
pg.misc.gImage=null; // global for image
// check to see if images are done with this timer
pg.timer.image=null;
// These are for checkImages()
pg.counter.checkImages=0;
pg.timer.checkImages=null;
pg.timer.checkPopupPosition=null;
pg.counter.loop=0;
// ids change with each popup: popupImage0, popupImage1 etc
pg.idNumber=0;
// for myDecodeURI
pg.misc.decodeExtras = [
{from: '%2C', to: ',' },
{from: '_', to: ' ' },
{from: '%24', to: '$'},
{from: '%26', to: '&' } // no ,
];
}
function leadingInteger(s){
var n=s.match(/^(\d*)/)[1];
if (n) { return +n; }
return null;
}
function setBrowserHacks() {
var useOriginal=false;
// browser-specific hacks
if (typeof window.opera != 'undefined') {
//if (leadingInteger(opera.version()) < 9)
{ useOriginal=true; } // v9 beta still seems to have buggy css
setDefault('popupNavLinkSeparator', ' · ');
} else if (navigator.appName=='Konqueror') {
setDefault('popupNavLinkSeparator', ' • ');
pg.flag.isKonq=true;
} else if ( navigator.vendor && navigator.vendor.toLowerCase().indexOf('apple computer')===0) {
pg.flag.isSafari=true;
var webkit=+navigator.userAgent.replace(RegExp('^.*AppleWebKit[/](\\d+).*', 'i'), '$1');
if (webkit < 420) { useOriginal=true; }
} else if (navigator.appName.indexOf("Microsoft")!=-1) {
setDefault('popupNavLinkSeparator', ' · ');
useOriginal=true;
var ver=+navigator.userAgent.replace(RegExp('^.*MSIE (\\d+).*'), '$1');
pg.flag.isIE=true;
pg.flag.IEVersion=ver;
}
if (pg.flag.isIE && pg.flag.IEVersion < 7 || pg.flag.isKonq || pg.flag.isSafari) {
pg.flag.linksLikeIE6=true;
}
if (useOriginal && pg.structures.original) {
setDefault('popupStructure','original');
}
}
function setupPopups() {
// NB translatable strings should be set up first (strings.js)
// basics
setupDebugging();
setSiteInfo();
setTitleBase();
setOptions(); // see options.js
// namespaces etc
setNamespaces();
setInterwiki();
// regexps
setRegexps();
setRedirs();
// other stuff
window.setImageSources && setImageSources();
setBrowserHacks();
setMisc();
setupLivePreview();
// main deal here
setupTooltips();
Navpopup.tracker.enable();
setupPopups.completed = true;
}
// ENDFILE: init.js
// STARTFILE: navlinks.js
//<NOLITE>
//////////////////////////////////////////////////
// navlinks... let the fun begin
//
function defaultNavlinkSpec() {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
if (getValueOf('popupLastEditLink')) {
str += '*<<lastEdit|shortcut=/>>|<<lastContrib>>|<<sinceMe>>if(oldid){|<<oldEdit>>|<<diffCur>>}';
}
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>*<<userlog|shortcut=L|log>>';
str+='if(ipuser){*<<arin>>}if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>|<<blocklog|log>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{' + editstr + '}'
var historystr='<<history|shortcut=h>>if(mainspace_en){|<<editors|shortcut=E|>>}';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>*<<move|shortcut=m>>';
// admin links
str += 'if(admin){<br><<unprotect|unprotectShort>>|<<protect|shortcut=p>>|<<protectlog|log>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>|<<deletelog|log>>}';
return str;
}
function navLinksHTML (article, hint, params) { //oldid, rcid) {
var str = '<span class="popupNavLinks">' + defaultNavlinkSpec() + '</span>';
// BAM
return navlinkStringToHTML(str, article, params);
}
function expandConditionalNavlinkString(s,article,z,recursionCount) {
var oldid=z.oldid, rcid=z.rcid, diff=z.diff;
// nested conditionals (up to 10 deep) are ok, hopefully! (work from the inside out)
if (typeof recursionCount!=typeof 0) { recursionCount=0; }
var conditionalSplitRegex=RegExp(
//(1 if \\( (2 2) \\) {(3 3)} (4 else {(5 5)} 4)1)
'(;?\\s*if\\s*\\(\\s*([\\w]*)\\s*\\)\\s*\\{([^{}]*)\\}(\\s*else\\s*\\{([^{}]*?)\\}|))', 'i');
var splitted=s.parenSplit(conditionalSplitRegex);
// $1: whole conditional
// $2: test condition
// $3: true expansion
// $4: else clause (possibly empty)
// $5: false expansion (possibly null)
var numParens=5;
var ret = splitted[0];
for (var i=1; i<splitted.length; i=i+numParens+1) {
var testString=splitted[i+2-1];
var trueString=splitted[i+3-1];
var falseString=splitted[i+5-1];
if (typeof falseString=='undefined' || !falseString) { falseString=''; }
var testResult=null;
switch (testString) {
case 'user':
testResult=(article.userName())?true:false;
break;
case 'talk':
testResult=(article.talkPage())?false:true; // talkPage converts _articles_ to talkPages
break;
case 'admin':
testResult=getValueOf('popupAdminLinks')?true:false;
break;
case 'oldid':
testResult=(typeof oldid != 'undefined' && oldid)?true:false;
break;
case 'rcid':
testResult=(typeof rcid != 'undefined' && rcid)?true:false;
break;
case 'ipuser':
testResult=(article.isIpUser())?true:false;
break;
case 'mainspace_en':
testResult=isInMainNamespace(article) &&
pg.wiki.hostname=='en.wikipedia.org';
break;
case 'wikimedia':
testResult=(pg.wiki.wikimedia) ? true : false;
break;
case 'diff':
testResult=(typeof diff != 'undefined' && diff)?true:false;
break;
}
switch(testResult) {
case null: ret+=splitted[i]; break;
case true: ret+=trueString; break;
case false: ret+=falseString; break;
}
// append non-conditional string
ret += splitted[i+numParens];
}
if (conditionalSplitRegex.test(ret) && recursionCount < 10) {
return expandConditionalNavlinkString(ret,article,z,recursionCount+1);
}
return ret;
}
function navlinkStringToArray(s, article, params) {
s=expandConditionalNavlinkString(s,article,params);
var splitted=s.parenSplit(RegExp('<<(.*?)>>'));
var ret=[];
for (var i=0; i<splitted.length; ++i) {
if (i%2) { // i odd, so s is a tag
var t=new navlinkTag();
var ss=splitted[i].split('|');
t.id=ss[0];
for (var j=1; j<ss.length; ++j) {
var sss=ss[j].split('=');
if (sss.length>1) {
t[sss[0]]=sss[1];
}
else { // no assignment (no "="), so treat this as a title (overwriting the last one)
t.text=popupString(sss[0]);
}
}
t.article=article;
var oldid=params.oldid, rcid=params.rcid, diff=params.diff;
if (typeof oldid != 'undefined' && oldid != null) { t.oldid=oldid; }
if (typeof rcid != 'undefined' && rcid != null) { t.rcid=rcid; }
if (typeof diff != 'undefined' && diff != null) { t.diff=diff; }
if (!t.text && t.id != 'mainlink') { t.text=popupString(t.id); }
ret.push(t);
}
else { // plain HTML
ret.push(splitted[i]);
}
}
return ret;
}
function navlinkSubstituteHTML(s) {
return s.split('*').join(getValueOf('popupNavLinkSeparator'))
.split('<menurow>').join('<li class="popup_menu_row">')
.split('</menurow>').join('</li>')
.split('<menu>').join('<ul class="popup_menu">')
.split('</menu>').join('</ul>');
}
function navlinkDepth(magic,s) {
return s.split('<' + magic + '>').length - s.split('</' + magic + '>').length;
}
// navlinkString: * becomes the separator
// <<foo|bar=baz|fubar>> becomes a foo-link with attribute bar='baz'
// and visible text 'fubar'
// if(test){...} and if(test){...}else{...} work too (nested ok)
function navlinkStringToHTML(s,article,params) {
//limitAlert(navlinkStringToHTML, 5, 'navlinkStringToHTML\n' + article + '\n' + (typeof article));
var p=navlinkStringToArray(s,article,params);
var html='';
var menudepth = 0; // nested menus not currently allowed, but doesn't do any harm to code for it
var menurowdepth = 0;
var wrapping = null;
for (var i=0; i<p.length; ++i) {
if (typeof p[i] == typeof '') {
html+=navlinkSubstituteHTML(p[i]);
menudepth += navlinkDepth('menu', p[i]);
menurowdepth += navlinkDepth('menurow', p[i]);
// if (menudepth === 0) {
// tagType='span';
// } else if (menurowdepth === 0) {
// tagType='li';
// } else {
// tagType = null;
// }
} else if (typeof p[i].type != 'undefined' && p[i].type=='navlinkTag') {
if (menudepth > 0 && menurowdepth === 0) {
html += '<li class="popup_menu_item">' + p[i].html() + '</li>';
} else {
html+=p[i].html();
}
}
}
return html;
}
function navlinkTag() {
this.type='navlinkTag';
}
navlinkTag.prototype.html=function () {
this.getNewWin();
this.getPrintFunction();
var html='';
var opening, closing;
var tagType='span';
if (!tagType) {
opening = ''; closing = '';
} else {
opening = '<' + tagType + ' class="popup_' + this.id + '">';
closing = '</' + tagType + '>';
}
if (typeof this.print!='function') {
errlog ('Oh dear - invalid print function for a navlinkTag, id='+this.id);
} else {
html=this.print(this);
if (typeof html != typeof '') {html='';}
else if (typeof this.shortcut!='undefined') html=addPopupShortcut(html, this.shortcut);
}
return opening + html + closing;
};
navlinkTag.prototype.getNewWin=function() {
getValueOf('popupLinksNewWindow');
if (typeof pg.option.popupLinksNewWindow[this.id] === 'undefined') { this.newWin=null; }
this.newWin=pg.option.popupLinksNewWindow[this.id];
}
navlinkTag.prototype.getPrintFunction=function() { //think about this some more
// this.id and this.article should already be defined
if (typeof this.id!=typeof '' || typeof this.article!=typeof {} ) { return; }
var html='';
var a,t;
this.noPopup=1;
switch (this.id) {
case 'contribs': case 'history': case 'whatLinksHere':
if (!getValueOf('popupUseQueryInterface')) { break; }
case 'userPage': case 'monobook': case 'userTalk':
case 'talk': case 'article': case 'lastEdit':
this.noPopup=null;
}
switch (this.id) {
case 'email': case 'contribs': case 'block': case 'unblock':
case 'userlog': case 'userSpace':
this.article=this.article.userName();
}
switch (this.id) {
case 'userTalk': case 'newUserTalk': case 'editUserTalk':
case 'userPage': case 'monobook': case 'editMonobook': case 'blocklog':
this.article=this.article.userName(true);
// fall through; no break
case 'pagelog': case 'deletelog': case 'protectlog':
delete this.oldid;
}
if (this.id=='editMonobook' || this.id=='monobook') { this.article.append('/monobook.js'); }
if (this.id != 'mainlink') {
// FIXME anchor handling should be done differently with Title object
this.article=this.article.removeAnchor();
// if (typeof this.text=='undefined') this.text=popupString(this.id);
}
switch (this.id) {
case 'undelete': this.print=specialLink; this.specialpage='Undelete'; this.sep='/'; break;
case 'whatLinksHere': this.print=specialLink; this.specialpage='Whatlinkshere'; break;
case 'relatedChanges': this.print=specialLink; this.specialpage='Recentchangeslinked'; break;
case 'move': this.print=specialLink; this.specialpage='Movepage'; break;
case 'contribs': this.print=specialLink; this.specialpage='Contributions'; break;
case 'email': this.print=specialLink; this.specialpage='Emailuser'; break;
case 'block': this.print=specialLink; this.specialpage='Blockip'; this.sep='&ip='; break;
case 'unblock': this.print=specialLink; this.specialpage='Ipblocklist'; this.sep='&action=unblock&ip='; break;
case 'userlog': this.print=specialLink; this.specialpage='Log'; this.sep='&user='; break;
case 'blocklog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=block&page='; break;
case 'pagelog': this.print=specialLink; this.specialpage='Log'; this.sep='&page='; break;
case 'protectlog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=protect&page='; break;
case 'deletelog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=delete&page='; break;
case 'userSpace': this.print=specialLink; this.specialpage='Prefixindex'; this.sep='&namespace=2&from='; break;
case 'search': this.print=specialLink; this.specialpage='Search'; this.sep='&fulltext=Search&search='; break;
case 'history': case 'historyfeed': case 'unwatch': case 'watch':
case 'unprotect': case 'protect':
this.print=wikiLink; this.action=this.id; break;
case 'delete':
this.print=wikiLink; this.action='delete';
if (this.article.namespace()==pg.ns.image) {
var img=this.article.stripNamespace();
this.action+='&image='+img;
}
break;
case 'markpatrolled':
case 'edit': // editOld should keep the oldid, but edit should not.
delete this.oldid; // fall through
case 'view': case 'purge': case 'render':
this.print=wikiLink;
this.action=this.id; break;
case 'raw':
this.print=wikiLink; this.action='raw&ctype=text/css'; break;
case 'new':
this.print=wikiLink; this.action='edit§ion=new'; break;
case 'mainlink':
if (typeof this.text=='undefined') { this.text=this.article.toString().entify(); }
if (getValueOf('popupSimplifyMainLink') && isInStrippableNamespace(this.article)) {
var s=this.text.split('/'); this.text=s[s.length-1];
if (this.text=='' && s.length > 1) { this.text=s[s.length-2]; }
}
this.print=titledWikiLink;
if (typeof this.title=='undefined' && pg.current.link && typeof pg.current.link.href != 'undefined') {
this.title=safeDecodeURI((pg.current.link.originalTitle)?pg.current.link.originalTitle:this.article);
if (typeof this.oldid != 'undefined' && this.oldid) {
this.title=tprintf('Revision %s of %s', [this.oldid, this.title]);
}
}
this.action='view'; break;
case 'userPage':
case 'article':
case 'monobook':
case 'editMonobook':
case 'editArticle':
delete this.oldid;
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.article=this.article.articleFromTalkOrArticle();
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.print=wikiLink;
if (this.id.indexOf('edit')==0) {
this.action='edit';
} else { this.action='view';}
break;
case 'userTalk':
case 'talk':
this.article=this.article.talkPage();
delete this.oldid;
this.print=wikiLink;
this.action='view'; break;
case 'arin':
this.print=arinLink; break;
case 'count':
this.print=kateLink; break;
case 'google':
this.print=googleLink; break;
case 'contribsTree':
this.print=contribsTreeLink; break;
case 'editors':
this.print=editorListLink; break;
case 'globalsearch':
this.print=globalSearchLink; break;
case 'lastEdit':
this.print=titledDiffLink;
this.title=popupString('Show the last edit');
this.from='prev'; this.to='cur'; break;
case 'oldEdit':
this.print=titledDiffLink;
this.title=popupString('Show the edit made to get revision') + ' ' + this.oldid;
this.from='prev'; this.to=this.oldid; break;
case 'editOld':
this.print=wikiLink; this.action='edit'; break;
case 'undo':
this.print=wikiLink; this.action='edit&undo='; break;
case 'markpatrolled':
this.print=wikiLink; this.action='markpatrolled';
case 'revert':
this.print=wikiLink; this.action='revert'; break;
case 'nullEdit':
this.print=wikiLink; this.action='nullEdit'; break;
case 'diffCur':
this.print=titledDiffLink;
this.title=tprintf('Show changes since revision %s', [this.oldid]);
this.from=this.oldid; this.to='cur'; break;
case 'editUserTalk':
case 'editTalk':
delete this.oldid;
this.article=this.article.talkPage();
this.action='edit'; this.print=wikiLink; break;
case 'newUserTalk':
case 'newTalk':
this.article=this.article.talkPage();
this.action='edit§ion=new'; this.print=wikiLink; break;
case 'lastContrib':
case 'sinceMe':
this.print=magicHistoryLink;
break;
case 'togglePreviews':
this.text=popupString(pg.option.simplePopups ? 'enable previews' : 'disable previews');
case 'disablePopups': case 'purgePopups':
this.print=popupMenuLink;
break;
default:
this.print=function () {return 'Unknown navlink type: '+this.id+''};
}
};
//
// end navlinks
//////////////////////////////////////////////////
//</NOLITE>
// ENDFILE: navlinks.js
// STARTFILE: shortcutkeys.js
//<NOLITE>
function popupHandleKeypress(evt) {
var keyCode = window.event ? window.event.keyCode : ( evt.keyCode ? evt.keyCode : evt.which);
if (!keyCode || !pg.current.link || !pg.current.link.navpopup) { return; }
if (keyCode==27) { // escape
killPopup();
return false; // swallow keypress
}
var letter=String.fromCharCode(keyCode);
var links=pg.current.link.navpopup.mainDiv.getElementsByTagName('A');
var startLink=0;
var i,j;
if (popupHandleKeypress.lastPopupLinkSelected) {
for (i=0; i<links.length; ++i) {
if (links[i]==popupHandleKeypress.lastPopupLinkSelected) { startLink=i; }
}
}
for (j=0; j<links.length; ++j) {
i=(startLink + j + 1) % links.length;
if (links[i].getAttribute('popupkey')==letter) {
if (evt && evt.preventDefault) evt.preventDefault();
links[i].focus();
popupHandleKeypress.lastPopupLinkSelected=links[i];
return false; // swallow keypress
}
}
// pass keypress on
if (document.oldPopupOnkeypress) { return document.oldPopupOnkeypress(evt); }
return true;
}
function addPopupShortcuts() {
if (document.onkeypress!=popupHandleKeypress) {
document.oldPopupOnkeypress=document.onkeypress;
}
document.onkeypress=popupHandleKeypress;
}
function rmPopupShortcuts() {
popupHandleKeypress.lastPopupLinkSelected=null;
try {
if (document.oldPopupOnkeypress && document.oldPopupOnkeypress==popupHandleKeypress) {
// panic
document.onkeypress=null; //function () {};
return;
}
document.onkeypress=document.oldPopupOnkeypress;
} catch (nasties) { /* IE goes here */ }
}
function addLinkProperty(html, property) {
// take "<a href=...>...</a> and add a property
// not sophisticated at all, easily broken
var i=html.indexOf('>');
if (i<0) { return html; }
return html.substring(0,i) + ' ' + property + html.substring(i);
}
function addPopupShortcut(html, key) {
if (!getValueOf('popupShortcutKeys')) { return html; }
var ret= addLinkProperty(html, 'popupkey="'+key+'"');
if (key==' ') { key=popupString('spacebar'); }
return ret.replace(RegExp('^(.*?)(title=")(.*?)(".*)$', 'i'),'$1$2$3 ['+key+']$4');
}
//</NOLITE>
// ENDFILE: shortcutkeys.js
// STARTFILE: diffpreview.js
//<NOLITE>
function loadDiff(article, oldid, diff, navpop) {
navpop.diffData={};
var oldRev, newRev;
switch (diff) {
case 'cur':
switch ( oldid ) {
case null:
case '':
case 'prev':
// eg newmessages diff link
oldRev='0&direction=prev';
newRev=0;
break;
default:
oldRev = oldid;
newRev = 0;
}
break;
case 'prev':
oldRev = ( oldid || 0 ) + '&direction=prev'; newRev = oldid; break;
case 'next':
oldRev = oldid; newRev = oldid + '&direction=next';
break;
default:
oldRev = oldid || 0; newRev = diff || 0; break;
}
oldRev = oldRev || 0;
newRev = newRev || 0;
var go = function() {
pendingNavpopTask(navpop);
getWiki(article, doneDiffNew, newRev, navpop);
pendingNavpopTask(navpop);
getWiki(article, doneDiffOld, oldRev, navpop);
var tz = Cookie.read('popTz');
if (getValueOf('popupUseQueryInterface') && getValueOf('popupAdjustDiffDates') && tz===null) {
pendingNavpopTask(navpop);
getPageWithCaching(pg.wiki.wikibase + '/query.php?format=json&what=userinfo&uioptions=timecorrection',
function(d) {
completedNavpopTask(navpop);
setTimecorrectionCookie(d);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}, navpop);
}
return true; // remove hook once run
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_DIFFS'); }
}
function setTimecorrectionCookie(d) {
Cookie.create('popTz', getTimeOffset(getJsObj(d.data).meta.user.timecorrection), 1);
}
function doneDiff(download, isOld) {
if (!download.owner || !download.owner.diffData) { return; }
var navpop=download.owner;
var label= (isOld) ? 'Old' : 'New';
var otherLabel=(isOld) ? 'New' : 'Old';
navpop.diffData[label]=download;
completedNavpopTask(download.owner);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}
function diffDownloadsComplete(navpop) {
if (getValueOf('popupUseQueryInterface') && Cookie.read('popTz')===null) { return false; }
return navpop.diffData.Old && navpop.diffData.New;
}
function doneDiffNew(download) { doneDiff(download, false); }
function doneDiffOld(download) { doneDiff(download, true); }
function rmBoringLines(a,b,context) {
if (typeof context == 'undefined') { context=2; }
// this is fairly slow... i think it's quicker than doing a word-based diff from the off, though
var aa=[], aaa=[];
var bb=[], bbb=[];
var i, j;
// first, gather all disconnected nodes in a and all crossing nodes in a and b
for (i=0; i<a.length; ++i ) {
if(!a[i].paired) { aa[i]=1; }
else if (countCrossings(b,a,i, true)) {
aa[i]=1;
bb[ a[i].row ] = 1;
}
}
// pick up remaining disconnected nodes in b
for (i=0; i<b.length; ++i ) {
if (bb[i]==1) { continue; }
if(!b[i].paired) { bb[i]=1; }
}
// another pass to gather context: we want the neighbours of included nodes which are not yet included
// we have to add in partners of these nodes, but we don't want to add context for *those* nodes in the next pass
for (i=0; i<b.length; ++i) {
if ( bb[i] == 1 ) {
for (j=max(0,i-context); j < min(b.length, i+context); ++j) {
if ( !bb[j] ) { bb[j] = 1; aa[ b[j].row ] = 0.5; }
}
}
}
for (i=0; i<a.length; ++i) {
if ( aa[i] == 1 ) {
for (j=max(0,i-context); j < min(a.length, i+context); ++j) {
if ( !aa[j] ) { aa[j] = 1; bb[ a[j].row ] = 0.5; }
}
}
}
for (i=0; i<bb.length; ++i) {
if (bb[i] > 0) { // it's a row we need
if (b[i].paired) { bbb.push(b[i].text); } // joined; partner should be in aa
else {
bbb.push(b[i]);
}
}
}
for (i=0; i<aa.length; ++i) {
if (aa[i] > 0) { // it's a row we need
if (a[i].paired) { aaa.push(a[i].text); } // joined; partner should be in aa
else {
aaa.push(a[i]);
}
}
}
return { a: aaa, b: bbb};
}
function stripOuterCommonLines(a,b,context) {
var i=0;
while (i<a.length && i < b.length && a[i]==b[i]) { ++i; }
var j=a.length-1; var k=b.length-1;
while ( j>=0 && k>=0 && a[j]==b[k] ) { --j; --k; }
return { a: a.slice(max(0,i - 1 - context), min(a.length+1, j + context+1)),
b: b.slice(max(0,i - 1 - context), min(b.length+1, k + context+1)) };
}
function insertDiff(navpop) {
// for speed reasons, we first do a line-based diff, discard stuff that seems boring, then do a word-based diff
// FIXME: sometimes this gives misleading diffs as distant chunks are squashed together
var oldlines=navpop.diffData.Old.data.split('\n');
var newlines=navpop.diffData.New.data.split('\n');
var inner=stripOuterCommonLines(oldlines,newlines,getValueOf('popupDiffContextLines'));
oldlines=inner.a; newlines=inner.b;
var truncated=false;
getValueOf('popupDiffMaxLines');
if (oldlines.length > pg.option.popupDiffMaxLines || newlines.length > pg.option.popupDiffMaxLines) {
// truncate
truncated=true;
inner=stripOuterCommonLines(oldlines.slice(0,pg.option.popupDiffMaxLines),
newlines.slice(0,pg.option.popupDiffMaxLines),
pg.option.popupDiffContextLines);
oldlines=inner.a; newlines=inner.b;
}
var lineDiff=diff(oldlines, newlines);
var lines2=rmBoringLines(lineDiff.o, lineDiff.n);
var oldlines2=lines2.a; var newlines2=lines2.b;
var simpleSplit = !String.prototype.parenSplit.isNative;
var html='<hr>';
if (getValueOf('popupDiffDates')) {
html += diffDatesTable(navpop.diffData.Old, navpop.diffData.New);
html += '<hr>';
}
html += shortenDiffString(
diffString(oldlines2.join('\n'), newlines2.join('\n'), simpleSplit),
getValueOf('popupDiffContextCharacters') ).join('<hr>');
setPopupTipsAndHTML(html.split('\n').join('<br>') +
(truncated ? '<hr><b>'+popupString('Diff truncated for performance reasons')+'</b>' : '') ,
'popupPreview', navpop.idNumber);
}
function diffDatesTable( oldDl, newDl ) {
var html='<table class="popup_diff_dates">';
html += diffDatesTableRow( newDl, tprintf('New revision'));
html += diffDatesTableRow( oldDl, tprintf('Old revision'));
html += '</table>';
return html;
}
function diffDatesTableRow( dl, label ) {
var txt='';
if (!dl) {
txt=popupString('Something went wrong :-(');
} else if (!dl.lastModified) {
txt= (/^\s*$/.test(dl.data)) ?
popupString('Empty revision, maybe non-existent') : popupString('Unknown date');
} else {
var datePrint=getValueOf('popupDiffDatePrinter');
if (typeof dl.lastModified[datePrint] == 'function') {
if (getValueOf('popupAdjustDiffDates')) {
var off;
if (off=Cookie.read('popTz')) {
var d2=adjustDate(dl.lastModified, off);
txt = dayFormat(d2, true) + ' ' + timeFormat(d2, true);
}
} else {
txt = dl.lastModified[datePrint]();
}
} else {
txt = tprintf('Invalid %s %s', ['popupDiffDatePrinter', datePrint]);
}
}
var revlink = generalLink({url: dl.url.replace(/&.*?(oldid=[0-9]+(?:&direction=[^&]*)?).*/, '&$1'),
text: label, title: label});
return simplePrintf('<tr><td>%s</td><td>%s</td></tr>', [ revlink, txt ]);
}
//</NOLITE>
// ENDFILE: diffpreview.js
// STARTFILE: links.js
//<NOLITE>
/////////////////////
// LINK GENERATION //
/////////////////////
// titledDiffLink --> titledWikiLink --> generalLink
// wikiLink --> titledWikiLink --> generalLink
// kateLink --> generalLink
function titledDiffLink(l) { // article, text, title, from, to) {
return titledWikiLink({article: l.article, action: l.to + '&oldid=' + l.from,
newWin: l.newWin,
noPopup: l.noPopup,
text: l.text, title: l.title,
/* hack: no oldid here */
actionName: 'diff'});
}
function wikiLink(l) {
//{article:article, action:action, text:text, oldid, newid}) {
if (! (typeof l.article == typeof {}
&& typeof l.action == typeof '' && typeof l.text==typeof '')) return null;
if (typeof l.oldid == 'undefined') l.oldid=null;
if (!/^((edit|view|revert|render)$|(raw))/.test(l.action)) { l.oldid=null; }
var hint=popupString(l.action + 'Hint'); // revertHint etc etc etc
var oldidData=[l.oldid, safeDecodeURI(l.article)];
var revisionString = tprintf('revision %s of %s', oldidData);
log('revisionString='+revisionString);
switch (l.action) {
case 'edit§ion=new': hint = popupString('newSectionHint'); break;
case 'edit&undo=':
l.action += l.diff; hint = popupString('undoHint');
break;
case 'raw&ctype=text/css': hint=popupString('rawHint'); break;
case 'revert':
var p=parseParams(pg.current.link.href);
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=' + revertSummary(l.oldid, p.diff);
if (p.diff=='prev') {
l.action += '&direction=prev';
revisionString = tprintf('the revision prior to revision %s of %s', oldidData);
}
if (getValueOf('popupRevertSummaryPrompt')) { l.action += '&autosummaryprompt=true'; }
if (getValueOf('popupMinorReverts')) { l.action += '&autominor=true'; }
log('revisionString is now '+revisionString);
break;
case 'nullEdit':
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=null';
break;
case 'historyfeed':
l.action='history&feed=rss';
break;
case 'markpatrolled':
l.action='markpatrolled&rcid='+l.rcid;
}
if (hint) {
if (l.oldid) {
hint = simplePrintf(hint, [revisionString]);
}
else {
hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
}
}
else {
hint = safeDecodeURI(l.article + '&action=' + l.action) + (l.oldid) ? '&oldid='+l.oldid : '';
}
return titledWikiLink({article: l.article, action: l.action, text: l.text, newWin:l.newWin,
title: hint, oldid: l.oldid, noPopup: l.noPopup});
}
function revertSummary(oldid, diff) {
if (getValueOf('popupUseQueryInterface')) { return revertSummaryQueried(oldid, diff); }
if (typeof getValueOf('popupTimeOffset') == 'number' && /[?&]action=history/.test(document.location.href)) {
var links=document.links;
var numlinks=links.length;
var date=null, editor=null;
var dateRe = RegExp('^([0-9]{2}:[0-9]{2}),\s*(.*[1-3][0-9]{3})$');
for (var i=0; i<numlinks-1; ++i) {
if (RegExp('oldid='+oldid).test(links[i].href) && dateRe.test(links[i].innerHTML)) {
// help konqueror out by putting the time at the end
var ds = links[i].innerHTML.replace(dateRe, '$2 $1');
// d is parsed according to current locale, in FF at least
// this is only OK if the user has set the time offset in prefs!
var d=new Date(+(new Date(ds)) - 1000*3600*getValueOf('popupTimeOffset'));
// strip out zero seconds and timezone in date, since they're prolly bogus
date=d.toString().replace(/([0-9]{2}:[0-9]{2}):00.*/, '$1');
editor=Title.fromURL(links[i+1].href).userName();
break;
}
}
if (date && editor && diff != 'prev') {
return simplePrintf(getValueOf('popupExtendedRevertSummary'), [date, editor, oldid]);
}
}
if (diff != 'prev') {
return simplePrintf(getValueOf('popupRevertSummary'), [ oldid ]);
}
return simplePrintf(getValueOf('popupRevertToPreviousSummary'), [ oldid ]);
}
function revertSummaryQueried(oldid, diff) {
var ret='';
if (diff == 'prev') {
ret=getValueOf('popupQueriedRevertToPreviousSummary');
} else { ret = getValueOf('popupQueriedRevertSummary'); }
return ret + '&autorv=' + oldid;
}
function titledWikiLink(l) {
// possible properties of argument:
// article, action, text, title, oldid, actionName, className, noPopup
// oldid = null is fine here
// article and action are mandatory args
if (typeof l.article == 'undefined' || typeof l.action=='undefined') {
errlog('got undefined article or action in titledWikiLink');
return null;
}
var base = pg.wiki.titlebase + l.article.urlString();
var url=base;
if (typeof l.actionName=='undefined' || !l.actionName) { l.actionName='action'; }
// no need to add &action=view, and this confuses anchors
if (l.action != 'view') { url = base + '&' + l.actionName + '=' + l.action; }
if (typeof l.oldid!='undefined' && l.oldid) { url+='&oldid='+l.oldid; }
var cssClass=pg.misc.defaultNavlinkClassname;
if (typeof l.className!='undefined' && l.className) { cssClass=l.className; }
return generalNavLink({url: url, newWin: l.newWin,
title: (typeof l.title != 'undefined') ? l.title : null,
text: (typeof l.text!='undefined')?l.text:null,
className: cssClass, noPopup:l.noPopup});
}
function getLastContrib(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processLastContribInfo(x,{page: wikipage, newWin: newWin})});
}
function processLastContribInfo(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: an odd thing happened. Please retry.'); return; }
if(!info.firstNewEditor) {
alert(tprintf('Only found one editor: %s made %s edits', [info.edits[0].editor,info.edits.length]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+info.firstNewEditor.oldid;
displayUrl(newUrl, stuff.newWin);
}
function getDiffSinceMyEdit(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processDiffSinceMyEdit(x,{page: wikipage, newWin: newWin})});
}
function processDiffSinceMyEdit(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: something fishy happened. Please try again.'); return; }
var friendlyName=stuff.page.split('_').join(' ');
if(!info.myLastEdit) {
alert(tprintf('Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
[info.userName, getValueOf('popupHistoryLimit'), friendlyName]));
return;
}
if(info.myLastEdit.index==0) {
alert(tprintf("%s seems to be the last editor to the page %s", [info.userName, friendlyName]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+ info.myLastEdit.oldid;
displayUrl(newUrl, stuff.newWin);
}
function displayUrl(url, newWin){
if(newWin) { window.open(url); }
else { document.location=url; }
}
function purgePopups() {
processAllPopups(true);
setupCache(); // deletes all cached items (not browser cached, though...)
pg.option={};
abortAllDownloads();
}
function processAllPopups(nullify, banish) {
for (var i=0; i<pg.current.links.length; ++i) {
if (!pg.current.links[i].navpopup) { continue; }
(nullify || banish) && pg.current.links[i].navpopup.banish();
nullify && (pg.current.links[i].navpopup=null);
}
}
function disablePopups(){
processAllPopups(false, true);
setupTooltips(null, true);
}
function togglePreviews() {
processAllPopups(true, true);
pg.option.simplePopups=!pg.option.simplePopups;
abortAllDownloads();
}
function magicHistoryLink(l) {
// FIXME use onclick change href trick to sort this out instead of window.open
var jsUrl='', title='';
switch(l.id) {
case 'lastContrib':
jsUrl=simplePrintf('javascript:getLastContrib(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('lastContribHint');
break;
case 'sinceMe':
jsUrl=simplePrintf('javascript:getDiffSinceMyEdit(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('sinceMeHint');
break;
}
return generalNavLink({url: jsUrl, newWin: false, // can't have new windows with JS links, I think
title: title, text: l.text, noPopup: l.noPopup});
}
function popupMenuLink(l) {
var jsUrl=simplePrintf('javascript:%s()', [l.id]);
var title=popupString(simplePrintf('%sHint', [l.id]));
return generalNavLink({url: jsUrl, newWin:false, title:title, text:l.text, noPopup:l.noPopup});
}
function specialLink(l) {
// properties: article, specialpage, text, sep
if (typeof l.specialpage=='undefined'||!l.specialpage) return null;
var base = pg.wiki.titlebase + pg.ns.special+':'+l.specialpage;
if (typeof l.sep == 'undefined' || l.sep===null) l.sep='&target=';
var article=l.article.urlString({keepSpaces: l.specialpage=='Search'});
var hint=popupString(l.specialpage+'Hint');
switch (l.specialpage) {
case 'Log':
switch (l.sep) {
case '&user=': hint=popupString('userLogHint'); break;
case '&type=block&page=': hint=popupString('blockLogHint'); break;
case '&page=': hint=popupString('pageLogHint'); break;
case '&type=protect&page=': hint=popupString('protectLogHint'); break;
case '&type=delete&page=': hint=popupString('deleteLogHint'); break;
default: log('Unknown log type, sep=' + l.sep); hint='Missing hint (FIXME)';
}
break;
case 'Prefixindex': article += '/'; break;
}
if (hint) hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
else hint = safeDecodeURI(l.specialpage+':'+l.article) ;
var url = base + l.sep + article;
return generalNavLink({url: url, title: hint, text: l.text, newWin:l.newWin, noPopup:l.noPopup});
}
function generalLink(l) {
// l.url, l.text, l.title, l.newWin, l.className, l.noPopup
if (typeof l.url=='undefined') return null;
// only quotation marks in the url can screw us up now... I think
var url=l.url.split('"').join('%22');
var ret='<a href="' + url + '"';
if (typeof l.title!='undefined' && l.title) { ret += ' title="' + l.title + '"'; }
if (l.noPopup) { ret += ' noPopup=1'; }
var newWin;
if (typeof l.newWin=='undefined' || l.newWin===null) { newWin=getValueOf('popupNewWindows'); }
else { newWin=l.newWin; }
if (newWin) { ret += ' target="_blank"'; }
if (typeof l.className!='undefined'&&l.className) { ret+=' class="'+l.className+'"'; }
ret += '>';
if (typeof l.text==typeof '') { ret+= l.text; }
ret +='</a>';
return ret;
}
function appendParamsToLink(linkstr, params) {
var sp=linkstr.parenSplit(RegExp('(href="[^"]+?)"', 'i'));
if (sp.length<2) return null;
var ret=sp.shift() + sp.shift();
ret += '&' + params + '"';
ret += sp.join('');
return ret;
}
function changeLinkTargetLink(x) { // newTarget, text, hint, summary, clickButton, minor, title (optional) {
if (x.newTarget) {
log ('changeLinkTargetLink: newTarget=' + x.newTarget);
}
// optional: oldTarget (in wikitext)
// if x.newTarget omitted or null, remove the link
//x.text=encodeURI(x.text); // this buggers things up on zh.wikipedia.org and doesn't seem necessary
x.clickButton=encodeURI(x.clickButton);
// FIXME: first character of page title as well as namespace should be case insensitive
// eg [[category:foo]] and [[Category:Foo]] are equivalent
// this'll break if charAt(0) is nasty
var cA=literalizeRegex(x.oldTarget);
var chs=cA.charAt(0).toUpperCase();
chs='['+chs + chs.toLowerCase()+']';
var currentArticleRegexBit=chs+cA.substring(1);
currentArticleRegexBit=currentArticleRegexBit
.split(RegExp('[_ ]+', 'g')).join('[_ ]+')
.split('\\(').join('(?:%2528|\\()')
.split('\\)').join('(?:%2529|\\))');
// leading and trailing space should be ignored, and anchor bits optional:
currentArticleRegexBit = '\\s*(' + currentArticleRegexBit + '(?:#[^\\[\\|]*)?)\\s*';
// e.g. Computer (archaic) -> \s*([Cc]omputer[_ ](?:%2528|\()archaic(?:%2528|\)))\s*
// autoedit=s~\[\[([Cc]ad)\]\]~[[Computer-aided%20design|$1]]~g;s~\[\[([Cc]AD)[|]~[[Computer-aided%20design|~g
var title=x.title || wgPageName.split('_').join(' ');
var lk=titledWikiLink({article: new Title(title), newWin:x.newWin,
action: 'edit',
text: x.text,
title: x.hint,
className: 'popup_change_title_link'
});
var cmd='';
if (x.newTarget) {
// escape '&' and other nasties
var t=encodeURI(x.newTarget);
var s=encodeURI(literalizeRegex(x.newTarget));
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~[['+t+'|$1]]~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|]~[['+t+'|~g;';
cmd += 's~\\[\\['+s + '\\|' + s + '\\]\\]~[[' + t + ']]~g';
} else {
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~$1~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|](.*?)\\]\\]~$2~g';
}
cmd += '&autoclick='+x.clickButton + '&actoken=' + autoClickToken();
cmd += ( x.minor == null ) ? '' : '&autominor='+x.minor;
cmd += ( x.watch == null ) ? '' : '&autowatch='+x.watch;
cmd += '&autosummary='+x.summary;
return appendParamsToLink(lk, 'autoedit='+cmd);
}
function redirLink(redirMatch, article) {
// NB redirMatch is in wikiText
var ret='';
if (getValueOf('popupAppendRedirNavLinks') && getValueOf('popupNavLinks')) {
ret += '<hr>';
if (getValueOf('popupFixRedirs') && typeof autoEdit != 'undefined' && autoEdit) {
log('redirLink: newTarget=' + redirMatch);
ret += addPopupShortcut(
changeLinkTargetLink(
{newTarget: redirMatch, text: popupString('Redirects'),
hint: popupString('Fix this redirect'),
summary: simplePrintf(getValueOf('popupFixRedirsSummary'),
[article.toString(), redirMatch ]),
oldTarget: article.toString(),
clickButton: getValueOf('popupRedirAutoClick'), minor: true,
watch: getValueOf('popupWatchRedirredPages')})
, 'R');
ret += popupString(' to ');
}
else ret += popupString('Redirects') + popupString(' to ');
return ret;
}
else return '<br> ' + popupString('Redirects') + popupString(' to ') +
titledWikiLink({article: new Title().fromWikiText(redirMatch), action: 'view', /* FIXME: newWin */
text: safeDecodeURI(redirMatch), title: popupString('Bypass redirect')});
}
function arinLink(l) {
if (!saneLinkCheck(l)) { return null; }
if ( ! l.article.isIpUser() || ! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
return generalNavLink({url:'http://ws.arin.net/cgi-bin/whois.pl?queryinput=' + escape(uN), newWin:l.newWin,
title: tprintf('Look up %s in ARIN whois database', [uN]),
text: l.text, noPopup:1});
}
function toolDbName(cookieStyle) {
var ret=null;
var theWiki=pg.wiki.hostname.split('.')[1];
if (pg.wiki.hostname==pg.wiki.commons) {
ret = 'commonswiki';
} else {
switch(theWiki) {
case 'wikipedia':
case 'wikimedia':
ret = pg.wiki.lang + 'wiki';
break;
default:
ret = pg.wiki.lang + theWiki;
break;
}
}
if (!cookieStyle) { ret+= '_p'; }
return ret;
}
function saneLinkCheck(l) {
if (typeof l.article != typeof {} || typeof l.text != typeof '') { return false; }
return true;
}
function kateLink(l) {
if(!saneLinkCheck(l)) return null;
if (! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
var tool=getValueOf('popupEditCounterTool');
var url;
var defaultToolUrl='http://tools.wikimedia.de/~$3/cgi-bin/count_edits?dbname=$2&user=$1';
switch(tool) {
case 'custom':
url=simplePrintf(getValueOf('popupEditCounterUrl'), [ escape(uN), toolDbName() ]);
break;
default:
url=simplePrintf(defaultToolUrl, [ escape(uN), toolDbName(), tool ]);
}
return generalNavLink({url:url, title: tprintf('katelinkHint', [uN]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function contribsTreeLink(l) {
if(!saneLinkCheck(l)) return null;
if (! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
var url='http://tools.wikimedia.de/~interiot/cgi-bin/contribution_tree?dbname=';
url += toolDbName() + '&user='+ escape(uN);
return generalNavLink({url:url, title: tprintf('contribsTreeHint', [uN]), newWin:l.newWin, text: l.text,
noPopup:1});
}
function globalSearchLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + article, newWin:l.newWin,
title: tprintf('globalSearchHint', [article]),
text: l.text, noPopup:1});
}
function googleLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://www.google.com/search?q=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + '%22' + article + '%22', newWin:l.newWin,
title: tprintf('googleSearchHint', [article]),
text: l.text, noPopup:1});
}
function editorListLink(l) {
if(!saneLinkCheck(l)) return null;
var article= l.article.articleFromTalkPage() || l.article;
var base='http://tools.wikimedia.de/~tim/counter/?page=';
return generalNavLink({url:base+article.urlString(),
title: tprintf('editorListHint', [article]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function generalNavLink(l) {
l.className = (l.className==null) ? 'popupNavLink' : l.className;
return generalLink(l);
}
//////////////////////////////////////////////////
// magic history links
//
function getHistoryInfo(wikipage, whatNext) {
log('getHistoryInfo');
getHistory(wikipage, whatNext ? function(d){whatNext(processHistory(d));} : processHistory);
}
// FIXME eliminate pg.idNumber ... how? :-(
function getHistory(wikipage, onComplete) {
log('getHistory');
var url;
if (getValueOf('popupUseQueryInterface')) {
url = pg.wiki.wikibase + '/query.php?format=json&what=revisions&titles=' +
new Title(wikipage).urlString() + '&rvlimit=' + getValueOf('popupHistoryLimit');
} else {
url = pg.wiki.titlebase + new Title(wikipage).urlString() +
'&action=history' + '&limit=' + getValueOf('popupHistoryLimit');
}
log('getHistory: url='+url);
return startDownload(url, pg.idNumber+'history', onComplete);
}
function processHistory(download) {
if (getValueOf('popupUseQueryInterface')) {
return processHistoryQuery(download);
}
return processHistoryScreenScrape(download);
}
function processHistoryScreenScrape(download) {
// screen scrape alert
var d=download.data;
// pg.misc.data=d; // for debugging
var edits=[];
var split=d.split('<li>');
for (var i=0; i<split.length; ++i) {
var histRe=RegExp(
'^[(].*?type="radio" value="([0-9]*)".*?class=\'history-user\'>' +
'<a href="(/wiki/User:|/w/index.php[?]title=(Special:Contributions&target=|User:))([^&"]*)');
var match=histRe.exec(split[i]);
if (match) {
edits.push({ oldid: match[1], editor: match[4] });
}
}
var userName=getValueOf('popupUserName') ||
Cookie.read(pg.wiki.userNameCookie).split('+').join('_');
return finishProcessHistory(edits, userName);
}
function processHistoryQuery(download) {
log ('processHistoryQuery');
var d=download.data;
log('d='+d);
var jsobj;
try {
log('trying to parse JSON');
log('jsobj=' + d);
eval('jsobj=' + d);
log('done eval; jsobj='+jsobj);
window.x=jsobj;
var p=jsobj['pages'];
log('got p');
for (var pageid in p) {
var revisions=p[pageid]['revisions'];
// we only get the first one
break;
}
log('got revisions');
log(revisions.length +' of them');
} catch (someError) {
log('Something went wrong with JSON business');
return finishProcessHistory([]);
}
var edits=[];
for (var i=0; i<revisions.length; ++i) {
edits.push({ oldid: revisions[i]['revid'], editor: revisions[i]['user'] });
}
log('processed ' + edits.length + ' edits');
var userName=getValueOf('popupUserName') ||
unescape(Cookie.read(pg.wiki.userNameCookie).split('+').join(' '));
return finishProcessHistory(edits, userName);
}
function finishProcessHistory(edits, userName) {
var histInfo={};
histInfo.edits=edits;
histInfo.userName=userName;
for (var i=0; i<edits.length; ++i) {
if (typeof histInfo.myLastEdit == 'undefined' && userName && edits[i].editor==userName) {
histInfo.myLastEdit={index: i, oldid: edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
if (typeof histInfo.firstNewEditor == 'undefined' && edits[i].editor != edits[0].editor) {
histInfo.firstNewEditor={index:i, oldid:edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
}
//pg.misc.historyInfo=histInfo;
return histInfo;
}
//</NOLITE>
// ENDFILE: links.js
// STARTFILE: options.js
//////////////////////////////////////////////////
// options
// check for cookies and existing value, else use default
function defaultize(x) {
var val=null;
if (x!='popupCookies') {
defaultize('popupCookies');
if (pg.option.popupCookies && (val=Cookie.read(x))) {
pg.option[x]=val;
return;
}
}
if (pg.option[x]===null || typeof pg.option[x]=='undefined') {
if (typeof window[x] != 'undefined' ) pg.option[x]=window[x];
else pg.option[x]=pg.optionDefault[x];
}
}
function newOption(x, def) {
pg.optionDefault[x]=def;
}
function setDefault(x, def) {
return newOption(x, def);
}
function getValueOf(varName) {
defaultize(varName);
return pg.option[varName];
}
function useDefaultOptions() { // for testing
for (var p in pg.optionDefault) {
pg.option[p]=pg.optionDefault[p];
if (typeof window[p]!='undefined') { delete window[p]; }
}
}
function setOptions() {
// user-settable parameters and defaults
// Basic options
newOption('popupDelay', 0.5);
newOption('popupHideDelay', 0.5);
newOption('simplePopups', false);
newOption('popupStructure', 'shortmenus'); // see later - default for popupStructure is 'original' if simplePopups is true
newOption('popupActionsMenu', true);
newOption('popupSetupMenu', true);
newOption('popupAdminLinks', false);
newOption('popupShortcutKeys', false);
newOption('popupHistoricalLinks', true);
newOption('popupOnlyArticleLinks', true);
newOption('removeTitles', true);
newOption('popupMaxWidth', 350);
newOption('popupInitialWidth', false); // integer or false
newOption('popupSimplifyMainLink', true);
newOption('popupAppendRedirNavLinks', true);
newOption('popupTocLinks', false);
newOption('popupSubpopups', true);
newOption('popupUserName', ''); // should be magically detected with cookies if this isn't set
newOption('popupDragHandle', false /* 'popupTopLinks'*/);
newOption('popupLazyPreviews', true);
newOption('popupLazyDownloads', true);
newOption('popupAllDabsStubs', false);
newOption('popupDebugging', false);
newOption('popupAdjustDiffDates', true);
newOption('popupActiveNavlinks', true);
newOption('popupModifier', false); // ctrl, shift, alt or meta
//<NOLITE>
// images
newOption('popupImages', true);
newOption('imagePopupsForImages', true);
newOption('popupNeverGetThumbs', false);
newOption('popupImagesFromThisWikiOnly', false);
newOption('popupMinImageWidth', 50);
newOption('popupLoadImagesSequentially', false);
//newOption('popupImagesToggleSize', true);
newOption('popupThumbAction', 'imagepage'); //'sizetoggle');
newOption('popupImageSize', 60);
newOption('popupShowNonCommonsImages', false);
// redirs, dabs, reversion
newOption('popupFixRedirs', false);
newOption('popupRedirAutoClick', 'wpDiff');
newOption('popupFixDabs', false);
newOption('popupRevertSummaryPrompt', false);
newOption('popupMinorReverts', false);
newOption('popupRedlinkRemoval', false);
newOption('popupWatchDisambiggedPages', null);
newOption('popupWatchRedirredPages', null);
// navlinks
newOption('popupNavLinks', true);
newOption('popupNavLinkSeparator', ' ⋅ ');
newOption('popupLastEditLink', true);
newOption('popupEditCounterTool', 'interiot');
newOption('popupEditCounterUrl', '');
newOption('popupExtraUserMenu', '');
//</NOLITE>
// previews etc
newOption('popupPreviews', true);
newOption('popupSummaryData', true);
newOption('popupMaxPreviewSentences', 5);
newOption('popupMaxPreviewCharacters', 600);
newOption('popupLastModified', true);
newOption('popupPreviewKillTemplates', true);
newOption('popupPreviewRawTemplates', false);
newOption('popupPreviewFirstParOnly', true);
newOption('popupPreviewCutHeadings', true);
//<NOLITE>
// diffs
newOption('popupPreviewDiffs', true);
newOption('popupDiffMaxLines', 100);
newOption('popupDiffContextLines', 2);
newOption('popupDiffContextCharacters', 40);
newOption('popupDiffDates', true);
newOption('popupDiffDatePrinter', 'toLocaleString');
// edit summaries. God, these are ugly.
newOption('popupFixDabsSummary', popupString('defaultpopupFixDabsSummary') );
newOption('popupExtendedRevertSummary', popupString('defaultpopupExtendedRevertSummary') );
newOption('popupTimeOffset', null);
newOption('popupRevertSummary', popupString('defaultpopupRevertSummary') );
newOption('popupRevertToPreviousSummary', popupString('defaultpopupRevertToPreviousSummary') );
newOption('popupQueriedRevertSummary', popupString('defaultpopupQueriedRevertSummary') );
newOption('popupQueriedRevertToPreviousSummary', popupString('defaultpopupQueriedRevertToPreviousSummary') );
newOption('popupFixRedirsSummary', popupString('defaultpopupFixRedirsSummary') );
newOption('popupRedlinkSummary', popupString('defaultpopupRedlinkSummary') );
newOption('popupRmDabLinkSummary', popupString('defaultpopupRmDabLinkSummary') );
//</NOLITE>
// misc
newOption('popupCookies', false);
newOption('popupHistoryLimit', 50);
//<NOLITE>
newOption('popupFilters', [popupFilterStubDetect, popupFilterDisambigDetect,
popupFilterPageSize, popupFilterCountLinks,
popupFilterCountImages, popupFilterCountCategories,
popupFilterLastModified]);
newOption('extraPopupFilters', []);
newOption('popupOnEditSelection', 'cursor');
newOption('popupUseQueryInterface', true);
newOption('popupPreviewHistory', true);
newOption('popupImageLinks', true);
newOption('popupCategoryMembers', true);
newOption('popupHistoryPreviewLimit', 25);
newOption('popupContribsPreviewLimit',25);
//</NOLITE>
// new windows
newOption('popupNewWindows', false);
newOption('popupLinksNewWindow', {'lastContrib': true, 'sinceMe': true});
// regexps
newOption('popupDabRegexp', '([{][{]\\s*disambig|disambig\\s*[}][}]|disamb\\s*[}][}]|dab\\s*[}][}])|[{][{]\\s*(((geo|hn|road?|school|number)dis)|[234][lc][acw]|shipindex)(\\s*[|][^}]*)?\\s*[}][}]|is a .*disambiguation.*page');
newOption('popupStubRegexp', '(sect)?stub[}][}]|This .*-related article is a .*stub');
newOption('popupImageVarsRegexp', 'image|image_(?:file|skyline|name|flag|seal)|cover|badge|logo');
}
// ENDFILE: options.js
// STARTFILE: strings.js
//<NOLITE>
//////////////////////////////////////////////////
// Translatable strings
//////////////////////////////////////////////////
//
// See instructions at
// http://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups/Translation
pg.string = {
/////////////////////////////////////
// summary data, searching etc.
/////////////////////////////////////
'article': 'article',
'category': 'category',
'categories': 'categories',
'image': 'image',
'images': 'images',
'stub': 'stub',
'section stub': 'section stub',
'Empty page': 'Empty page',
'kB': 'kB',
'bytes': 'bytes',
'day': 'day',
'days': 'days',
'hour': 'hour',
'hours': 'hours',
'minute': 'minute',
'minutes': 'minutes',
'second': 'second',
'seconds': 'seconds',
'week': 'week',
'weeks': 'weeks',
'search': 'search',
'SearchHint': 'Find English Wikipedia articles containing %s',
'web': 'web',
'global': 'global',
'globalSearchHint': 'Search across Wikipedias in different languages for %s',
'googleSearchHint': 'Google for %s',
/////////////////////////////////////
// article-related actions and info
// (some actions also apply to user pages)
/////////////////////////////////////
'actions': 'actions', ///// view articles and view talk
'popupsMenu': 'popups',
'togglePreviewsHint': 'Toggle preview generation in popups on this page',
'toggle previews': 'toggle previews',
'reset': 'reset',
'more...': 'more...',
'disable': 'disable popups',
'disablePopupsHint': 'Disable popups on this page. Reload page to re-enable.',
'historyfeedHint': 'RSS feed of recent changes to this page',
'purgePopupsHint': 'Reset popups, clearing all cached popup data.',
'PopupsHint': 'Reset popups, clearing all cached popup data.',
'spacebar': 'space',
'view': 'view',
'view article': 'view article',
'viewHint': 'Go to %s',
'talk': 'talk',
'talk page': 'talk page',
'this revision': 'this revision',
'revision %s of %s': 'revision %s of %s',
'Revision %s of %s': 'Revision %s of %s',
'the revision prior to revision %s of %s': 'the revision prior to revision %s of %s',
'Toggle image size': 'Click to toggle image size',
'del': 'del', ///// delete, protect, move
'delete': 'delete',
'deleteHint': 'Delete %s',
'undeleteShort': 'un',
'UndeleteHint': 'Show the deletion history for %s',
'protect': 'protect',
'protectHint': 'Restrict editing rights to %s',
'unprotectShort': 'un',
'unprotectHint': 'Allow %s to be edited by anyone again',
'move': 'move',
'move page': 'move page',
'MovepageHint': 'Change the title of %s',
'edit': 'edit', ///// edit articles and talk
'edit article': 'edit article',
'editHint': 'Change the content of %s',
'edit talk': 'edit talk',
'new': 'new',
'new topic': 'new topic',
'newSectionHint': 'Start a new section on %s',
'null edit': 'null edit',
'nullEditHint': 'Submit an edit to %s, making no changes ',
'hist': 'hist', ///// history, diffs, editors, related
'history': 'history',
'historyHint': 'List the changes made to %s',
'last': 'last',
'lastEdit': 'lastEdit',
'mark patrolled': 'mark patrolled',
'markpatrolledHint': 'Mark this edit as patrolled',
'show last edit': 'most recent edit',
'Show the last edit': 'Show the effects of the most recent change',
'lastContrib': 'lastContrib',
'last set of edits': 'latest edits',
'lastContribHint': 'Show the net effect of changes made by the last editor',
'cur': 'cur',
'diffCur': 'diffCur',
'Show changes since revision %s': 'Show changes since revision %s',
'%s old': '%s old', // as in 4 weeks old
'oldEdit': 'oldEdit',
'purge': 'purge',
'purgeHint': 'Demand a fresh copy of %s',
'raw': 'source',
'rawHint': 'Download the source of %s',
'render': 'simple',
'renderHint': 'Show a plain HTML version of %s',
'Show the edit made to get revision': 'Show the edit made to get revision',
'sinceMe': 'sinceMe',
'changes since mine': 'diff my edit',
'sinceMeHint': 'Show changes since my last edit',
'Couldn\'t find an edit by %s\nin the last %s edits to\n%s': 'Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
'eds': 'eds',
'editors': 'editors',
'editorListHint': 'List the users who have edited %s',
'related': 'related',
'relatedChanges': 'relatedChanges',
'related changes': 'related changes',
'RecentchangeslinkedHint': 'Show changes in articles related to %s',
'editOld': 'editOld', ///// edit old version, or revert
'rv': 'rv',
'revert': 'revert',
'revertHint': 'Revert to %s',
'defaultpopupRedlinkSummary': 'Removing link to empty page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixDabsSummary': 'Disambiguate [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixRedirsSummary': 'Redirect bypass from [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupExtendedRevertSummary': 'Revert to revision dated %s by %s, oldid %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertToPreviousSummary': 'Revert to the revision prior to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertSummary': 'Revert to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertToPreviousSummary': 'Revert to the revision prior to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertSummary': 'Revert to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRmDabLinkSummary': 'Remove link to dab page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'Redirects': 'Redirects', // as in Redirects to ...
' to ': ' to ', // as in Redirects to ...
'Bypass redirect': 'Bypass redirect',
'Fix this redirect': 'Fix this redirect',
'disambig': 'disambig', ///// add or remove dab etc.
'disambigHint': 'Disambiguate this link to [[%s]]',
'Click to disambiguate this link to:': 'Click to disambiguate this link to:',
'remove this link': 'remove this link',
'remove all links to this page from this article': 'remove all links to this page from this article',
'remove all links to this disambig page from this article': 'remove all links to this disambig page from this article',
'mainlink': 'mainlink', ///// links, watch, unwatch
'wikiLink': 'wikiLink',
'wikiLinks': 'wikiLinks',
'links here': 'links here',
'whatLinksHere': 'whatLinksHere',
'what links here': 'what links here',
'WhatlinkshereHint': 'List the pages that are hyperlinked to %s',
'unwatchShort': 'un',
'watchThingy': 'watch', // called watchThingy because {}.watch is a function
'watchHint': 'Add %s to my watchlist',
'unwatchHint': 'Remove %s from my watchlist',
'Only found one editor: %s made %s edits': 'Only found one editor: %s made %s edits',
'%s seems to be the last editor to the page %s': '%s seems to be the last editor to the page %s',
'rss': 'rss',
/////////////////////////////////////
// diff previews
/////////////////////////////////////
'Diff truncated for performance reasons': 'Diff truncated for performance reasons',
'Old revision': 'Old revision',
'New revision': 'New revision',
'Something went wrong :-(': 'Something went wrong :-(',
'Empty revision, maybe non-existent': 'Empty revision, maybe non-existent',
'Unknown date': 'Unknown date',
/////////////////////////////////////
// other special previews
/////////////////////////////////////
'Empty category': 'Empty category',
'Category members (%s shown)': 'Category members (%s shown)',
'No image links found': 'No image links found',
'File links': 'File links',
'not commons': 'There is no file with this name on the Wikimedia Commons.',
'commons only': 'This file is from the Wikimedia Commons.',
'No image found': 'No image found',
'commons dupe': 'The same file appears to be available on the Wikimedia Commons.',
'commons conflict': 'A different file with the same name is available on the Wikimedia Commons.',
/////////////////////////////////////
// user-related actions and info
/////////////////////////////////////
'user': 'user', ///// user page, talk, email, space
'user page': 'user page',
'user talk': 'user talk',
'edit user talk': 'edit user talk',
'leave comment': 'leave comment',
'email': 'email',
'email user': 'email user',
'EmailuserHint': 'Send an email to %s',
'space': 'space', // short form for userSpace link
'PrefixindexHint': 'Show pages in the userspace of %s',
'count': 'count', ///// contributions, tree, log
'edit counter': 'edit counter',
'katelinkHint': 'Count the countributions made by %s',
'contribs': 'contribs',
'contributions': 'contributions',
'ContributionsHint': 'List the contributions made by %s',
'tree': 'tree',
'contribsTreeHint': 'Explore %s\'s contributions by namespace and by article',
'log': 'log',
'user log': 'user log',
'userLogHint': 'Show %s\'s user log',
'arin': 'ARIN lookup', ///// ARIN lookup, block user or IP
'Look up %s in ARIN whois database': 'Look up %s in the ARIN whois database',
'unblockShort': 'un',
'block': 'block',
'block user': 'block user',
'IpblocklistHint': 'Unblock %s',
'BlockipHint': 'Prevent %s from editing',
'block log': 'block log',
'blockLogHint': 'Show the block log for %s',
'protectLogHint': 'Show the protection log for %s',
'pageLogHint': 'Show the page log for %s',
'deleteLogHint': 'Show the deletion log for %s',
'Invalid %s %s': 'The option %s is invalid: %s',
'No backlinks found': 'No backlinks found',
' and more': ' and more',
'undo': 'undo',
'undoHint': 'undo this edit',
'Download preview data': 'Download preview data',
/////////////////////////////////////
// Autoediting
/////////////////////////////////////
'Enter a non-empty edit summary or press cancel to abort': 'Enter a non-empty edit summary or press cancel to abort',
'Failed to get revision information, please edit manually.\n\n': 'Failed to get revision information, please edit manually.\n\n',
'The %s button has been automatically clicked. Please wait for the next page to load.': 'The %s button has been automatically clicked. Please wait for the next page to load.',
'Could not find button %s. Please check the settings in your javascript file.': 'Could not find button %s. Please check the settings in your javascript file.',
/////////////////////////////////////
// Popups setup
/////////////////////////////////////
'Open full-size image': 'Open full-size image',
'zxy': 'zxy'
};
function popupString(str) {
if (typeof popupStrings != 'undefined' && popupStrings && popupStrings[str]) { return popupStrings[str]; }
if (pg.string[str]) { return pg.string[str]; }
return str;
}
function tprintf(str,subs) {
if (typeof subs != typeof []) { subs = [subs]; }
return simplePrintf(popupString(str), subs);
}
//</NOLITE>
// ENDFILE: strings.js
p880kbmgtsdh8nsotrpkjctienarrji
14875
14874
2010-09-03T18:03:25Z
Darklama
2894
updated from WP
14875
javascript
text/javascript
var popupVersion="en:MediaWiki:Gadget-popups.js " + /*/{{subst:Selfsubst/now string|js|/*/ "2010-08-30 16:11:49 (UTC)" /*/}}/*/;
// STARTFILE: main.js
// **********************************************************************
// ** **
// ** changes to this file affect many users. **
// ** please discuss on the talk page before editing **
// ** **
// **********************************************************************
// ** **
// ** if you do edit this file, be sure that your editor recognizes it **
// ** as utf8, or the weird and wonderful characters in the namespaces **
// ** below will be completely broken. You can check with the show **
// ** changes button before submitting the edit. **
// ** test: مدیا מיוחד Мэдыя **
// ** **
// **********************************************************************
//////////////////////////////////////////////////
// Globals
//
// Trying to shove as many of these as possible into the pg (popup globals) object
function pg(){}; // dummy to stop errors
window.pg = {
re: {}, // regexps
ns: {}, // namespaces
string: {}, // translatable strings
wiki: {}, // local site info
misc: {}, // YUCK PHOOEY
option: {}, // options, see newOption etc
optionDefault: {}, // default option values
flag: {}, // misc flags
cache: {}, // page and image cache
structures: {}, // navlink structures
timer: {}, // all sorts of timers (too damn many)
counter: {}, // .. and all sorts of counters
current: {}, // state info
endoflist: null
};
window.pop = { // wrap various functions in here
init: {},
util: {},
endoflist: null
};
function popupsReady() {
if (!window.pg) { return false; }
if (!pg.flag) { return false; }
if (!pg.flag.finishedLoading) { return false; }
return true;
}
/// Local Variables: ///
/// mode:c ///
/// End: ///
// ENDFILE: main.js
// STARTFILE: actions.js
function setupTooltips(container, remove, force, popData) {
log('setupTooltips, container='+container+', remove='+remove);
if (!container) {
//<NOLITE>
// the main initial call
if (getValueOf('popupOnEditSelection') && window.doSelectionPopup && document && document.editform && document.editform.wpTextbox1) {
document.editform.wpTextbox1.onmouseup=doSelectionPopup;
}
//</NOLITE>
// article/content is a structure-dependent thing
container = defaultPopupsContainer();
}
if (!remove && !force && container.ranSetupTooltipsAlready) { return; }
container.ranSetupTooltipsAlready = !remove;
var anchors;
anchors=container.getElementsByTagName('A');
setupTooltipsLoop(anchors, 0, 250, 100, remove, popData);
}
function defaultPopupsContainer() {
if (getValueOf('popupOnlyArticleLinks')) {
return document.getElementById('article') ||
document.getElementById('content') ||
document.getElementById('mw_content') || document;
}
return document;
}
function setupTooltipsLoop(anchors,begin,howmany,sleep, remove, popData) {
log(simplePrintf('setupTooltipsLoop(%s,%s,%s,%s,%s)', arguments));
var finish=begin+howmany;
var loopend = min(finish, anchors.length);
var j=loopend - begin;
log ('setupTooltips: anchors.length=' + anchors.length + ', begin=' + begin +
', howmany=' + howmany + ', loopend=' + loopend + ', remove=' + remove);
var doTooltip= remove ? removeTooltip : addTooltip;
// try a faster (?) loop construct
if (j > 0) {
do {
var a=anchors[loopend - j];
if (!a || !a.href) {
log('got null anchor at index ' + loopend - j);
continue;
}
doTooltip(a, popData);
} while (--j);
}
if (finish < anchors.length) {
setTimeout(function() {
setupTooltipsLoop(anchors,finish,howmany,sleep,remove,popData);},
sleep);
} else {
if ( !remove && ! getValueOf('popupTocLinks')) { rmTocTooltips(); }
pg.flag.finishedLoading=true;
}
}
// eliminate popups from the TOC
// This also kills any onclick stuff that used to be going on in the toc
function rmTocTooltips() {
var toc=document.getElementById('toc');
if (toc) {
var tocLinks=toc.getElementsByTagName('A');
var tocLen = tocLinks.length;
for (j=0; j<tocLen; ++j) {
removeTooltip(tocLinks[j], true);
}
}
}
function addTooltip(a, popData) {
if ( !isPopupLink(a) ) { return; }
a.onmouseover=mouseOverWikiLink;
a.onmouseout= mouseOutWikiLink;
a.onmousedown = killPopup;
a.hasPopup = true;
a.popData = popData;
}
function removeTooltip(a) {
if ( !a.hasPopup ) { return; }
a.onmouseover = null;
a.onmouseout = null;
if (a.originalTitle) { a.title = a.originalTitle; }
a.hasPopup=false;
}
function removeTitle(a) {
if (a.originalTitle) { return; }
a.originalTitle=a.title;
a.title='';
}
function restoreTitle(a) {
if ( a.title || !a.originalTitle ) { return; }
a.title = a.originalTitle;
a.originalTitle='';
}
function registerHooks(np) {
var popupMaxWidth=getValueOf('popupMaxWidth');
if (typeof popupMaxWidth == 'number') {
var setMaxWidth = function () {
np.mainDiv.style.maxWidth = popupMaxWidth + 'px';
np.maxWidth = popupMaxWidth;
try {
// hack for IE
// see http://www.svendtofte.com/code/max_width_in_ie/
// use setExpression as documented here on msdn: http://tinyurl dot com/dqljn
if (np.mainDiv.style.setExpression) {
np.mainDiv.style.setExpression(
'width', 'document.body.clientWidth > ' +
popupMaxWidth + ' ? "' +popupMaxWidth + 'px": "auto"');
}
}
catch (errors) {
errlog( "Running on IE8 are we not?: " + errors );
}
};
np.addHook(setMaxWidth, 'unhide', 'before');
}
//<NOLITE>
if (window.addPopupShortcuts && window.rmPopupShortcuts) {
np.addHook(addPopupShortcuts, 'unhide', 'after');
np.addHook(rmPopupShortcuts, 'hide', 'before');
}
//</NOLITE>
}
function mouseOverWikiLink(evt) {
if (!window.popupsReady || !window.popupsReady()) { return; }
if (!evt && window.event) {evt=window.event};
return mouseOverWikiLink2(this, evt);
}
function footnoteTarget(a) {
var aTitle=Title.fromAnchor(a);
// We want ".3A" rather than "%3A" or "?" here, so use the anchor property directly
var anch = aTitle.anchor;
if ( ! /^(cite_note-|_note-|endnote)/.test(anch) ) { return false; }
var lTitle=Title.fromURL(location.href);
if ( lTitle.toString(true) != aTitle.toString(true) ) { return false; }
var el=document.getElementById(anch);
while ( el && typeof el.nodeName == 'string') {
var nt = el.nodeName.toLowerCase();
if ( nt == 'li' ) { return el; }
else if ( nt == 'body' ) { return false; }
else if ( el.parentNode ) { el=el.parentNode; }
else { return false; }
}
return false;
}
function footnotePreview(x, navpop) {
setPopupHTML('<hr>' + x.innerHTML, 'popupPreview', navpop.idNumber,
getValueOf('popupSubpopups') ? function() {
setupTooltips(document.getElementById('popupPreview' + navpop.idNumber));
} : null);
}
// var modid=0;
// if(!window.opera) { window.opera={postError: console.log}; }
function modifierKeyHandler(a) {
return function(evt) {
// opera.postError('modifierKeyHandler called' + (++modid));
// opera.postError(''+evt + modid);
// for (var i in evt) {
// opera.postError('' + modid + ' ' + i + ' ' + evt[i]);
// }
// opera.postError(''+evt.ctrlKey + modid);
var mod=getValueOf('popupModifier');
if (!mod) { return true; }
if (!evt && window.event) {evt=window.event};
// opera.postError('And now....'+modid);
// opera.postError(''+evt+modid);
// opera.postError(''+evt.ctrlKey+modid);
var modPressed = modifierPressed(evt);
var action = getValueOf('popupModifierAction');
// FIXME: probable bug - modifierPressed should be modPressed below?
if ( action == 'disable' && modifierPressed ) { return true; }
if ( action == 'enable' && !modifierPressed ) { return true; }
mouseOverWikiLink2(a, evt);
};
}
function modifierPressed(evt) {
var mod=getValueOf('popupModifier');
if (!mod) { return false; }
if (!evt && window.event) {evt=window.event};
// opera.postError('And now....'+modid);
// opera.postError(''+evt+modid);
// opera.postError(''+evt.ctrlKey+modid);
return ( evt && mod && evt[mod.toLowerCase() + 'Key'] );
}
function dealWithModifier(a,evt) {
if (!getValueOf('popupModifier')) { return false; }
var action = getValueOf('popupModifierAction');
if ( action == 'enable' && !modifierPressed(evt) ||
action == 'disable' && modifierPressed(evt) ) {
// if the modifier is needed and not pressed, listen for it until
// we mouseout of this link.
restoreTitle(a);
var addHandler='addEventListener';
var rmHandler='removeEventListener';
var on='';
if (!document.addEventListener) {
addHandler='attachEvent';
rmHandler='detachEvent';
on='on';
}
if (!document[addHandler]) { // forget it
return;
}
a.modifierKeyHandler=modifierKeyHandler(a);
switch (action) {
case 'enable':
document[addHandler](on+'keydown', a.modifierKeyHandler, false);
a[addHandler](on+'mouseout', function() {
document[rmHandler](on+'keydown',
a.modifierKeyHandler, false);
}, true);
break;
case 'disable':
document[addHandler](on+'keyup', a.modifierKeyHandler, false);
}
return true;
}
return false;
}
function mouseOverWikiLink2(a, evt) {
if (dealWithModifier(a,evt)) { return; }
if ( getValueOf('removeTitles') ) { removeTitle(a); }
if ( a==pg.current.link && a.navpopup && a.navpopup.isVisible() ) { return; }
pg.current.link=a;
if (getValueOf('simplePopups') && pg.option.popupStructure===null) {
// reset *default value* of popupStructure
setDefault('popupStructure', 'original');
}
var article=(new Title()).fromAnchor(a);
// set global variable (ugh) to hold article (wikipage)
pg.current.article = article;
if (!a.navpopup) {
// FIXME: this doesn't behave well if you mouse out of a popup
// directly into a link with the same href
if (pg.current.linksHash[a.href] && false) {
a.navpopup = pg.current.linksHash[a.href];
}
else {
a.navpopup=newNavpopup(a, article);
pg.current.linksHash[a.href] = a.navpopup;
pg.current.links.push(a);
}
}
if (a.navpopup.pending===null || a.navpopup.pending!==0) {
// either fresh popups or those with unfinshed business are redone from scratch
simplePopupContent(a, article);
}
a.navpopup.showSoonIfStable(a.navpopup.delay);
getValueOf('popupInitialWidth');
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=setInterval(checkPopupPosition, 600);
if(getValueOf('simplePopups')) {
if (getValueOf('popupPreviewButton') && !a.simpleNoMore) {
var d=document.createElement('div');
d.className='popupPreviewButtonDiv';
var s=document.createElement('span');
d.appendChild(s);
s.className='popupPreviewButton';
s['on' + getValueOf('popupPreviewButtonEvent')] = function() {
a.simpleNoMore=true;
nonsimplePopupContent(a,article);
}
s.innerHTML=popupString('show preview');
setPopupHTML(d, 'popupPreview', a.navpopup.idNumber);
}
return;
}
if (a.navpopup.pending!==0 ) {
nonsimplePopupContent(a, article);
}
}
// simplePopupContent: the content that is shown even when simplePopups is true
function simplePopupContent(a, article) {
/* FIXME hack */ a.navpopup.hasPopupMenu=false;
a.navpopup.setInnerHTML(popupHTML(a));
fillEmptySpans({navpopup:a.navpopup});
if (getValueOf('popupDraggable'))
{
var dragHandle = getValueOf('popupDragHandle') || null;
if (dragHandle && dragHandle != 'all') {
dragHandle += a.navpopup.idNumber;
}
setTimeout(function(){a.navpopup.makeDraggable(dragHandle);}, 150);
}
//<NOLITE>
if (getValueOf('popupRedlinkRemoval') && a.className=='new') {
setPopupHTML('<br>'+popupRedlinkHTML(article), 'popupRedlink', a.navpopup.idNumber);
}
//</NOLITE>
}
function debugData(navpopup) {
if(getValueOf('popupDebugging') && navpopup.idNumber) {
setPopupHTML('idNumber='+navpopup.idNumber + ', pending=' + navpopup.pending,
'popupError', navpopup.idNumber);
}
}
function newNavpopup(a, article) {
var navpopup = new Navpopup();
navpopup.fuzz=5;
navpopup.delay=getValueOf('popupDelay')*1000;
// increment global counter now
navpopup.idNumber = ++pg.idNumber;
navpopup.parentAnchor = a;
navpopup.parentPopup = (a.popData && a.popData.owner);
navpopup.article = article;
registerHooks(navpopup);
return navpopup;
}
function nonsimplePopupContent(a, article) {
var diff=null, history=null;
var params=parseParams(a.href);
var oldid=(typeof params.oldid=='undefined' ? null : params.oldid);
//<NOLITE>
if(getValueOf('popupPreviewDiffs') && window.loadDiff) {
diff=params.diff;
}
if(getValueOf('popupPreviewHistory')) {
history=(params.action=='history');
}
//</NOLITE>
a.navpopup.pending=0;
var x;
if (x=footnoteTarget(a)) {
footnotePreview(x, a.navpopup);
//<NOLITE>
} else if ( diff || diff === 0 ) {
loadDiff(article, oldid, diff, a.navpopup);
} else if ( history ) {
loadAPIPreview('history', article, a.navpopup);
} else if ( pg.re.contribs.test(a.href) ) {
loadAPIPreview('contribs', article, a.navpopup);
} else if ( pg.re.backlinks.test(a.href) ) {
loadAPIPreview('backlinks', article, a.navpopup);
} else if ( // FIXME should be able to get all preview combinations with options
article.namespace()==pg.ns.image &&
( getValueOf('imagePopupsForImages') || ! anchorContainsImage(a) )
) {
loadAPIPreview('imagepagepreview', article, a.navpopup);
loadImage(article, a.navpopup);
//</NOLITE>
} else {
if (article.namespace() == pg.ns.category &&
getValueOf('popupCategoryMembers')) {
loadAPIPreview('category', article, a.navpopup);
} else if ((article.namespace() == pg.ns.user || article.namespace() == pg.ns.usertalk) &&
getValueOf('popupUserInfo')) {
loadAPIPreview('userinfo', article, a.navpopup);
}
startArticlePreview(article, oldid, a.navpopup);
}
}
function pendingNavpopTask(navpop) {
if (navpop && navpop.pending===null) { navpop.pending=0; }
++navpop.pending;
debugData(navpop);
}
function completedNavpopTask(navpop) {
if (navpop && navpop.pending) { --navpop.pending; }
debugData(navpop);
}
function startArticlePreview(article, oldid, navpop) {
navpop.redir=0;
loadPreview(article, oldid, navpop);
}
function loadPreview(article, oldid, navpop) {
pendingNavpopTask(navpop);
if (!navpop.redir) { navpop.originalArticle=article; }
if (!navpop.visible && getValueOf('popupLazyDownloads')) {
var id=(navpop.redir) ? 'DOWNLOAD_PREVIEW_REDIR_HOOK' : 'DOWNLOAD_PREVIEW_HOOK';
navpop.addHook(function() {
getWiki(article, insertPreview, oldid, navpop);
return true; }, 'unhide', 'before', id);
} else {
getWiki(article, insertPreview, oldid, navpop);
}
}
function loadPreviewFromRedir(redirMatch, navpop) {
// redirMatch is a regex match
var target = new Title().fromWikiText(redirMatch[2]);
// overwrite (or add) anchor from original target
// mediawiki does overwrite; eg [[User:Lupin/foo3#Done]]
if ( navpop.article.anchor ) { target.anchor = navpop.article.anchor; }
var trailingRubbish=redirMatch[4];
navpop.redir++;
navpop.redirTarget=target;
//<NOLITE>
if (window.redirLink) {
var warnRedir = redirLink(target, navpop.article);
setPopupHTML(warnRedir, 'popupWarnRedir', navpop.idNumber);
}
//</NOLITE>
navpop.article=target;
fillEmptySpans({redir: true, redirTarget: target, navpopup:navpop});
return loadPreview(target, null, navpop);
}
function insertPreview(download) {
if (!download.owner) { return; }
var redirMatch = pg.re.redirect.exec(download.data);
if (download.owner.redir===0 && redirMatch) {
completedNavpopTask(download.owner);
loadPreviewFromRedir(redirMatch, download.owner);
return;
}
if (download.owner.visible || !getValueOf('popupLazyPreviews')) {
insertPreviewNow(download);
} else {
var id=(download.owner.redir) ? 'PREVIEW_REDIR_HOOK' : 'PREVIEW_HOOK';
download.owner.addHook( function(){insertPreviewNow(download); return true;},
'unhide', 'after', id );
}
}
function insertPreviewNow(download) {
if (!download.owner) { return; }
var wikiText=download.data;
var navpop=download.owner;
completedNavpopTask(navpop);
var art=navpop.redirTarget || navpop.originalArticle;
//<NOLITE>
makeFixDabs(wikiText, navpop);
if (getValueOf('popupSummaryData') && window.getPageInfo) {
var info=getPageInfo(wikiText, download);
setPopupTrailer(getPageInfo(wikiText, download), navpop.idNumber);
}
var imagePage='';
if (art.namespace()==pg.ns.image) { imagePage=art.toString(); }
else { imagePage=getValidImageFromWikiText(wikiText); }
if(imagePage) { loadImage(Title.fromWikiText(imagePage), navpop); }
//</NOLITE>
if (getValueOf('popupPreviews')) { insertArticlePreview(download, art, navpop); }
}
function insertArticlePreview(download, art, navpop) {
if (download && typeof download.data == typeof ''){
if (art.namespace()==pg.ns.template && getValueOf('popupPreviewRawTemplates')) {
// FIXME compare/consolidate with diff escaping code for wikitext
var h='<hr><tt>' + download.data.entify().split('\\n').join('<br>\\n') + '</tt>';
setPopupHTML(h, 'popupPreview', navpop.idNumber);
}
else {
var p=prepPreviewmaker(download.data, art, navpop);
p.showPreview();
}
}
}
function prepPreviewmaker(data, article, navpop) {
// deal with tricksy anchors
var d=anchorize(data, article.anchorString());
var urlBase=joinPath([pg.wiki.articlebase, article.urlString()]);
var p=new Previewmaker(d, urlBase, navpop);
return p;
}
// Try to imitate the way mediawiki generates HTML anchors from section titles
function anchorize(d, anch) {
if (!anch) { return d; }
var anchRe=RegExp('=+\\s*' + literalizeRegex(anch).replace(/[_ ]/g, '[_ ]') + '\\s*=+');
var match=d.match(anchRe);
if(match && match.length > 0 && match[0]) { return d.substring(d.indexOf(match[0])); }
// now try to deal with == foo [[bar|baz]] boom == -> #foo_baz_boom
var lines=d.split('\n');
for (var i=0; i<lines.length; ++i) {
lines[i]=lines[i].replace(RegExp('[[]{2}([^|\\]]*?[|])?(.*?)[\\]]{2}', 'g'), '$2')
.replace(/'''([^'])/g, '$1').replace(RegExp("''([^'])", 'g'), '$1');
if (lines[i].match(anchRe)) {
return d.split('\n').slice(i).join('\n').replace(RegExp('^[^=]*'), '');
}
}
return d;
}
function killPopup() {
if (getValueOf('popupShortcutKeys') && window.rmPopupShortcuts) { rmPopupShortcuts(); }
if (!pg) { return; }
pg.current.link && pg.current.link.navpopup && pg.current.link.navpopup.banish();
pg.current.link=null;
abortAllDownloads();
if (pg.timer.checkPopupPosition !== null) {
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=null;
}
return true; // preserve default action
}
// ENDFILE: actions.js
// STARTFILE: domdrag.js
/**
@fileoverview
The {@link Drag} object, which enables objects to be dragged around.
<pre>
*************************************************
dom-drag.js
09.25.2001
www.youngpup.net
**************************************************
10.28.2001 - fixed minor bug where events
sometimes fired off the handle, not the root.
*************************************************
Pared down, some hooks added by [[User:Lupin]]
Copyright Aaron Boodman.
Saying stupid things daily since March 2001.
</pre>
*/
/**
Creates a new Drag object. This is used to make various DOM elements draggable.
@constructor
*/
function Drag () {
/**
Condition to determine whether or not to drag. This function should take one parameter, an Event.
To disable this, set it to <code>null</code>.
@type Function
*/
this.startCondition = null;
/**
Hook to be run when the drag finishes. This is passed the final coordinates of
the dragged object (two integers, x and y). To disables this, set it to <code>null</code>.
@type Function
*/
this.endHook = null;
}
/**
Gets an event in a cross-browser manner.
@param {Event} e
@private
*/
Drag.prototype.fixE = function(e) {
if (typeof e == 'undefined') { e = window.event; }
if (typeof e.layerX == 'undefined') { e.layerX = e.offsetX; }
if (typeof e.layerY == 'undefined') { e.layerY = e.offsetY; }
return e;
};
/**
Initialises the Drag instance by telling it which object you want to be draggable, and what you want to drag it by.
@param {DOMElement} o The "handle" by which <code>oRoot</code> is dragged.
@param {DOMElement} oRoot The object which moves when <code>o</code> is dragged, or <code>o</code> if omitted.
*/
Drag.prototype.init = function(o, oRoot) {
var dragObj = this;
this.obj = o;
o.onmousedown = function(e) { dragObj.start.apply( dragObj, [e]); };
o.dragging = false;
o.popups_draggable = true;
o.hmode = true;
o.vmode = true;
o.root = oRoot && oRoot !== null ? oRoot : o ;
if (isNaN(parseInt(o.root.style.left, 10))) { o.root.style.left = "0px"; }
if (isNaN(parseInt(o.root.style.top, 10))) { o.root.style.top = "0px"; }
o.root.onthisStart = function(){};
o.root.onthisEnd = function(){};
o.root.onthis = function(){};
};
/**
Starts the drag.
@private
@param {Event} e
*/
Drag.prototype.start = function(e) {
var o = this.obj; // = this;
e = this.fixE(e);
if (this.startCondition && !this.startCondition(e)) { return; }
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10);
o.root.onthisStart(x, y);
o.lastMouseX = e.clientX;
o.lastMouseY = e.clientY;
var dragObj = this;
o.onmousemoveDefault = document.onmousemove;
o.dragging = true;
document.onmousemove = function(e) { dragObj.drag.apply( dragObj, [e] ); };
document.onmouseup = function(e) { dragObj.end.apply( dragObj, [e] ); };
return false;
};
/**
Does the drag.
@param {Event} e
@private
*/
Drag.prototype.drag = function(e) {
e = this.fixE(e);
var o = this.obj;
var ey = e.clientY;
var ex = e.clientX;
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10 );
var nx, ny;
nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));
this.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
this.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
this.obj.lastMouseX = ex;
this.obj.lastMouseY = ey;
this.obj.root.onthis(nx, ny);
return false;
};
/**
Ends the drag.
@private
*/
Drag.prototype.end = function() {
document.onmousemove=this.obj.onmousemoveDefault;
document.onmouseup = null;
this.obj.dragging = false;
if (this.endHook) {
this.endHook( parseInt(this.obj.root.style[this.obj.hmode ? "left" : "right"], 10),
parseInt(this.obj.root.style[this.obj.vmode ? "top" : "bottom"], 10));
}
};
// ENDFILE: domdrag.js
// STARTFILE: structures.js
//<NOLITE>
pg.structures.original={};
pg.structures.original.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle',
'popupData', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
pg.structures.original.popupRedirSpans=function () {
return ['popupRedir', 'popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'];
};
pg.structures.original.popupTitle=function (x) {
log ('defaultstructure.popupTitle');
if (!getValueOf('popupNavLinks')) {
return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
}
return '';
};
pg.structures.original.popupTopLinks=function (x) {
log ('defaultstructure.popupTopLinks');
if (getValueOf('popupNavLinks')) { return navLinksHTML(x.article, x.hint, x.params); }
return '';
};
pg.structures.original.popupImage=function(x) {
log ('original.popupImage, x.article='+x.article+', x.navpop.idNumber='+x.navpop.idNumber);
return imageHTML(x.article, x.navpop.idNumber);
};
pg.structures.original.popupRedirTitle=pg.structures.original.popupTitle;
pg.structures.original.popupRedirTopLinks=pg.structures.original.popupTopLinks;
function copyStructure(oldStructure, newStructure) {
pg.structures[newStructure]={};
for (var prop in pg.structures[oldStructure]) {
pg.structures[newStructure][prop]=pg.structures[oldStructure][prop];
}
}
copyStructure('original', 'nostalgia');
pg.structures.nostalgia.popupTopLinks=function(x) {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>';
str+='if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{'
+ editstr + '}'
var historystr='<<history|shortcut=h>>';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>';
str += 'if(admin){<br>}else{*}<<move|shortcut=m>>';
// admin links
str += 'if(admin){*<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>}';
return navlinkStringToHTML(str, x.article, x.params);
};
pg.structures.nostalgia.popupRedirTopLinks=pg.structures.nostalgia.popupTopLinks;
/** -- fancy -- **/
copyStructure('original', 'fancy');
pg.structures.fancy.popupTitle=function (x) {
return navlinkStringToHTML('<font size=+0><<mainlink>></font>',x.article,x.params);
};
pg.structures.fancy.popupTopLinks=function(x) {
var hist='<<history|shortcut=h|hist>>|<<lastEdit|shortcut=/|last>>if(mainspace_en){|<<editors|shortcut=E|eds>>}';
var watch='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
var move='<<move|shortcut=m|move>>';
return navlinkStringToHTML('if(talk){' +
'<<edit|shortcut=e>>|<<new|shortcut=+|+>>*' + hist + '*' +
'<<article|shortcut=a>>|<<editArticle|edit>>' + '*' + watch + '*' + move +
'}else{<<edit|shortcut=e>>*' + hist +
'*<<talk|shortcut=t|>>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>' +
'*' + watch + '*' + move+'}<br>', x.article, x.params);
};
pg.structures.fancy.popupOtherLinks=function(x) {
var admin='<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*<<undelete|undeleteShort>>|<<delete|shortcut=d|del>>';
var user='<<contribs|shortcut=c>>if(wikimedia){|<<count|shortcut=#|#>>}';
user+='if(ipuser){|<<arin>>}else{*<<email|shortcut=E|'+
popupString('email')+'>>}if(admin){*<<block|shortcut=b>>}';
var normal='<<whatLinksHere|shortcut=l|links here>>*<<relatedChanges|shortcut=r|related>>';
return navlinkStringToHTML('<br>if(user){' + user + '*}if(admin){'+admin+'if(user){<br>}else{*}}' + normal,
x.article, x.params);
};
pg.structures.fancy.popupRedirTitle=pg.structures.fancy.popupTitle;
pg.structures.fancy.popupRedirTopLinks=pg.structures.fancy.popupTopLinks;
pg.structures.fancy.popupRedirOtherLinks=pg.structures.fancy.popupOtherLinks;
/** -- fancy2 -- **/
// hack for [[User:MacGyverMagic]]
copyStructure('fancy', 'fancy2');
pg.structures.fancy2.popupTopLinks=function(x) { // hack out the <br> at the end and put one at the beginning
return '<br>'+pg.structures.fancy.popupTopLinks(x).replace(RegExp('<br>$','i'),'');
};
pg.structures.fancy2.popupLayout=function () { // move toplinks to after the title
return ['popupError', 'popupImage', 'popupTitle', 'popupData', 'popupTopLinks', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
/** -- menus -- **/
copyStructure('original', 'menus');
pg.structures.menus.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupData', 'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
function toggleSticky(uid) {
var popDiv=document.getElementById('navpopup_maindiv'+uid);
if (!popDiv) { return; }
if (!popDiv.navpopup.sticky) { popDiv.navpopup.stick(); }
else {
popDiv.navpopup.unstick();
popDiv.navpopup.hide();
}
}
pg.structures.menus.popupTopLinks = function (x, shorter) {
// FIXME maybe this stuff should be cached
var s=[];
var dropdiv='<div class="popup_drop">';
var enddiv='</div>';
var endspan='</span>';
var hist='<<history|shortcut=h>>';
if (!shorter) { hist = '<menurow>' + hist +
'|<<historyfeed|rss>>if(mainspace_en){|<<editors|shortcut=E>>}</menurow>'; }
var lastedit='<<lastEdit|shortcut=/|show last edit>>';
var jsHistory='<<lastContrib|last set of edits>><<sinceMe|changes since mine>>';
var linkshere='<<whatLinksHere|shortcut=l|what links here>>';
var related='<<relatedChanges|shortcut=r|related changes>>';
var search='<menurow><<search|shortcut=s>>if(wikimedia){|<<globalsearch|shortcut=g|global>>}' +
'|<<google|shortcut=G|web>></menurow>';
var watch='<menurow><<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>></menurow>';
var protect='<menurow><<unprotect|unprotectShort>>|' +
'<<protect|shortcut=p>>|<<protectlog|log>></menurow>';
var del='<menurow><<undelete|undeleteShort>>|<<delete|shortcut=d>>|' +
'<<deletelog|log>></menurow>';
var move='<<move|shortcut=m|move page>>';
var nullPurge='<menurow><<nullEdit|shortcut=n|null edit>>|<<purge|shortcut=P>></menurow>';
var viewOptions='<menurow><<view|shortcut=v>>|<<render|shortcut=S>>|<<raw>></menurow>';
var editRow='if(oldid){' +
'<menurow><<edit|shortcut=e>>|<<editOld|shortcut=e|this revision>></menurow>' +
'<menurow><<revert|shortcut=v>>|<<undo>></menurow>' + '}else{<<edit|shortcut=e>>}';
var markPatrolled='if(rcid){<<markpatrolled|mark patrolled>>}';
var newTopic='if(talk){<<new|shortcut=+|new topic>>}';
var protectDelete='if(admin){' + protect + del + '}';
if (getValueOf('popupActionsMenu')) {
s.push( '<<mainlink>>*' + dropdiv + menuTitle('actions'));
} else {
s.push( dropdiv + '<<mainlink>>');
}
s.push( '<menu>')
s.push( editRow + markPatrolled + newTopic + hist + lastedit )
if (!shorter) { s.push(jsHistory); }
s.push( move + linkshere + related)
if (!shorter) { s.push(nullPurge + search); }
if (!shorter) { s.push(viewOptions); }
s.push('<hr>' + watch + protectDelete);
s.push('<hr>' +
'if(talk){<<article|shortcut=a|view article>><<editArticle|edit article>>}' +
'else{<<talk|shortcut=t|talk page>><<editTalk|edit talk>>' +
'<<newTalk|shortcut=+|new topic>>}</menu>' + enddiv);
// user menu starts here
var email='<<email|shortcut=E|email user>>';
var contribs= 'if(wikimedia){<menurow>}<<contribs|shortcut=c|contributions>>if(wikimedia){</menurow>}' +
'if(admin){<menurow><<deletedContribs>></menurow>}';
s.push('if(user){*' + dropdiv + menuTitle('user'));
s.push('<menu>'); +
s.push('<menurow><<userPage|shortcut=u|user page>>|<<userSpace|space>></menurow>');
s.push('<<userTalk|shortcut=t|user talk>><<editUserTalk|edit user talk>>' +
'<<newUserTalk|shortcut=+|leave comment>>');
if(!shorter) { s.push( 'if(ipuser){<<arin>>}else{' + email + '}') }
else { s.push( 'if(ipuser){}else{' + email + '}') }
s.push('<hr>' + contribs + '<<userlog|shortcut=L|user log>>');
s.push('if(wikimedia){<<count|shortcut=#|edit counter>>}');
s.push('if(admin){<menurow><<unblock|unblockShort>>|<<block|shortcut=b|block user>></menurow>}');
s.push('<<blocklog|shortcut=B|block log>>' + getValueOf('popupExtraUserMenu'));
s.push('</menu>' + enddiv + '}');
// popups menu starts here
if (getValueOf('popupSetupMenu') && !x.navpop.hasPopupMenu /* FIXME: hack */) {
x.navpop.hasPopupMenu=true;
s.push('*' + dropdiv + menuTitle('popupsMenu') + '<menu>');
s.push('<<togglePreviews|toggle previews>>');
s.push('<<purgePopups|reset>>');
s.push('<<disablePopups|disable>>');
s.push('</menu>'+enddiv);
}
return navlinkStringToHTML(s.join(''), x.article, x.params);
};
function menuTitle(s) {
return '<a href="#" noPopup=1>' + popupString(s) + '</a>';
}
pg.structures.menus.popupRedirTitle=pg.structures.menus.popupTitle;
pg.structures.menus.popupRedirTopLinks=pg.structures.menus.popupTopLinks;
copyStructure('menus', 'shortmenus');
pg.structures.shortmenus.popupTopLinks=function(x) {
return pg.structures.menus.popupTopLinks(x,true);
};
pg.structures.shortmenus.popupRedirTopLinks=pg.structures.shortmenus.popupTopLinks;
copyStructure('shortmenus', 'dabshortmenus');
pg.structures.dabshortmenus.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupData', 'popupMiscTools', ['popupRedlink'], 'popupFixDab',
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview'];
};
copyStructure('menus', 'dabmenus');
pg.structures.dabmenus.popupLayout=pg.structures.dabshortmenus.popupLayout;
//</NOLITE>
pg.structures.lite={};
pg.structures.lite.popupLayout=function () {
return ['popupTitle', 'popupPreview' ];
};
pg.structures.lite.popupTitle=function (x) {
log (x.article + ': structures.lite.popupTitle');
//return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
return '<div><span class="popup_mainlink"><b>' + x.article.toString() + '</b></span></div>';
};
// ENDFILE: structures.js
// STARTFILE: autoedit.js
//<NOLITE>
function getParamValue(paramName, h) {
if (typeof h == 'undefined' ) { h = document.location.href; }
var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
var m=cmdRe.exec(h);
if (m) {
try {
return decodeURIComponent(m[1]);
} catch (someError) {}
}
return null;
}
function substitute(data,cmdBody) {
// alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags);
var fromRe=RegExp(cmdBody.from, cmdBody.flags);
return data.replace(fromRe, cmdBody.to);
}
function execCmds(data, cmdList) {
for (var i=0; i<cmdList.length; ++i) {
data=cmdList[i].action(data, cmdList[i]);
}
return data;
}
function parseCmd(str) {
// returns a list of commands
if (!str.length) { return []; }
var p=false;
switch (str.charAt(0)) {
case 's':
p=parseSubstitute(str);
break;
default:
return false;
}
if (p) { return [p].concat(parseCmd(p.remainder)); }
return false;
}
function unEscape(str, sep) {
return str.split('\\\\').join('\\').split('\\'+sep).join(sep).split('\\n').join('\n');
}
function parseSubstitute(str) {
// takes a string like s/a/b/flags;othercmds and parses it
var from,to,flags,tmp;
if (str.length<4) { return false; }
var sep=str.charAt(1);
str=str.substring(2);
tmp=skipOver(str,sep);
if (tmp) { from=tmp.segment; str=tmp.remainder; }
else { return false; }
tmp=skipOver(str,sep);
if (tmp) { to=tmp.segment; str=tmp.remainder; }
else { return false; }
flags='';
if (str.length) {
tmp=skipOver(str,';') || skipToEnd(str, ';');
if (tmp) {flags=tmp.segment; str=tmp.remainder; }
}
return {action: substitute, from: from, to: to, flags: flags, remainder: str};
}
function skipOver(str,sep) {
var endSegment=findNext(str,sep);
if (endSegment<0) { return false; }
var segment=unEscape(str.substring(0,endSegment), sep);
return {segment: segment, remainder: str.substring(endSegment+1)};
}
function skipToEnd(str,sep) {
return {segment: str, remainder: ''};
}
function findNext(str, ch) {
for (var i=0; i<str.length; ++i) {
if (str.charAt(i)=='\\') { i+=2; }
if (str.charAt(i)==ch) { return i; }
}
return -1;
}
function setCheckbox(param, box) {
var val=getParamValue(param);
if (val!==null) {
switch (val) {
case '1': case 'yes': case 'true':
box.checked=true;
break;
case '0': case 'no': case 'false':
box.checked=false;
}
}
}
function autoEdit() {
if (!setupPopups.completed) { setupPopups(); }
if (!document.editform || !window.wgEnableAPI || !wgEnableAPI ) { return false; }
if (window.autoEdit.alreadyRan) { return false; }
window.autoEdit.alreadyRan=true;
var cmdString=getParamValue('autoedit');
if (cmdString) {
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
var cmdList=parseCmd(cmdString);
var input=editbox.value;
var output=execCmds(input, cmdList);
editbox.value=output;
// wikEd user script compatibility
if (typeof(wikEdUseWikEd) != 'undefined') {
if (wikEdUseWikEd == true) {
WikEdUpdateFrame();
}
}
}
setCheckbox('autominor', document.editform.wpMinoredit);
setCheckbox('autowatch', document.editform.wpWatchthis);
var rvid = getParamValue('autorv');
if (rvid) {
var url=pg.wiki.apiwikibase + '?action=query&format=json&prop=revisions&revids='+rvid;
startDownload(url, null, autoEdit2);
} else { autoEdit2(); }
}
function autoEdit2(d) {
var summary=getParamValue('autosummary');
var summaryprompt=getParamValue('autosummaryprompt');
var summarynotice='';
if (d && d.data && getParamValue('autorv')) {
var s = getRvSummary(summary, d.data);
if (s===false) {
summaryprompt=true;
summarynotice=popupString('Failed to get revision information, please edit manually.\n\n');
summary = simplePrintf(summary, [getParamValue('autorv'), '(unknown)', '(unknown)']);
} else { summary = s; }
}
if (summaryprompt) {
var txt= summarynotice +
popupString('Enter a non-empty edit summary or press cancel to abort');
var response=prompt(txt, summary);
if (response) { summary=response; }
else { return; }
}
if (summary) { document.editform.wpSummary.value=summary; }
// Attempt to avoid possible premature clicking of the save button
// (maybe delays in updates to the DOM are to blame?? or a red herring)
setTimeout(autoEdit3, 100);
}
function autoClickToken() {
return document.cookie.substr(document.cookie.indexOf("session=")+8,4);
}
function autoEdit3() {
if( getParamValue('actoken') != autoClickToken()) return;
var btn=getParamValue('autoclick');
if (btn) {
if (document.editform && document.editform[btn]) {
var button=document.editform[btn];
var msg=tprintf('The %s button has been automatically clicked. Please wait for the next page to load.',
[ button.value ]);
bannerMessage(msg);
document.title='('+document.title+')';
button.click();
} else {
alert(tprintf('Could not find button %s. Please check the settings in your javascript file.',
[ btn ]));
}
}
}
function bannerMessage(s) {
var headings=document.getElementsByTagName('h1');
if (headings) {
var div=document.createElement('div');
div.innerHTML='<font size=+1><b>' + s + '</b></font>';
headings[0].parentNode.insertBefore(div, headings[0]);
}
}
function getRvSummary(template, json) {
try {
var o=getJsObj(json);
var edit = anyChild(o.query.pages).revisions[0];
} catch (badness) {return false;}
var timestamp = edit.timestamp.split(/[A-Z]/g).join(' ').replace(/^ *| *$/g, '');
return simplePrintf(template, [edit.revid, timestamp, edit.user]);
}
//</NOLITE>
// ENDFILE: autoedit.js
// STARTFILE: downloader.js
/**
@fileoverview
{@link Downloader}, a xmlhttprequest wrapper, and helper functions.
*/
/**
Creates a new Downloader
@constructor
@class The Downloader class. Create a new instance of this class to download stuff.
@param {String} url The url to download. This can be omitted and supplied later.
*/
function Downloader(url) {
// Source: http://jibbering.com/2002/4/httprequest.html
/** xmlhttprequest object which we're wrapping */
this.http = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation,
// we can cope with old IE versions.
// and security blocked creation of the objects.
try {
this.http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
this.http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
// this.http = false;
}
}
@end @*/
if (! this.http && typeof XMLHttpRequest!='undefined') { this.http = new XMLHttpRequest(); }
/**
The url to download
@type String
*/
this.url = url;
/**
A universally unique ID number
@type integer
*/
this.id=null;
/**
Modification date, to be culled from the incoming headers
@type Date
@private
*/
this.lastModified = null;
/**
What to do when the download completes successfully
@type Function
@private
*/
this.callbackFunction = null;
/**
What to do on failure
@type Function
@private
*/
this.onFailure = null;
/**
Flag set on <code>abort</code>
@type boolean
*/
this.aborted = false;
/**
HTTP method. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html for possibilities.
@type String
*/
this.method='GET';
/**
Async flag.
@type boolean
*/
this.async=true;
}
new Downloader();
/** Submits the http request. */
Downloader.prototype.send = function (x) {
if (!this.http) { return null; }
return this.http.send(x);
};
/** Aborts the download, setting the <code>aborted</code> field to true. */
Downloader.prototype.abort = function () {
if (!this.http) { return null; }
this.aborted=true;
return this.http.abort();
};
/** Returns the downloaded data. */
Downloader.prototype.getData = function () {if (!this.http) { return null; } return this.http.responseText;};
/** Prepares the download. */
Downloader.prototype.setTarget = function () {
if (!this.http) { return null; }
this.http.open(this.method, this.url, this.async);
};
/** Gets the state of the download. */
Downloader.prototype.getReadyState=function () {if (!this.http) { return null; } return this.http.readyState;};
pg.misc.downloadsInProgress = { };
/** Starts the download.
Note that setTarget {@link Downloader#setTarget} must be run first
*/
Downloader.prototype.start=function () {
if (!this.http) { return; }
pg.misc.downloadsInProgress[this.id] = this;
this.http.send(null);
};
/** Gets the 'Last-Modified' date from the download headers.
Should be run after the download completes.
Returns <code>null</code> on failure.
@return {Date}
*/
Downloader.prototype.getLastModifiedDate=function () {
if(!this.http) { return null; }
var lastmod=null;
try {
lastmod=this.http.getResponseHeader('Last-Modified');
} catch (err) {}
if (lastmod) { return new Date(lastmod); }
return null;
};
/** Sets the callback function.
@param {Function} f callback function, called as <code>f(this)</code> on success
*/
Downloader.prototype.setCallback = function (f) {
if(!this.http) { return; }
this.http.onreadystatechange = f;
};
Downloader.prototype.getStatus = function() { if (!this.http) { return null; } return this.http.status; };
//////////////////////////////////////////////////
// helper functions
/** Creates a new {@link Downloader} and prepares it for action.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function newDownload(url, id, callback, onfailure) {
var d=new Downloader(url);
if (!d.http) { return 'ohdear'; }
d.id=id;
d.setTarget();
if (!onfailure) {
onfailure=2;
}
var f = function () {
if (d.getReadyState() == 4) {
delete pg.misc.downloadsInProgress[this.id];
try {
if ( d.getStatus() == 200 ) {
d.data=d.getData();
d.lastModified=d.getLastModifiedDate();
callback(d);
} else if (typeof onfailure == typeof 1) {
if (onfailure > 0) {
// retry
newDownload(url, id, callback, onfailure - 1);
}
} else if (typeof onfailure == 'function') {
onfailure(d,url,id,callback);
}
} catch (somerr) { /* ignore it */ }
}
};
d.setCallback(f);
return d;
}
/** Simulates a download from cached data.
The supplied data is put into a {@link Downloader} as if it had downloaded it.
@param {String} url The url.
@param {integer} id The ID.
@param {Function} callback The callback, which is invoked immediately as <code>callback(d)</code>,
where <code>d</code> is the new {@link Downloader}.
@param {String} data The (cached) data.
@param {Date} lastModified The (cached) last modified date.
*/
function fakeDownload(url, id, callback, data, lastModified, owner) {
var d=newDownload(url,callback);
d.owner=owner;
d.id=id; d.data=data;
d.lastModified=lastModified;
return callback(d);
}
/**
Starts a download.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function startDownload(url, id, callback) {
var d=newDownload(url, id, callback);
if (typeof d == typeof '' ) { return d; }
d.start();
return d;
}
/**
Aborts all downloads which have been started.
*/
function abortAllDownloads() {
for ( var x in pg.misc.downloadsInProgress ) {
try {
pg.misc.downloadsInProgress[x].aborted=true;
pg.misc.downloadsInProgress[x].abort();
delete pg.misc.downloadsInProgress[x];
} catch (e) { }
}
}
// ENDFILE: downloader.js
// STARTFILE: livepreview.js
// TODO: location is often not correct (eg relative links in previews)
/**
* InstaView - a Mediawiki to HTML converter in JavaScript
* Version 0.6.1
* Copyright (C) Pedro Fayolle 2005-2006
* http://en.wikipedia.org/wiki/User:Pilaf
* Distributed under the BSD license
*
* Changelog:
*
* 0.6.1
* - Fixed problem caused by \r characters
* - Improved inline formatting parser
*
* 0.6
* - Changed name to InstaView
* - Some major code reorganizations and factored out some common functions
* - Handled conversion of relative links (i.e. [[/foo]])
* - Fixed misrendering of adjacent definition list items
* - Fixed bug in table headings handling
* - Changed date format in signatures to reflect Mediawiki's
* - Fixed handling of [[:Image:...]]
* - Updated MD5 function (hopefully it will work with UTF-8)
* - Fixed bug in handling of links inside images
*
* To do:
* - Better support for <math>
* - Full support for <nowiki>
* - Parser-based (as opposed to RegExp-based) inline wikicode handling (make it one-pass and bullet-proof)
* - Support for templates (through AJAX)
* - Support for coloured links (AJAX)
*/
var Insta = {}
function setupLivePreview() {
// options
Insta.conf =
{
baseUrl: '',
user: {},
wiki: {
lang: pg.wiki.lang,
interwiki: pg.wiki.interwiki,
default_thumb_width: 180
},
paths: {
articles: pg.wiki.articlePath + '/',
// Only used for Insta previews with images. (not in popups)
math: '/math/',
images: 'http://upload.wikimedia.org/wikipedia/en/', // FIXME ( window.getImageUrlStart ? getImageUrlStart(pg.wiki.hostname) : ''),
images_fallback: 'http://upload.wikimedia.org/wikipedia/commons/',
magnify_icon: 'skins/common/images/magnify-clip.png'
},
locale: {
user: pg.ns.user,
image: pg.ns.image,
category: pg.ns.category,
// shouldn't be used in popup previews, i think
months: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
}
}
// options with default values or backreferences
with (Insta.conf) {
user.name = user.name || 'Wikipedian'
user.signature = '[['+locale.user+':'+user.name+'|'+user.name+']]'
//paths.images = 'http://upload.wikimedia.org/wikipedia/' + wiki.lang + '/'
}
// define constants
Insta.BLOCK_IMAGE = new RegExp('^\\[\\[(?:File|Image|'+Insta.conf.locale.image+
'):.*?\\|.*?(?:frame|thumbnail|thumb|none|right|left|center)', 'i');
}
Insta.dump = function(from, to)
{
if (typeof from == 'string') from = document.getElementById(from)
if (typeof to == 'string') to = document.getElementById(to)
to.innerHTML = this.convert(from.value)
}
Insta.convert = function(wiki)
{
var ll = (typeof wiki == 'string')? wiki.replace(/\r/g,'').split(/\n/): wiki, // lines of wikicode
o='', // output
p=0, // para flag
$r // result of passing a regexp to $()
// some shorthands
function remain() { return ll.length }
function sh() { return ll.shift() } // shift
function ps(s) { o+=s } // push
function f() // similar to C's printf, uses ? as placeholders, ?? to escape question marks
{
var i=1,a=arguments,f=a[0],o='',c,p
for (;i<a.length; i++) if ((p=f.indexOf('?'))+1) {
// allow character escaping
i -= c=f.charAt(p+1)=='?'?1:0
o += f.substring(0,p)+(c?'?':a[i])
f=f.substr(p+1+c)
} else break;
return o+f
}
function html_entities(s) { return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">") }
function max(a,b) { return (a>b)?a:b }
function min(a,b) { return (a<b)?a:b }
// return the first non matching character position between two strings
function str_imatch(a, b)
{
for (var i=0, l=min(a.length, b.length); i<l; i++) if (a.charAt(i)!=b.charAt(i)) break
return i
}
// compare current line against a string or regexp
// if passed a string it will compare only the first string.length characters
// if passed a regexp the result is stored in $r
function $(c) { return (typeof c == 'string') ? (ll[0].substr(0,c.length)==c) : ($r = ll[0].match(c)) }
function $$(c) { return ll[0]==c } // compare current line against a string
function _(p) { return ll[0].charAt(p) } // return char at pos p
function endl(s) { ps(s); sh() }
function parse_list()
{
var prev='';
while (remain() && $(/^([*#:;]+)(.*)$/)) {
var l_match = $r
sh()
var ipos = str_imatch(prev, l_match[1])
// close uncontinued lists
for (var i=prev.length-1; i >= ipos; i--) {
var pi = prev.charAt(i)
if (pi=='*') ps('</ul>')
else if (pi=='#') ps('</ol>')
// close a dl only if the new item is not a dl item (:, ; or empty)
else switch (l_match[1].charAt(i)) { case'':case'*':case'#': ps('</dl>') }
}
// open new lists
for (var i=ipos; i<l_match[1].length; i++) {
var li = l_match[1].charAt(i)
if (li=='*') ps('<ul>')
else if (li=='#') ps('<ol>')
// open a new dl only if the prev item is not a dl item (:, ; or empty)
else switch(prev.charAt(i)) { case'':case'*':case'#': ps('<dl>') }
}
switch (l_match[1].charAt(l_match[1].length-1)) {
case '*': case '#':
ps('<li>' + parse_inline_nowiki(l_match[2])); break
case ';':
ps('<dt>')
var dt_match
// handle ;dt :dd format
if (dt_match = l_match[2].match(/(.*?)(:.*?)$/)) {
ps(parse_inline_nowiki(dt_match[1]))
ll.unshift(dt_match[2])
} else ps(parse_inline_nowiki(l_match[2]))
break
case ':':
ps('<dd>' + parse_inline_nowiki(l_match[2]))
}
prev=l_match[1]
}
// close remaining lists
for (var i=prev.length-1; i>=0; i--)
ps(f('</?>', (prev.charAt(i)=='*')? 'ul': ((prev.charAt(i)=='#')? 'ol': 'dl')))
}
function parse_table()
{
endl(f('<table?>', $(/^\{\|( .*)$/)? $r[1]: ''))
for (;remain();) if ($('|')) switch (_(1)) {
case '}': endl('</table>'); return
case '-': endl(f('<tr ?>', $(/\|-*(.*)/)[1])); break
default: parse_table_data()
}
else if ($('!')) parse_table_data()
else sh()
}
function parse_table_data()
{
var td_line, match_i
// 1: "|+", '|' or '+'
// 2: ??
// 3: attributes ??
// TODO: finish commenting this regexp
var td_match = sh().match(/^(\|\+|\||!)((?:([^[|]*?)\|(?!\|))?(.*))$/)
if (td_match[1] == '|+') ps('<caption');
else ps('<t' + ((td_match[1]=='|')?'d':'h'))
if (typeof td_match[3] != 'undefined') {
ps(' ' + td_match[3])
match_i = 4
} else match_i = 2
ps('>')
if (td_match[1] != '|+') {
// use || or !! as a cell separator depending on context
// NOTE: when split() is passed a regexp make sure to use non-capturing brackets
td_line = td_match[match_i].split((td_match[1] == '|')? '||': /(?:\|\||!!)/)
ps(parse_inline_nowiki(td_line.shift()))
while (td_line.length) ll.unshift(td_match[1] + td_line.pop())
} else ps(td_match[match_i])
var tc = 0, td = []
for (;remain(); td.push(sh()))
if ($('|')) {
if (!tc) break // we're at the outer-most level (no nested tables), skip to td parse
else if (_(1)=='}') tc--
}
else if (!tc && $('!')) break
else if ($('{|')) tc++
if (td.length) ps(Insta.convert(td))
}
function parse_pre()
{
ps('<pre>')
do endl(parse_inline_nowiki(ll[0].substring(1)) + "\n"); while (remain() && $(' '))
ps('</pre>')
}
function parse_block_image()
{
ps(parse_image(sh()))
}
function parse_image(str)
{
//<NOLITE>
// get what's in between "[[Image:" and "]]"
var tag = str.substring(str.indexOf(':') + 1, str.length - 2);
var width;
var attr = [], filename, caption = '';
var thumb=0, frame=0, center=0;
var align='';
if (tag.match(/\|/)) {
// manage nested links
var nesting = 0;
var last_attr;
for (var i = tag.length-1; i > 0; i--) {
if (tag.charAt(i) == '|' && !nesting) {
last_attr = tag.substr(i+1);
tag = tag.substring(0, i);
break;
} else switch (tag.substr(i-1, 2)) {
case ']]':
nesting++;
i--;
break;
case '[[':
nesting--;
i--;
}
}
attr = tag.split(/\s*\|\s*/);
attr.push(last_attr);
filename = attr.shift();
var w_match;
for (;attr.length; attr.shift())
if (w_match = attr[0].match(/^(\d*)(?:[px]*\d*)?px$/)) width = w_match[1]
else switch(attr[0]) {
case 'thumb':
case 'thumbnail':
thumb=true;
case 'frame':
frame=true;
break;
case 'none':
case 'right':
case 'left':
center=false;
align=attr[0];
break;
case 'center':
center=true;
align='none';
break;
default:
if (attr.length == 1) caption = attr[0];
}
} else filename = tag;
var o='';
if (frame) {
if (align=='') align = 'right';
o += f("<div class='thumb t?'>", align);
if (thumb) {
if (!width) width = Insta.conf.wiki.default_thumb_width;
o += f("<div style='width:?px;'>?", 2+width*1, make_image(filename, caption, width)) +
f("<div class='thumbcaption'><div class='magnify' style='float:right'><a href='?' class='internal' title='Enlarge'><img src='?'></a></div>?</div>",
Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename,
Insta.conf.paths.magnify_icon,
parse_inline_nowiki(caption)
)
} else {
o += '<div>' + make_image(filename, caption) + f("<div class='thumbcaption'>?</div>", parse_inline_nowiki(caption))
}
o += '</div></div>';
} else if (align != '') {
o += f("<div class='float?'><span>?</span></div>", align, make_image(filename, caption, width));
} else {
return make_image(filename, caption, width);
}
return center? f("<div class='center'>?</div>", o): o;
//</NOLITE>
}
function parse_inline_nowiki(str)
{
var start, lastend=0
var substart=0, nestlev=0, open, close, subloop;
var html='';
while (-1 != (start = str.indexOf('<nowiki>', substart))) {
html += parse_inline_wiki(str.substring(lastend, start));
start += 8;
substart = start;
subloop = true;
do {
open = str.indexOf('<nowiki>', substart);
close = str.indexOf('</nowiki>', substart);
if (close<=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));
}
function make_image(filename, caption, width)
{
//<NOLITE>
// uppercase first letter in file name
filename = filename.charAt(0).toUpperCase() + filename.substr(1);
// replace spaces with underscores
filename = filename.replace(/ /g, '_');
caption = strip_inline_wiki(caption);
var md5 = hex_md5(filename);
var source = md5.charAt(0) + '/' + md5.substr(0,2) + '/' + filename;
if (width) width = "width='" + width + "px'";
var img = f("<img onerror=\"this.onerror=null;this.src='?'\" src='?' ? ?>", Insta.conf.paths.images_fallback + source, Insta.conf.paths.images + source, (caption!='')? "alt='" + caption + "'" : '', width);
return f("<a class='image' ? href='?'>?</a>", (caption!='')? "title='" + caption + "'" : '', Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename, img);
//</NOLITE>
}
function parse_inline_images(str)
{
//<NOLITE>
var start, substart=0, nestlev=0;
var loop, close, open, wiki, html;
while (-1 != (start=str.indexOf('[[', substart))) {
if(str.substr(start+2).match(RegExp('^(Image|File|' + Insta.conf.locale.image + '):','i'))) {
loop=true;
substart=start;
do {
substart+=2;
close=str.indexOf(']]',substart);
open=str.indexOf('[[',substart);
if (close<=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;
}
//</NOLITE>
return str;
}
// the output of this function doesn't respect the FILO structure of HTML
// but since most browsers can handle it I'll save myself the hassle
function parse_inline_formatting(str)
{
var em,st,i,li,o='';
while ((i=str.indexOf("''",li))+1) {
o += str.substring(li,i);
li=i+2;
if (str.charAt(i+2)=="'") {
li++;
st=!st;
o+=st?'<strong>':'</strong>';
} else {
em=!em;
o+=em?'<em>':'</em>';
}
}
return o+str.substr(li);
}
function parse_inline_wiki(str)
{
var aux_match;
str = parse_inline_images(str);
str = parse_inline_formatting(str);
// math
while (aux_match = str.match(/<(?:)math>(.*?)<\/math>/i)) {
var math_md5 = hex_md5(aux_match[1]);
str = str.replace(aux_match[0], f("<img src='?.png'>", Insta.conf.paths.math+math_md5));
}
// Build a Mediawiki-formatted date string
var date = new Date;
var minutes = date.getUTCMinutes();
if (minutes < 10) minutes = '0' + minutes;
var date = f("?:?, ? ? ? (UTC)", date.getUTCHours(), minutes, date.getUTCDate(), Insta.conf.locale.months[date.getUTCMonth()], date.getUTCFullYear());
// text formatting
return str.
// signatures
replace(/~{5}(?!~)/g, date).
replace(/~{4}(?!~)/g, Insta.conf.user.name+' '+date).
replace(/~{3}(?!~)/g, Insta.conf.user.name).
// [[:Category:...]], [[:Image:...]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|Image|File|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):[^|]*?)\\]\\](\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$1$2</a>").
// remove straight category and interwiki tags
replace(RegExp('\\[\\[(?:'+Insta.conf.locale.category+'|'+Insta.conf.wiki.interwiki+'):.*?\\]\\]','gi'),'').
// [[:Category:...|Links]], [[:Image:...|Links]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|Image|File|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):.*?)\\|([^\\]]+?)\\]\\](\\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$2$3</a>").
// [[/Relative links]]
replace(/\[\[(\/[^|]*?)\]\]/g, f("<a href='?$1'>$1</a>", Insta.conf.baseUrl)).
// [[/Replaced|Relative links]]
replace(/\[\[(\/.*?)\|(.+?)\]\]/g, f("<a href='?$1'>$2</a>", Insta.conf.baseUrl)).
// [[Common links]]
replace(/\[\[([^|]*?)\]\](\w*)/g, f("<a href='?$1'>$1$2</a>", Insta.conf.paths.articles)).
// [[Replaced|Links]]
replace(/\[\[(.*?)\|([^\]]+?)\]\](\w*)/g, f("<a href='?$1'>$2$3</a>", Insta.conf.paths.articles)).
// [[Stripped:Namespace|Namespace]]
replace(/\[\[([^\]]*?:)?(.*?)( *\(.*?\))?\|\]\]/g, f("<a href='?$1$2$3'>$2</a>", Insta.conf.paths.articles)).
// External links
replace(/\[(https?|news|ftp|mailto|gopher|irc):(\/*)([^\]]*?) (.*?)\]/g, "<a class='external' href='$1:$2$3'>$4</a>").
replace(/\[http:\/\/(.*?)\]/g, "<a class='external' href='http://$1'>[#]</a>").
replace(/\[(news|ftp|mailto|gopher|irc):(\/*)(.*?)\]/g, "<a class='external' href='$1:$2$3'>$1:$2$3</a>").
replace(/(^| )(https?|news|ftp|mailto|gopher|irc):(\/*)([^ $]*[^.,!?;: $])/g, "$1<a class='external' href='$2:$3$4'>$2:$3$4</a>").
replace('__NOTOC__','').
replace('__NOEDITSECTION__','');
}
/*
*/
function strip_inline_wiki(str)
{
return str
.replace(/\[\[[^\]]*\|(.*?)\]\]/g,'$1')
.replace(/\[\[(.*?)\]\]/g,'$1')
.replace(/''(.*?)''/g,'$1');
}
// begin parsing
for (;remain();) if ($(/^(={1,6})(.*)\1(.*)$/)) {
p=0
endl(f('<h?>?</h?>?', $r[1].length, parse_inline_nowiki($r[2]), $r[1].length, $r[3]))
} else if ($(/^[*#:;]/)) {
p=0
parse_list()
} else if ($(' ')) {
p=0
parse_pre()
} else if ($('{|')) {
p=0
parse_table()
} else if ($(/^----+$/)) {
p=0
endl('<hr>')
} else if ($(Insta.BLOCK_IMAGE)) {
p=0
parse_block_image()
} else {
// handle paragraphs
if ($$('')) {
if (p = (remain()>1 && ll[1]==(''))) endl('<p><br>')
} else {
if(!p) {
ps('<p>')
p=1
}
ps(parse_inline_nowiki(ll[0]) + ' ')
}
sh();
}
return o
};
window.wiki2html=function(txt,baseurl) {
Insta.conf.baseUrl=baseurl;
return Insta.convert(txt);
};
// ENDFILE: livepreview.js
// STARTFILE: pageinfo.js
//<NOLITE>
function popupFilterPageSize(data) {
return formatBytes(data.length);
}
function popupFilterCountLinks(data) {
var num=countLinks(data);
return String(num) + ' ' + ((num!=1)?popupString('wikiLinks'):popupString('wikiLink'));
}
function popupFilterCountImages(data) {
var num=countImages(data);
return String(num) + ' ' + ((num!=1)?popupString('images'):popupString('image'));
}
function popupFilterCountCategories(data) {
var num=countCategories(data);
return String(num) + ' ' + ((num!=1)?popupString('categories'):popupString('category'));
}
function popupFilterLastModified(data,download) {
var lastmod=download.lastModified;
var now=new Date();
var age=now-lastmod;
if (lastmod && getValueOf('popupLastModified')) {
return (tprintf('%s old', [formatAge(age)])).replace(RegExp(' ','g'), ' ');
}
return '';
}
function formatAge(age) {
// coerce into a number
var a=0+age, aa=a;
var seclen = 1000;
var minlen = 60*seclen;
var hourlen = 60*minlen;
var daylen = 24*hourlen;
var weeklen = 7*daylen;
var numweeks = (a-a%weeklen)/weeklen; a = a-numweeks*weeklen; var sweeks = addunit(numweeks, 'week');
var numdays = (a-a%daylen)/daylen; a = a-numdays*daylen; var sdays = addunit(numdays, 'day');
var numhours = (a-a%hourlen)/hourlen; a = a-numhours*hourlen; var shours = addunit(numhours,'hour');
var nummins = (a-a%minlen)/minlen; a = a-nummins*minlen; var smins = addunit(nummins, 'minute');
var numsecs = (a-a%seclen)/seclen; a = a-numsecs*seclen; var ssecs = addunit(numsecs, 'second');
if (aa > 4*weeklen) { return sweeks; }
if (aa > weeklen) { return sweeks + ' ' + sdays; }
if (aa > daylen) { return sdays + ' ' + shours; }
if (aa > 6*hourlen) { return shours; }
if (aa > hourlen) { return shours + ' ' + smins; }
if (aa > 10*minlen) { return smins; }
if (aa > minlen) { return smins + ' ' + ssecs; }
return ssecs;
}
function addunit(num,str) { return '' + num + ' ' + ((num!=1) ? popupString(str+'s') : popupString(str)) ;}
function runPopupFilters(list, data, download) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i] && typeof list[i] == 'function') {
var s=list[i](data, download, download.owner.article);
if (s) { ret.push(s); }
}
}
return ret;
}
function getPageInfo(data, download) {
if (!data || data.length === 0) { return popupString('Empty page'); }
var popupFilters=getValueOf('popupFilters') || [];
var extraPopupFilters = getValueOf('extraPopupFilters') || [];
var pageInfoArray = runPopupFilters(popupFilters.concat(extraPopupFilters), data, download);
var pageInfo=pageInfoArray.join(', ');
if (pageInfo !== '' ) { pageInfo = upcaseFirst(pageInfo); }
return pageInfo;
}
// this could be improved!
function countLinks(wikiText) { return wikiText.split('[[').length - 1; }
// if N = # matches, n = # brackets, then
// String.parenSplit(regex) intersperses the N+1 split elements
// with Nn other elements. So total length is
// L= N+1 + Nn = N(n+1)+1. So N=(L-1)/(n+1).
function countImages(wikiText) {
return (wikiText.parenSplit(pg.re.image).length - 1) / (pg.re.imageBracketCount + 1);
}
function countCategories(wikiText) {
return (wikiText.parenSplit(pg.re.category).length - 1) / (pg.re.categoryBracketCount + 1);
}
function popupFilterStubDetect(data, download, article) {
var counts=stubCount(data, article);
if (counts.real) { return popupString('stub'); }
if (counts.sect) { return popupString('section stub'); }
return '';
}
function popupFilterDisambigDetect(data, download, article) {
if (getValueOf('popupOnlyArticleDabStub') && article.namespace()) { return ''; }
return (isDisambig(data, article)) ? popupString('disambig') : '';
}
function formatBytes(num) {
return (num > 949) ? (Math.round(num/100)/10+popupString('kB')) : (num +' ' + popupString('bytes')) ;
}
//</NOLITE>
// ENDFILE: pageinfo.js
// STARTFILE: titles.js
/**
@fileoverview Defines the {@link Title} class, and associated crufty functions.
<code>Title</code> deals with article titles and their various
forms. {@link Stringwrapper} is the parent class of
<code>Title</code>, which exists simply to make things a little
neater.
*/
/**
Creates a new Stringwrapper.
@constructor
@class the Stringwrapper class. This base class is not really
useful on its own; it just wraps various common string operations.
*/
function Stringwrapper() {
/**
Wrapper for this.toString().indexOf()
@param {String} x
@type integer
*/
this.indexOf=function(x){return this.toString().indexOf(x);};
/**
Returns this.value.
@type String
*/
this.toString=function(){return this.value;};
/**
Wrapper for {@link String#parenSplit} applied to this.toString()
@param {RegExp} x
@type Array
*/
this.parenSplit=function(x){return this.toString().parenSplit(x);};
/**
Wrapper for this.toString().substring()
@param {String} x
@param {String} y (optional)
@type String
*/
this.substring=function(x,y){
if (typeof y=='undefined') { return this.toString().substring(x); }
return this.toString().substring(x,y);
};
/**
Wrapper for this.toString().split()
@param {String} x
@type Array
*/
this.split=function(x){return this.toString().split(x);};
/**
Wrapper for this.toString().replace()
@param {String} x
@param {String} y
@type String
*/
this.replace=function(x,y){ return this.toString().replace(x,y); };
}
/**
Creates a new <code>Title</code>.
@constructor
@class The Title class. Holds article titles and converts them into
various forms. Also deals with anchors, by which we mean the bits
of the article URL after a # character, representing locations
within an article.
@param {String} value The initial value to assign to the
article. This must be the canonical title (see {@link
Title#value}. Omit this in the constructor and use another function
to set the title if this is unavailable.
*/
function Title(val) {
/**
The canonical article title. This must be in UTF-8 with no
entities, escaping or nasties. Also, underscores should be
replaced with spaces.
@type String
@private
*/
this.value=null;
/**
The canonical form of the anchor. This should be exactly as
it appears in the URL, i.e. with the .C3.0A bits in.
@type String
*/
this.anchor='';
this.setUtf(val);
}
Title.prototype=new Stringwrapper();
/**
Returns the canonical representation of the article title, optionally without anchor.
@param {boolean} omitAnchor
@fixme Decide specs for anchor
@return String The article title and the anchor.
*/
Title.prototype.toString=function(omitAnchor) {
return this.value + ( (!omitAnchor && this.anchor) ? '#' + this.anchorString() : '' );
};
Title.prototype.anchorString=function() {
if (!this.anchor) { return ''; }
var split=this.anchor.parenSplit(/((?:[.][0-9A-F]{2})+)/);
var len=split.length;
for (var j=1; j<len; j+=2) {
// FIXME s/decodeURI/decodeURIComponent/g ?
split[j]=decodeURIComponent(split[j].split('.').join('%')).split('_').join(' ');
}
return split.join('');
};
Title.prototype.urlAnchor=function() {
var split=this.anchor.parenSplit('/((?:[%][0-9A-F]{2})+)/');
var len=split.length;
for (var j=1; j<len; j+=2) {
split[j]=split[j].split('%').join('.');
}
return split.join('');
};
Title.prototype.anchorFromUtf=function(str) {
this.anchor=encodeURIComponent(str.split(' ').join('_'))
.split('%3A').join(':').split("'").join('%27').split('%').join('.');
};
Title.fromURL=function(h) {
return new Title().fromURL(h);
};
Title.prototype.fromURL=function(h) {
if (typeof h != 'string') {
this.value=null;
return this;
}
// NOTE : playing with decodeURI, encodeURI, escape, unescape,
// we seem to be able to replicate the IE borked encoding
// IE doesn't do this new-fangled utf-8 thing.
// and it's worse than that.
// IE seems to treat the query string differently to the rest of the url
// the query is treated as bona-fide utf8, but the first bit of the url is pissed around with
// we fix up & for all browsers, just in case.
var splitted=h.split('?');
splitted[0]=splitted[0].split('&').join('%26');
if (pg.flag.linksLikeIE6) {
splitted[0]=encodeURI(decode_utf8(splitted[0]));
}
h=splitted.join('?');
var contribs=pg.re.contribs.exec(h);
if (contribs !== null) {
if (contribs[1]=='title=') { contribs[3]=contribs[3].split('+').join(' '); }
var u=new Title(contribs[3]);
this.setUtf(this.decodeNasties(pg.ns.user + ':' + u.stripNamespace()));
return this;
}
var email=pg.re.email.exec(h);
if (email !== null) {
this.setUtf(this.decodeNasties(pg.ns.user + ':' + new Title(email[3]).stripNamespace()));
return this;
}
var backlinks=pg.re.backlinks.exec(h);
if (backlinks) {
this.setUtf(this.decodeNasties(new Title(backlinks[3])));
return this;
}
// no more special cases to check --
// hopefully it's not a disguised user-related or specially treated special page
var m=pg.re.main.exec(h);
if(m===null) { this.value=null; }
else {
var fromBotInterface = /[?](.+[&])?title=/.test(h);
if (fromBotInterface) {
m[2]=m[2].split('+').join('_');
}
var extracted = m[2] + (m[3] ? '#' + m[3] : '');
if (pg.flag.isSafari && /%25[0-9A-Fa-f]{2}/.test(extracted)) {
// Fix Safari issue
// Safari sometimes encodes % as %25 in UTF-8 encoded strings like %E5%A3 -> %25E5%25A3.
this.setUtf(decodeURIComponent(unescape(extracted)));
} else {
this.setUtf(this.decodeNasties(extracted));
}
}
return this;
};
Title.prototype.decodeNasties=function(txt) {
var ret= this.decodeEscapes(decodeURI(txt));
ret = ret.replace(/[_ ]*$/, '');
return ret;
};
Title.prototype.decodeEscapes=function(txt) {
var split=txt.parenSplit(/((?:[%][0-9A-Fa-f]{2})+)/);
var len=split.length;
for (var i=1; i<len; i=i+2) {
// FIXME is decodeURIComponent better?
split[i]=unescape(split[i]);
}
return split.join('');
};
Title.fromAnchor=function(a) {
return new Title().fromAnchor(a);
};
Title.prototype.fromAnchor=function(a) {
if (!a) { this.value=null; return this; }
return this.fromURL(a.href);
};
Title.fromWikiText=function(txt) {
return new Title().fromWikiText(txt);
};
Title.prototype.fromWikiText=function(txt) {
// FIXME - testing needed
if (!pg.flag.linksLikeIE6) { txt=myDecodeURI(txt); }
this.setUtf(txt);
return this;
};
Title.prototype.hintValue=function(){
if(!this.value) { return ''; }
return safeDecodeURI(this.value);
};
//<NOLITE>
Title.prototype.toUserName=function(withNs) {
if (this.namespace() != pg.ns.user && this.namespace() != pg.ns.usertalk) {
this.value=null;
return;
}
this.value = (withNs ? pg.ns.user + ':' : '') + this.stripNamespace().split('/')[0];
};
Title.prototype.userName=function(withNs) {
var t=(new Title(this.value));
t.toUserName(withNs);
if (t.value) { return t; }
return null;
};
Title.prototype.toTalkPage=function() {
// convert article to a talk page, or if we can't return null
// or, in other words, return null if this ALREADY IS a talk page
// and return the corresponding talk page otherwise
if (this.value===null) { return null; }
var talkRegex=namespaceListToRegex(pg.ns.talkList);
if (talkRegex.exec(this.value)) { this.value=null; return null;}
var nsReg=namespaceListToRegex(pg.ns.withTalkList);
var splitted=this.value.parenSplit(nsReg);
if (splitted.length<2) {
this.value= (pg.ns.talkList[0]+':'+this.value).split(' ').join('_');
return this.value;
}
for (var i=0; i< pg.ns.withTalkList.length; ++i) {
if (splitted[1]==pg.ns.withTalkList[i]) {
splitted[1]=pg.ns.talkList[i];
this.value=splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return null;
};
//</NOLITE>
Title.prototype.namespace=function() {
var n=this.value.indexOf(':');
if (n<0) { return ''; }
var list=pg.ns.list;
for (var i=0; i<list.length; ++i) {
if (upcaseFirst(list[i]) == this.value.substring(0,n)) { return list[i]; }
}
return '';
};
//<NOLITE>
Title.prototype.talkPage=function() {
var t=new Title(this.value);
t.toTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.isTalkPage=function() {
if (this.talkPage()===null) { return true; }
return false;
};
Title.prototype.toArticleFromTalkPage=function() {
var talkRegex=namespaceListToRegex(pg.ns.talkList);
var splitted=this.value.parenSplit(talkRegex);
if (splitted.length < 2 || splitted[0].length > 0) { this.value=null; return null; }
if (splitted[1]==pg.ns.talkList[0]) {
splitted[1]='';
this.value=splitted.join(':').substring(2).split(' ').join('_');
return this.value;
}
for (var i=1; i< pg.ns.talkList.length; ++i) {
if (splitted[1]==pg.ns.talkList[i] || splitted[1]==pg.ns.talkList[i].split(' ').join('_')) {
splitted[1]=pg.ns.withTalkList[i];
this.value= splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return this.value;
};
Title.prototype.articleFromTalkPage=function() {
var t=new Title(this.value);
t.toArticleFromTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.articleFromTalkOrArticle=function() {
var t=new Title(this.value);
if ( t.toArticleFromTalkPage() ) { return t; }
return this;
};
Title.prototype.isIpUser=function() {
return pg.re.ipUser.test(this.userName());
};
//</NOLITE>
Title.prototype.stripNamespace=function(){ // returns a string, not a Title
var n=this.value.indexOf(':');
if (n<0) { return this.value; }
var list=pg.ns.list;
for (var i=0; i<list.length; ++i) {
if (upcaseFirst(list[i]) == this.value.substring(0,n)) { return this.value.substring(n+1); }
}
return this.value;
};
Title.prototype.setUtf=function(value){
if (!value) { this.value=''; return; }
var anch=value.indexOf('#');
if(anch < 0) { this.value=value.split('_').join(' '); this.anchor=''; return; }
this.value=value.substring(0,anch).split('_').join(' ');
this.anchor=value.substring(anch+1);
this.ns=null; // wait until namespace() is called
};
Title.prototype.setUrl=function(urlfrag) {
var anch=urlfrag.indexOf('#');
this.value=safeDecodeURI(urlfrag.substring(0,anch));
this.anchor=value.substring(anch+1);
};
Title.prototype.append=function(x){
this.setUtf(this.value + x);
};
Title.prototype.urlString=function(x) {
x || ( x={} );
var v=this.toString(true);
if (!x.omitAnchor && this.anchor) { v+= '#' + this.urlAnchor(); }
if (!x.keepSpaces) { v=v.split(' ').join('_'); }
return encodeURI(v).split('&').join('%26').split('?').join('%3F').split('+').join('%2B');
};
Title.prototype.removeAnchor=function() {
return new Title(this.toString(true));
};
Title.prototype.toUrl=function() {
return pg.wiki.titlebase + this.urlString();
};
function paramValue(param, url) {
var s=url.parenSplit(RegExp('[?&]' + literalizeRegex(param) + '=([^?&]*)'));
if (!url) { return null; }
return s[1] || null;
}
function parseParams(url) {
var ret={};
if (url.indexOf('?')==-1) { return ret; }
var s=url.split('?').slice(1).join();
var t=s.split('&');
for (var i=0; i<t.length; ++i) {
var z=t[i].split('=');
z.push(null);
ret[z[0]]=z[1];
}
return ret;
}
// all sorts of stuff here
// FIXME almost everything needs to be rewritten
function oldidFromAnchor(a) { return paramValue('oldid', a.href); }
//function diffFromAnchor(a) { return paramValue('diff', a.href); }
function wikiMarkupToAddressFragment (str) { // for images
var ret = safeDecodeURI(str);
ret = ret.split(' ').join('_');
ret = encodeURI(ret);
return ret;
}
// (a) myDecodeURI (first standard decodeURI, then pg.re.urlNoPopup)
// (b) change spaces to underscores
// (c) encodeURI (just the straight one, no pg.re.urlNoPopup)
function myDecodeURI (str) {
var ret;
// FIXME decodeURIComponent??
try { ret=decodeURI(str.toString()); }
catch (summat) { return str; }
for (var i=0; i<pg.misc.decodeExtras.length; ++i) {
var from=pg.misc.decodeExtras[i].from;
var to=pg.misc.decodeExtras[i].to;
ret=ret.split(from).join(to);
}
return ret;
}
function safeDecodeURI(str) { var ret=myDecodeURI(str); return ret || str; }
///////////
// TESTS //
///////////
//<NOLITE>
function isIpUser(user) {return pg.re.ipUser.test(user);}
function isDisambig(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
return ! article.isTalkPage() && pg.re.disambig.test(data);
}
function stubCount(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
var sectStub=0;
var realStub=0;
if (pg.re.stub.test(data)) {
var s=data.parenSplit(pg.re.stub);
for (var i=1; i<s.length; i=i+2) {
if (s[i]) { ++sectStub; }
else { ++realStub; }
}
}
return { real: realStub, sect: sectStub };
}
function isValidImageName(str){ // extend as needed...
return ( str.indexOf('{') == -1 );
}
function isInStrippableNamespace(article) {
return ( findInArray( pg.ns.nonArticleList, article.namespace() ) > -1 );
}
function isInMainNamespace(article) { return !isInStrippableNamespace(article); }
function anchorContainsImage(a) {
// iterate over children of anchor a
// see if any are images
if (a===null) { return false; }
kids=a.childNodes;
for (var i=0; i<kids.length; ++i) { if (kids[i].nodeName=='IMG') { return true; } }
return false;
}
//</NOLITE>
function isPopupLink(a) {
// NB for performance reasons, TOC links generally return true
// they should be stripped out later
if (!markNopopupSpanLinks.done) { markNopopupSpanLinks(); }
if (a.inNopopupSpan || a.className=='sortheader') { return false; }
// FIXME is this faster inline?
if (a.onmousedown || a.getAttribute('nopopup')) { return false; }
var h=a.href;
if (!pg.re.basenames.test(h)) { return false; }
if ( !pg.re.urlNoPopup.test(h) ) { return true; }
return (
(pg.re.email.test(h) || pg.re.contribs.test(h) || pg.re.backlinks.test(h)) &&
h.indexOf('&limit=') == -1 );
}
function markNopopupSpanLinks() {
if( !getValueOf('popupOnlyArticleLinks'))
fixVectorMenuPopups();
var s=getElementsByClassName(document, '*', "nopopups")
for (var i=0; i<s.length; ++i) {
var as=s[i].getElementsByTagName('a');
for (var j=0; j<as.length; ++j) {
as[j].inNopopupSpan=true;
}
}
markNopopupSpanLinks.done=true;
}
function fixVectorMenuPopups() {
var vmenus = getElementsByClassName( document, 'div', 'vectorMenu');
for( i= 0; vmenus && i< vmenus.length; i++ ) {
var h5 = vmenus[i].getElementsByTagName('h5')[0];
if( h5) var a = h5.getElementsByTagName('a')[0];
if( a ) a.inNopopupSpan=true;
}
}
// ENDFILE: titles.js
// STARTFILE: cookies.js
//<NOLITE>
//////////////////////////////////////////////////
// Cookie handling
// from http://www.quirksmode.org/js/cookies.html
var Cookie= {
create: function(name,value,days)
{
var expires;
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}
else { expires = ""; }
document.cookie = name+"="+value+expires+"; path=/";
},
read: function(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') { c = c.substring(1,c.length); }
if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length,c.length); }
}
return null;
},
erase: function(name)
{
Cookie.create(name,"",-1);
}
};
//</NOLITE>
// ENDFILE: cookies.js
// STARTFILE: getpage.js
//////////////////////////////////////////////////
// Wiki-specific downloading
//
// Schematic for a getWiki call
//
// getWiki->-getPageWithCaching
// |
// false | true
// getPage<-[findPictureInCache]->-onComplete(a fake download)
// \.
// (async)->addPageToCache(download)->-onComplete(download)
/** @todo {document}
@param {Title} article
@param {Function} onComplete
@param {integer} oldid
@param {Navapopup} owner
*/
function getWiki(article, onComplete, oldid, owner) {
// set ctype=text/css to get around opera gzip bug
var url = pg.wiki.titlebase + article.removeAnchor().urlString() +
'&action=raw&ctype=text/css';
if (oldid || oldid===0 || oldid==='0') { url += '&oldid='+oldid; }
url += '&maxage=0&smaxage=0';
getPageWithCaching(url, onComplete, owner);
}
// check cache to see if page exists
function getPageWithCaching(url, onComplete, owner) {
log('getPageWithCaching, url='+url);
var i=findInPageCache(url);
if (i > -1) {
var d=fakeDownload(url, owner.idNumber, onComplete,
pg.cache.pages[i].data, pg.cache.pages[i].lastModified,
owner);
} else {
var d=getPage(url, onComplete, owner);
if (d && owner && owner.addDownload) {
owner.addDownload(d);
d.owner=owner;
}
}
}
function getPage(url, onComplete, owner) {
log('getPage');
var callback= function (d) { if (!d.aborted) {addPageToCache(d); onComplete(d);} };
return startDownload(url, owner.idNumber, callback);
}
function findInPageCache(url) {
for (var i=0; i<pg.cache.pages.length; ++i) {
if (url==pg.cache.pages[i].url) { return i; }
}
return -1;
}
function addPageToCache(download) {
log('addPageToCache '+download.url);
var page = {url: download.url, data: download.data, lastModified: download.lastModified};
return pg.cache.pages.push(page);
}
// ENDFILE: getpage.js
// STARTFILE: md5-2.2alpha.js
//<NOLITE>
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }
function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }
function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }
function hex_hmac_md5(k, d)
{ return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function b64_hmac_md5(k, d)
{ return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function any_hmac_md5(k, d, e)
{ return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
/*
* Calculate the MD5 of a raw string
*/
function rstr_md5(s)
{
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
}
/*
* Calculate the HMAC-MD5, of a key and some data (raw strings)
*/
function rstr_hmac_md5(key, data)
{
var bkey = rstr2binl(key);
if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
}
/*
* Convert a raw string to a hex string
*/
function rstr2hex(input)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var output = "";
var x;
for(var i = 0; i < input.length; i++)
{
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F)
+ hex_tab.charAt( x & 0x0F);
}
return output;
}
/*
* Convert a raw string to a base-64 string
*/
function rstr2b64(input)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var output = "";
var len = input.length;
for(var i = 0; i < len; i += 3)
{
var triplet = (input.charCodeAt(i) << 16)
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
| (i + 2 < len ? input.charCodeAt(i+2) : 0);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > input.length * 8) output += b64pad;
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
}
}
return output;
}
/*
* Convert a raw string to an arbitrary string encoding
*/
function rstr2any(input, encoding)
{
var divisor = encoding.length;
var remainders = Array();
var i, q, x, quotient;
/* Convert to an array of 16-bit big-endian values, forming the dividend */
var dividend = Array(input.length / 2);
for(i = 0; i < dividend.length; i++)
{
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
}
/*
* Repeatedly perform a long division. The binary array forms the dividend,
* the length of the encoding is the divisor. Once computed, the quotient
* forms the dividend for the next step. We stop when the dividend is zero.
* All remainders are stored for later use.
*/
while(dividend.length > 0)
{
quotient = Array();
x = 0;
for(i = 0; i < dividend.length; i++)
{
x = (x << 16) + dividend[i];
q = Math.floor(x / divisor);
x -= q * divisor;
if(quotient.length > 0 || q > 0)
quotient[quotient.length] = q;
}
remainders[remainders.length] = x;
dividend = quotient;
}
/* Convert the remainders to the output string */
var output = "";
for(i = remainders.length - 1; i >= 0; i--)
output += encoding.charAt(remainders[i]);
return output;
}
/*
* Encode a string as utf-8.
* For efficiency, this assumes the input is valid utf-16.
*/
function str2rstr_utf8(input)
{
var output = "";
var i = -1;
var x, y;
while(++i < input.length)
{
/* Decode utf-16 surrogate pairs */
x = input.charCodeAt(i);
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
{
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++;
}
/* Encode output as utf-8 */
if(x <= 0x7F)
output += String.fromCharCode(x);
else if(x <= 0x7FF)
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
0x80 | ( x & 0x3F));
else if(x <= 0xFFFF)
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
else if(x <= 0x1FFFFF)
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
0x80 | ((x >>> 12) & 0x3F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
}
return output;
}
/*
* Encode a string as utf-16
*/
function str2rstr_utf16le(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
(input.charCodeAt(i) >>> 8) & 0xFF);
return output;
}
function str2rstr_utf16be(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
input.charCodeAt(i) & 0xFF);
return output;
}
/*
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*/
function rstr2binl(input)
{
var output = Array(input.length >> 2);
for(var i = 0; i < output.length; i++)
output[i] = 0;
for(var i = 0; i < input.length * 8; i += 8)
output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
return output;
}
/*
* Convert an array of little-endian words to a string
*/
function binl2rstr(input)
{
var output = "";
for(var i = 0; i < input.length * 32; i += 8)
output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
return output;
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length.
*/
function binl_md5(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
//</NOLITE>
// ENDFILE: md5-2.2alpha.js
// STARTFILE: parensplit.js
//////////////////////////////////////////////////
// parenSplit
// String.prototype.parenSplit should do what ECMAscript says
// String.prototype.split does, interspersing paren matches between
// the split elements
if (String('abc'.split(/(b)/))!='a,b,c') {
// broken String.split, e.g. konq, IE
String.prototype.parenSplit=function (re) {
re=nonGlobalRegex(re);
var s=this;
var m=re.exec(s);
var ret=[];
while (m && s) {
// without the following loop, we have
// 'ab'.parenSplit(/a|(b)/) != 'ab'.split(/a|(b)/)
for(var i=0; i<m.length; ++i) {
if (typeof m[i]=='undefined') m[i]='';
}
ret.push(s.substring(0,m.index));
ret = ret.concat(m.slice(1));
s=s.substring(m.index + m[0].length);
m=re.exec(s);
}
ret.push(s);
return ret;
};
} else {
String.prototype.parenSplit=function (re) { return this.split(re); };
String.prototype.parenSplit.isNative=true;
}
function nonGlobalRegex(re) {
var s=re.toString();
flags='';
for (var j=s.length; s.charAt(j) != '/'; --j) {
if (s.charAt(j) != 'g') { flags += s.charAt(j); }
}
var t=s.substring(1,j);
return RegExp(t,flags);
}
// ENDFILE: parensplit.js
// STARTFILE: tools.js
// IE madness with encoding
// ========================
//
// suppose throughout that the page is in utf8, like wikipedia
//
// if a is an anchor DOM element and a.href should consist of
//
// http://host.name.here/wiki/foo?bar=baz
//
// then IE gives foo as "latin1-encoded" utf8; we have foo = decode_utf8(decodeURI(foo_ie))
// but IE gives bar=baz correctly as plain utf8
//
// ---------------------------------
//
// IE's xmlhttp doesn't understand utf8 urls. Have to use encodeURI here.
//
// ---------------------------------
//
// summat else
// Source: http://aktuell.de.selfhtml.org/artikel/javascript/utf8b64/utf8.htm
//<NOLITE>
function encode_utf8(rohtext) {
// dient der Normalisierung des Zeilenumbruchs
rohtext = rohtext.replace(/\r\n/g,"\n");
var utftext = "";
for(var n=0; n<rohtext.length; n++)
{
// ermitteln des Unicodes des aktuellen Zeichens
var c=rohtext.charCodeAt(n);
// alle Zeichen von 0-127 => 1byte
if (c<128)
utftext += String.fromCharCode(c);
// alle Zeichen von 127 bis 2047 => 2byte
else if((c>127) && (c<2048)) {
utftext += String.fromCharCode((c>>6)|192);
utftext += String.fromCharCode((c&63)|128);}
// alle Zeichen von 2048 bis 66536 => 3byte
else {
utftext += String.fromCharCode((c>>12)|224);
utftext += String.fromCharCode(((c>>6)&63)|128);
utftext += String.fromCharCode((c&63)|128);}
}
return utftext;
}
function getJsObj(json) {
try {
var json_ret = eval('(' + json + ')');
} catch (someError) {
errlog('Something went wrong with getJsobj, json='+json);
return 1;
}
if( json_ret['warnings'] ) {
for( var w=0; w < json_ret['warnings'].length; w++ ) {
log( json_ret['warnings'][w]['*'] );
}
} else if ( json_ret['error'] ) {
errlog( json_ret['error'].code + ': ' + json_ret['error'].info );
}
return json_ret;
}
function anyChild(obj) {
for (var p in obj) {
return obj[p];
}
return null;
}
//</NOLITE>
function decode_utf8(utftext) {
var plaintext = ""; var i=0, c=0, c1=0, c2=0;
// while-Schleife, weil einige Zeichen uebersprungen werden
while(i<utftext.length)
{
c = utftext.charCodeAt(i);
if (c<128) {
plaintext += String.fromCharCode(c);
i++;}
else if((c>191) && (c<224)) {
c2 = utftext.charCodeAt(i+1);
plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
i+=2;}
else {
c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
i+=3;}
}
return plaintext;
}
function upcaseFirst(str) {
if (typeof str != typeof '' || str=='') return '';
return str.charAt(0).toUpperCase() + str.substring(1);
}
function findInArray(arr, foo) {
if (!arr || !arr.length) { return -1; }
var len=arr.length;
for (var i=0; i<len; ++i) { if (arr[i]==foo) { return i; } }
return -1;
}
function nextOne (array, value) {
// NB if the array has two consecutive entries equal
// then this will loop on successive calls
var i=findInArray(array, value);
if (i<0) { return null; }
return array[i+1];
}
function literalizeRegex(str){
return str.replace(RegExp('([-.|()\\+?*^${}\\[\\]])', 'g'), '\\$1');
}
String.prototype.entify=function() {
//var shy='­';
return this.split('&').join('&').split('<').join('<').split('>').join('>'/*+shy*/).split('"').join('"');
};
function findThis(array, value) {
if (typeof array.length == 'undefined') { return null; }
for (var i=0; i<array.length; ++i) {
if (array[i]==value) { return i; }
}
return null;
}
function removeNulls(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i]) {
ret.push(list[i]);
}
}
return ret;
}
function joinPath(list) {
return removeNulls(list).join('/');
}
function simplePrintf(str, subs) {
if (!str || !subs) { return str; }
var ret=[];
var s=str.parenSplit(/(%s|\$[0-9]+)/);
var i=0;
do {
ret.push(s.shift());
if ( !s.length ) { break; }
var cmd=s.shift();
if (cmd == '%s') {
if ( i < subs.length ) { ret.push(subs[i]); } else { ret.push(cmd); }
++i;
} else {
var j=parseInt( cmd.replace('$', ''), 10 ) - 1;
if ( j > -1 && j < subs.length ) { ret.push(subs[j]); } else { ret.push(cmd); }
}
} while (s.length > 0);
return ret.join('');
}
function max(a,b){return a<b ? b : a;}
function min(a,b){return a>b ? b : a;}
function isString(x) { return (typeof x === 'string' || x instanceof String); }
//function isNumber(x) { return (typeof x === 'number' || x instanceof Number); }
function isRegExp(x) { return x instanceof RegExp; }
function isArray (x) { return x instanceof Array; }
function isObject(x) { return x instanceof Object; }
function isFunction(x) {
return !isRegExp(x) && (typeof x === 'function' || x instanceof Function);
}
function repeatString(s,mult) {
var ret='';
for (var i=0; i<mult; ++i) { ret += s; }
return ret;
}
function zeroFill(s, min) {
min = min || 2;
var t=s.toString();
return repeatString('0', min - t.length) + t;
}
function map(f, o) {
if (isArray(o)) { return map_array(f,o); }
return map_object(f,o);
}
function map_array(f,o) {
var ret=[];
for (var i=0; i<o.length; ++i) {
ret.push(f(o[i]));
}
return ret;
}
function map_object(f,o) {
var ret={};
for (var i in o) { ret[o]=f(o[i]); }
return ret;
}
// ENDFILE: tools.js
// STARTFILE: dab.js
//<NOLITE>
//////////////////////////////////////////////////
// Dab-fixing code
//
function retargetDab(newTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) {
log('retargetDab: newTarget='+newTarget + ' oldTarget=' + oldTarget);
return changeLinkTargetLink(
{newTarget: newTarget,
text: newTarget.split(' ').join(' '),
hint: tprintf('disambigHint', [newTarget]),
summary: simplePrintf(
getValueOf('popupFixDabsSummary'), [friendlyCurrentArticleName, newTarget ]),
clickButton: 'wpDiff', minor: true, oldTarget: oldTarget,
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit});
}
function listLinks(wikitext, oldTarget, titleToEdit) {
// mediawiki strips trailing spaces, so we do the same
// testcase: http://en.wikipedia.org/w/index.php?title=Radial&oldid=97365633
var reg=RegExp('\\[\\[([^|]*?) *(\\||\\]\\])', 'gi');
var ret=[];
var splitted=wikitext.parenSplit(reg);
// ^[a-z]+ should match interwiki links, hopefully (case-insensitive)
// and ^[a-z]* should match those and [[:Category...]] style links too
var omitRegex=RegExp('^[a-z]*:|^[Ss]pecial:|^[Ii]mage|^[Cc]ategory');
var friendlyCurrentArticleName= oldTarget.toString();
var wikPos = getValueOf('popupDabWiktionary');
for (var i=1; i<splitted.length; i=i+3) {
if (typeof splitted[i] == typeof 'string' && splitted[i].length>0 && !omitRegex.test(splitted[i])) {
ret.push( retargetDab(splitted[i], oldTarget, friendlyCurrentArticleName, titleToEdit) );
} /* if */
} /* for loop */
ret = rmDupesFromSortedList(ret.sort());
if (wikPos) {
var wikTarget='wiktionary:' +
friendlyCurrentArticleName.replace( RegExp('^(.+)\\s+[(][^)]+[)]\\s*$'), '$1' );
var meth;
if (wikPos.toLowerCase() == 'first') { meth = 'unshift'; }
else { meth = 'push'; }
ret[meth]( retargetDab(wikTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) );
}
ret.push(changeLinkTargetLink(
{ newTarget: null,
text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this disambig page from this article"),
clickButton: "wpDiff", oldTarget: oldTarget,
summary: simplePrintf(getValueOf('popupRmDabLinkSummary'), [friendlyCurrentArticleName]),
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit
}));
return ret;
}
function rmDupesFromSortedList(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (ret.length===0 || list[i]!=ret[ret.length-1]) { ret.push(list[i]); }
}
return ret;
}
function makeFixDab(data, navpop) {
// grab title from parent popup if there is one; default exists in changeLinkTargetLink
var titleToEdit=(navpop.parentPopup && navpop.parentPopup.article.toString());
var list=listLinks(data, navpop.originalArticle, titleToEdit);
if (list.length===0) { log('listLinks returned empty list'); return null; }
var html='<hr>' + popupString('Click to disambiguate this link to:') + '<br>';
html+=list.join(', ');
return html;
}
function makeFixDabs(wikiText, navpop) {
if (getValueOf('popupFixDabs') && isDisambig(wikiText, navpop.article) &&
Title.fromURL(location.href).namespace() != pg.ns.special &&
navpop.article.talkPage() ) {
setPopupHTML(makeFixDab(wikiText, navpop), 'popupFixDab', navpop.idNumber);
}
}
function popupRedlinkHTML(article) {
return changeLinkTargetLink(
{ newTarget: null, text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this page from this article"),
clickButton: "wpDiff",
oldTarget: article.toString(),
summary: simplePrintf(getValueOf('popupRedlinkSummary'), [article.toString()])});
}
//</NOLITE>
// ENDFILE: dab.js
// STARTFILE: htmloutput.js
function appendPopupContent(obj, elementId, popupId, onSuccess) {
return setPopupHTML(obj, elementId, popupId, onSuccess, true);
}
// this has to use a timer loop as we don't know if the DOM element exists when we want to set the text
function setPopupHTML (str, elementId, popupId, onSuccess, append) {
if (elementId=='popupPreview') {
}
if (typeof popupId === 'undefined') {
//console.error('popupId is not defined in setPopupHTML, html='+str.substring(0,100));
popupId = pg.idNumber;
}
var popupElement=document.getElementById(elementId+popupId);
if (popupElement) {
if (!append) { popupElement.innerHTML=''; }
if (isString(str)) {
popupElement.innerHTML+=str;
} else {
popupElement.appendChild(str);
}
if (onSuccess) { onSuccess(); }
setTimeout(checkPopupPosition, 100);
return true;
} else {
// call this function again in a little while...
setTimeout(function(){
setPopupHTML(str,elementId,popupId,onSuccess);
}, 600);
}
return null;
}
//<NOLITE>
function setPopupTrailer(str,id) {return setPopupHTML(str, 'popupData', id);}
//</NOLITE>
function fillEmptySpans(args) { return fillEmptySpans2(args); }
// args.navpopup is mandatory
// optional: args.redir, args.redirTarget
// FIXME: ye gods, this is ugly stuff
function fillEmptySpans2(args) { // if redir is present and true then redirTarget is mandatory
var redir=true;
if (typeof args != 'object' || typeof args.redir == 'undefined' || !args.redir) { redir=false; }
var a=args.navpopup.parentAnchor;
var article, hint=null, oldid=null, params={};
if (redir && typeof args.redirTarget == typeof {}) {
article=args.redirTarget;
//hint=article.hintValue();
} else {
article=(new Title()).fromAnchor(a);
hint=a.originalTitle || article.hintValue();
params=parseParams(a.href);
oldid=(getValueOf('popupHistoricalLinks')) ? params.oldid : null;
rcid=params.rcid;
}
var x={ article:article, hint: hint, oldid: oldid, rcid: rcid, navpop:args.navpopup, params:params };
var structure=pg.structures[getValueOf('popupStructure')];
if (typeof structure != 'object') {
setPopupHTML('popupError', 'Unknown structure (this should never happen): '+
pg.option.popupStructure, args.navpopup.idNumber);
return;
}
var spans=flatten(pg.misc.layout);
var numspans = spans.length;
var redirs=pg.misc.redirSpans;
for (var i=0; i<numspans; ++i) {
var f=findThis(redirs, spans[i]);
//log('redir='+redir+', f='+f+', spans[i]='+spans[i]);
if ( (f!==null && !redir) || (f===null && redir) ) {
//log('skipping this set of the loop');
continue;
}
var structurefn=structure[spans[i]];
var setfn = setPopupHTML;
if (getValueOf('popupActiveNavlinks') &&
(spans[i].indexOf('popupTopLinks')==0 || spans[i].indexOf('popupRedirTopLinks')==0)
) {
setfn = setPopupTipsAndHTML;
}
switch (typeof structurefn) {
case 'function':
//log('running '+spans[i]+'({article:'+x.article+', hint:'+x.hint+', oldid: '+x.oldid+'})');
setfn(structurefn(x), spans[i], args.navpopup.idNumber);
break;
case 'string':
setfn(structurefn, spans[i], args.navpopup.idNumber);
break;
default:
errlog('unknown thing with label '+spans[i]);
break;
}
}
}
// flatten an array
function flatten(list, start) {
var ret=[];
if (typeof start == 'undefined') { start=0; }
for (var i=start; i<list.length; ++i) {
if (typeof list[i] == typeof []) {
return ret.concat(flatten(list[i])).concat(flatten(list, i+1));
}
else { ret.push(list[i]); }
}
return ret;
}
// Generate html for whole popup
function popupHTML (a) {
getValueOf('popupStructure');
var structure=pg.structures[pg.option.popupStructure];
if (typeof structure != 'object') {
//return 'Unknown structure: '+pg.option.popupStructure;
// override user choice
pg.option.popupStructure=pg.optionDefault.popupStructure;
return popupHTML(a);
}
if (typeof structure.popupLayout != 'function') { return 'Bad layout'; }
pg.misc.layout=structure.popupLayout();
if (typeof structure.popupRedirSpans == 'function') { pg.misc.redirSpans=structure.popupRedirSpans(); }
else { pg.misc.redirSpans=[]; }
return makeEmptySpans(pg.misc.layout, a.navpopup);
}
function makeEmptySpans (list, navpop) {
var ret='';
for (var i=0; i<list.length; ++i) {
if (typeof list[i] == typeof '') {
ret += emptySpanHTML(list[i], navpop.idNumber, 'div');
} else if (typeof list[i] == typeof [] && list[i].length > 0 ) {
ret = ret.parenSplit(RegExp('(</[^>]*?>$)')).join(makeEmptySpans(list[i], navpop));
} else if (typeof list[i] == typeof {} && list[i].nodeType ) {
ret += emptySpanHTML(list[i].name, navpop.idNumber, list[i].nodeType);
}
}
return ret;
}
function emptySpanHTML(name, id, tag, classname) {
tag = tag || 'span';
if (!classname) { classname = emptySpanHTML.classAliases[name]; }
classname = classname || name;
if (name == getValueOf('popupDragHandle')) { classname += ' popupDragHandle'; }
return simplePrintf('<%s id="%s" class="%s"></%s>', [tag, name + id, classname, tag]);
}
emptySpanHTML.classAliases={ 'popupSecondPreview': 'popupPreview' };
// generate html for popup image
// <a id="popupImageLinkn"><img id="popupImagen">
// where n=idNumber
function imageHTML(article, idNumber) {
return simplePrintf('<a id="popupImageLink$1">' +
'<img align="right" valign="top" id="popupImg$1" style="display: none;"></img>' +
'</a>', [ idNumber ]);
}
function popTipsSoonFn(id, when, popData) {
when || ( when=250 );
var popTips=function(){ setupTooltips(document.getElementById(id), false, true, popData); };
return function() { setTimeout( popTips, when, popData ); };
}
function setPopupTipsAndHTML(html, divname, idnumber, popData) {
setPopupHTML(html, divname, idnumber,
getValueOf('popupSubpopups') ?
popTipsSoonFn(divname + idnumber, null, popData) :
null);
}
// ENDFILE: htmloutput.js
// STARTFILE: mouseout.js
//////////////////////////////////////////////////
// fuzzy checks
function fuzzyCursorOffMenus(x,y, fuzz, parent) {
if (!parent) { return null; }
var uls=parent.getElementsByTagName('ul');
for (var i=0; i<uls.length; ++i) {
if (uls[i].className=='popup_menu') {
if (uls[i].offsetWidth > 0) return false;
} // else {document.title+='.';}
}
return true;
}
function checkPopupPosition () { // stop the popup running off the right of the screen
// FIXME avoid pg.current.link
pg.current.link && pg.current.link.navpopup &&
pg.current.link.navpopup.limitHorizontalPosition();
}
function mouseOutWikiLink () {
if (!window.popupsReady || !window.popupsReady()) { return; }
//console ('mouseOutWikiLink');
var a=this;
if (a.navpopup==null) return;
if ( ! a.navpopup.isVisible() ) {
a.navpopup.banish();
return;
}
Navpopup.tracker.addHook(posCheckerHook(a.navpopup));
}
function posCheckerHook(navpop) {
return function() {
if (!navpop.isVisible()) { return true; /* remove this hook */ }
if (Navpopup.tracker.dirty) {
return false;
}
var x=Navpopup.tracker.x, y=Navpopup.tracker.y;
var mouseOverNavpop = navpop.isWithin(x,y,navpop.fuzz, navpop.mainDiv) ||
!fuzzyCursorOffMenus(x,y,navpop.fuzz, navpop.mainDiv);
// FIXME it'd be prettier to do this internal to the Navpopup objects
var t=getValueOf('popupHideDelay');
if (t) { t = t * 1000; }
if (!t) {
if(!mouseOverNavpop) {
navpop.banish();
return true; /* remove this hook */
}
return false;
}
// we have a hide delay set
var d=+(new Date());
if ( !navpop.mouseLeavingTime ) {
navpop.mouseLeavingTime = d;
return false;
}
if ( mouseOverNavpop ) {
navpop.mouseLeavingTime=null;
return false;
}
if (d - navpop.mouseLeavingTime > t) {
navpop.mouseLeavingTime=null;
navpop.banish(); return true; /* remove this hook */
}
return false;
};
}
function runStopPopupTimer(navpop) {
// at this point, we should have left the link but remain within the popup
// so we call this function again until we leave the popup.
if (!navpop.stopPopupTimer) {
navpop.stopPopupTimer=setInterval(posCheckerHook(navpop), 500);
navpop.addHook(function(){clearInterval(navpop.stopPopupTimer);},
'hide', 'before');
}
}
// ENDFILE: mouseout.js
// STARTFILE: previewmaker.js
/**
@fileoverview
Defines the {@link Previewmaker} object, which generates short previews from wiki markup.
*/
/**
Creates a new Previewmaker
@constructor
@class The Previewmaker class. Use an instance of this to generate short previews from Wikitext.
@param {String} wikiText The Wikitext source of the page we wish to preview.
@param {String} baseUrl The url we should prepend when creating relative urls.
@param {Navpopup} owner The navpop associated to this preview generator
*/
function Previewmaker(wikiText, baseUrl, owner) {
/** The wikitext which is manipulated to generate the preview. */
this.originalData=wikiText;
this.setData();
this.baseUrl=baseUrl;
this.owner=owner;
this.maxCharacters=getValueOf('popupMaxPreviewCharacters');
this.maxSentences=getValueOf('popupMaxPreviewSentences');
}
Previewmaker.prototype.setData=function() {
var maxSize=max(10000, 2*this.maxCharacters);
this.data=this.originalData.substring(0,maxSize);
};
/** Remove HTML comments
@private
*/
Previewmaker.prototype.killComments = function () {
// this also kills trailing spaces and one trailing newline, eg [[diamyo]]
this.data=this.data.replace(RegExp('<!--[\\s\\S]*?--> *\\n?', 'g'), '');
};
/**
@private
*/
Previewmaker.prototype.killDivs = function () {
// say goodbye, divs (can be nested, so use * not *?)
this.data=this.data.replace(RegExp('< *div[^>]* *>[\\s\\S]*?< */ *div *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killGalleries = function () {
this.data=this.data.replace(RegExp('< *gallery[^>]* *>[\\s\\S]*?< */ *gallery *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.kill = function(opening, closing, subopening, subclosing, repl) {
var oldk=this.data;
var k=this.killStuff(this.data, opening, closing, subopening, subclosing, repl);
while (k.length < oldk.length) {
oldk=k;
k=this.killStuff(k, opening, closing, subopening, subclosing, repl);
}
this.data=k;
};
/**
@private
*/
Previewmaker.prototype.killStuff = function (txt, opening, closing, subopening, subclosing, repl) {
var op=this.makeRegexp(opening);
var cl=this.makeRegexp(closing, '^');
var sb=subopening ? this.makeRegexp(subopening, '^') : null;
var sc=subclosing ? this.makeRegexp(subclosing, '^') : cl;
if (!op || !cl) {
alert('Navigation Popups error: op or cl is null! something is wrong.');
return;
}
if (!op.test(txt)) { return txt; }
var ret='';
var opResult = op.exec(txt);
ret = txt.substring(0,opResult.index);
txt=txt.substring(opResult.index+opResult[0].length);
var depth = 1;
while (txt.length > 0) {
var removal=0;
if (depth==1 && cl.test(txt)) {
depth--;
removal=cl.exec(txt)[0].length;
} else if (depth > 1 && sc.test(txt)) {
depth--;
removal=sc.exec(txt)[0].length;
}else if (sb && sb.test(txt)) {
depth++;
removal=sb.exec(txt)[0].length;
}
if ( !removal ) { removal = 1; }
txt=txt.substring(removal);
if (depth==0) { break; }
}
return ret + (repl || '') + txt;
};
/**
@private
*/
Previewmaker.prototype.makeRegexp = function (x, prefix, suffix) {
prefix = prefix || '';
suffix = suffix || '';
var reStr='';
var flags='';
if (isString(x)) {
reStr=prefix + literalizeRegex(x) + suffix;
} else if (isRegExp(x)) {
var s=x.toString().substring(1);
var sp=s.split('/');
flags=sp[sp.length-1];
sp[sp.length-1]='';
s=sp.join('/');
s=s.substring(0,s.length-1);
reStr= prefix + s + suffix;
} else {
log ('makeRegexp failed');
}
log ('makeRegexp: got reStr=' + reStr + ', flags=' + flags);
return RegExp(reStr, flags);
};
/**
@private
*/
Previewmaker.prototype.killBoxTemplates = function () {
// taxobox removal... in fact, there's a saudiprincebox_begin, so let's be more general
// also, have float_begin, ... float_end
this.kill(RegExp('[{][{][^{}\\s|]*?(float|box)[_ ](begin|start)', 'i'), /[}][}]\s*/, '{{');
// infoboxes etc
// from [[User:Zyxw/popups.js]]: kill frames too
this.kill(RegExp('[{][{][^{}\\s|]*?(infobox|elementbox|frame)[_ ]', 'i'), /[}][}]\s*/, '{{');
};
/**
@private
*/
Previewmaker.prototype.killTemplates = function () {
this.kill('{{', '}}', '{', '}', ' ');
};
/**
@private
*/
Previewmaker.prototype.killTables = function () {
// tables are bad, too
// this can be slow, but it's an inprovement over a browser hang
// torture test: [[Comparison_of_Intel_Central_Processing_Units]]
this.kill('{|', /[|]}\s*/, '{|');
this.kill(/<table.*?>/i, /<\/table.*?>/i, /<table.*?>/i);
// remove lines starting with a pipe for the hell of it (?)
this.data=this.data.replace(RegExp('^[|].*$', 'mg'), '');
};
/**
@private
*/
Previewmaker.prototype.killImages = function () {
// images and categories are a nono
this.kill(RegExp('[[][[]\\s*(Image|File|' + pg.ns.image + '|' + pg.ns.category + ')\\s*:', 'i'),
/\]\]\s*/, '[', ']');
};
/**
@private
*/
Previewmaker.prototype.killHTML = function () {
// kill <ref ...>...</ref>
this.kill(/<ref\b[^/>]*?>/i, /<\/ref>/i);
// let's also delete entire lines starting with <. it's worth a try.
this.data=this.data.replace(RegExp('(^|\\n) *<.*', 'g'), '\n');
// and those pesky html tags, but not <nowiki> or <blockquote>
var splitted=this.data.parenSplit(/(<.*?>)/);
var len=splitted.length;
for (var i=1; i<len; i=i+2) {
switch (splitted[i]) {
case '<nowiki>':
case '</nowiki>':
break;
default:
if (! /^< *\/? *blockquote\b/i.test(splitted[i])) {
splitted[i]='';
}
}
}
this.data=splitted.join('');
};
/**
@private
*/
Previewmaker.prototype.killChunks = function() { // heuristics alert
// chunks of italic text? you crazy, man?
var italicChunkRegex=new RegExp
("((^|\\n)\\s*:*\\s*''[^']([^']|'''|'[^']){20}(.|\\n[^\\n])*''[.!?\\s]*\\n)+", 'g');
// keep stuff separated, though, so stick in \n (fixes [[Union Jack]]?
this.data=this.data.replace(italicChunkRegex, '\n');
};
/**
@private
*/
Previewmaker.prototype.mopup = function () {
// we simply *can't* be doing with horizontal rules right now
this.data=this.data.replace(RegExp('^-{4,}','mg'),'');
// no indented lines
this.data=this.data.replace(RegExp('(^|\\n) *:[^\\n]*','g'), '');
// replace __TOC__, __NOTOC__ and whatever else there is
// this'll probably do
this.data=this.data.replace(RegExp('^__[A-Z_]*__ *$', 'gmi'),'');
};
/**
@private
*/
Previewmaker.prototype.firstBit = function () {
// dont't be givin' me no subsequent paragraphs, you hear me?
/// first we "normalize" section headings, removing whitespace after, adding before
var d=this.data;
if (getValueOf('popupPreviewCutHeadings')) {
this.data=this.data.replace(RegExp('\\s*(==+[^=]*==+)\\s*', 'g'), '\n\n$1 ');
/// then we want to get rid of paragraph breaks whose text ends badly
this.data=this.data.replace(RegExp('([:;]) *\\n{2,}', 'g'), '$1\n');
this.data=this.data.replace(RegExp('^[\\s\\n]*'), '');
stuff=(RegExp('^([^\\n]|\\n[^\\n\\s])*')).exec(this.data);
if (stuff) { d = stuff[0]; }
if (!getValueOf('popupPreviewFirstParOnly')) { d = this.data; }
/// now put \n\n after sections so that bullets and numbered lists work
d=d.replace(RegExp('(==+[^=]*==+)\\s*', 'g'), '$1\n\n');
}
// superfluous sentences are RIGHT OUT.
// note: exactly 1 set of parens here needed to make the slice work
d = d.parenSplit(RegExp('([!?.]+["'+"'"+']*\\s)','g'));
// leading space is bad, mmkay?
d[0]=d[0].replace(RegExp('^\\s*'), '');
var notSentenceEnds=RegExp('([^.][a-z][.] *[a-z]|etc|sic|Dr|Mr|Mrs|Ms|St|no|op|cit|\\[[^\\]]*|\\s[A-Zvclm])$', 'i');
d = this.fixSentenceEnds(d, notSentenceEnds);
this.fullLength=d.join('').length;
var maxChars=getValueOf('popupMaxPreviewCharacters') + this.extraCharacters;
var n=this.maxSentences;
var dd=this.firstSentences(d,n);
do {
dd=this.firstSentences(d,n); --n;
} while ( dd.length > this.maxCharacters && n != 0 );
this.data = dd;
};
/**
@private
*/
Previewmaker.prototype.fixSentenceEnds = function(strs, reg) {
// take an array of strings, strs
// join strs[i] to strs[i+1] & strs[i+2] if strs[i] matches regex reg
var abbrevRe=/\b[a-z][^a-z]*$/i;
for (var i=0; i<strs.length-2; ++i) {
if (reg.test(strs[i])) {
a=[];
for (var j=0; j<strs.length; ++j) {
if (j<i) a[j]=strs[j];
if (j==i) a[i]=strs[i]+strs[i+1]+strs[i+2];
if (j>i+2) a[j-2]=strs[j];
}
return this.fixSentenceEnds(a,reg);
}
// BUGGY STUFF - trying to fix up [[S. C. Johnson & Son]] preview
if (false && abbrevRe.test(strs[i])) {
var j=i, buf='';
do {
buf=buf+strs[i]+strs[i+1];
i=i+2;
} while (i<strs.length-2 && abbrevRe.test(strs[i]));
strs[i]=buf+strs[i];
var a=(j?strs.slice(0,j-1):[]).concat(strs.slice(i));
return this.fixSentenceEnds(a,reg);
}
}
return strs;
};
/**
@private
*/
Previewmaker.prototype.firstSentences = function(strs, howmany) {
var t=strs.slice(0, 2*howmany);
return t.join('');
};
/**
@private
*/
Previewmaker.prototype.killBadWhitespace = function() {
// also cleans up isolated '''', eg [[Suntory Sungoliath]]
this.data=this.data.replace(RegExp('^ *\'+ *$', 'gm'), '');
};
/**
Runs the various methods to generate the preview.
The preview is stored in the <code>html</html> field.
@private
*/
Previewmaker.prototype.makePreview = function() {
if (this.owner.article.namespace()!=pg.ns.template &&
this.owner.article.namespace()!=pg.ns.image ) {
this.killComments();
this.killDivs();
this.killGalleries();
this.killBoxTemplates();
if (getValueOf('popupPreviewKillTemplates')) {
this.killTemplates();
} else {
this.killMultilineTemplates();
}
this.killTables();
this.killImages();
this.killHTML();
this.killChunks();
this.mopup();
this.firstBit();
this.killBadWhitespace();
}
else
{
this.killHTML();
}
this.html=wiki2html(this.data, this.baseUrl); // needs livepreview
this.fixHTML();
this.stripLongTemplates();
};
/**
@private
*/
Previewmaker.prototype.esWiki2HtmlPart = function(data) {
var reLinks = /(?:\[\[([^|\]]*)(?:\|([^|\]]*))*]]([a-z]*))/gi; //match a wikilink
reLinks.lastIndex = 0; //reset regex
var match;
var result = "";
var postfixIndex = 0;
while ((match = reLinks.exec(data)) != null) //match all wikilinks
{
//FIXME: the way that link is built here isn't perfect. It is clickable, but popups preview won't recognize it in some cases.
result += escapeQuotesHTML(data.substring(postfixIndex, match.index)) +
'<a href="'+Insta.conf.paths.articles+escapeQuotesHTML(match[1])+'">'+escapeQuotesHTML((match[2]?match[2]:match[1])+match[3])+"</a>";
postfixIndex = reLinks.lastIndex;
}
//append the rest
result += escapeQuotesHTML(data.substring(postfixIndex));
return result;
};
Previewmaker.prototype.editSummaryPreview=function() {
var reAes = /\/\* *(.*?) *\*\//g; //match the first section marker
reAes.lastIndex = 0; //reset regex
var match;
match = reAes.exec(this.data);
if (match)
{
//we have a section link. Split it, process it, combine it.
var prefix = this.data.substring(0,match.index-1);
var section = match[1];
var postfix = this.data.substring(reAes.lastIndex);
var start = "<span class='autocomment'>";
var end = "</span>";
if (prefix.length>0) start = this.esWiki2HtmlPart(prefix) + " " + start + "- ";
if (postfix.length>0) end = ": " + end + this.esWiki2HtmlPart(postfix);
var t=new Title().fromURL(this.baseUrl);
t.anchorFromUtf(section);
var sectionLink = Insta.conf.paths.articles + escapeQuotesHTML(t.toString(true)) + '#' + escapeQuotesHTML(t.anchor);
return start + '<a href="'+sectionLink+'">→</a> '+escapeQuotesHTML(section) + end;
}
//else there's no section link, htmlify the whole thing.
return this.esWiki2HtmlPart(this.data);
};
//<NOLITE>
/** Test function for debugging preview problems one step at a time.
*/
function previewSteps(txt) {
try {
txt=txt || document.editform.wpTextbox1.value;
} catch (err) {
if (pg.cache.pages.length > 0) {
txt=pg.cache.pages[pg.cache.pages.length-1].data;
} else {
alert('provide text or use an edit page');
}
}
txt=txt.substring(0,10000);
var base=pg.wiki.articlebase + Title.fromURL(document.location.href).urlString();
var p=new Previewmaker(txt, base, pg.current.link.navpopup);
if (this.owner.article.namespace() != pg.ns.template) {
p.killComments(); if (!confirm('done killComments(). Continue?\n---\n' + p.data)) { return; }
p.killDivs(); if (!confirm('done killDivs(). Continue?\n---\n' + p.data)) { return; }
p.killGalleries(); if (!confirm('done killGalleries(). Continue?\n---\n' + p.data)) { return; }
p.killBoxTemplates(); if (!confirm('done killBoxTemplates(). Continue?\n---\n' + p.data)) { return; }
if (getValueOf('popupPreviewKillTemplates')) {
p.killTemplates(); if (!confirm('done killTemplates(). Continue?\n---\n' + p.data)) { return; }
} else {
p.killMultilineTemplates(); if (!confirm('done killMultilineTemplates(). Continue?\n---\n' + p.data)) { return; }
}
p.killTables(); if (!confirm('done killTables(). Continue?\n---\n' + p.data)) { return; }
p.killImages(); if (!confirm('done killImages(). Continue?\n---\n' + p.data)) { return; }
p.killHTML(); if (!confirm('done killHTML(). Continue?\n---\n' + p.data)) { return; }
p.killChunks(); if (!confirm('done killChunks(). Continue?\n---\n' + p.data)) { return; }
p.mopup(); if (!confirm('done mopup(). Continue?\n---\n' + p.data)) { return; }
p.firstBit(); if (!confirm('done firstBit(). Continue?\n---\n' + p.data)) { return; }
p.killBadWhitespace(); if (!confirm('done killBadWhitespace(). Continue?\n---\n' + p.data)) { return; }
}
p.html=wiki2html(p.data, base); // needs livepreview
p.fixHTML(); if (!confirm('done fixHTML(). Continue?\n---\n' + p.html)) { return; }
p.stripLongTemplates(); if (!confirm('done stripLongTemplates(). Continue?\n---\n' + p.html)) { return; }
alert('finished preview - end result follows.\n---\n' + p.html);
}
//</NOLITE>
/**
Works around a quoting bug in livepreview.
<code>wiki2html('[[Foo\'s "bar"]]')</code> gives @literal{<a href='Foo's "bar"'>}
which doesn't do very well. We change this into @literal{<a href="Foo's %22bar%22">}
@private
*/
Previewmaker.prototype.fixHTML = function() {
if(!this.html) return;
// all links seem to have potential issues with quotation marks
var splitted=this.html.parenSplit(/href='([^>]*)'/g);
var ret='';
for (var i=0; i<splitted.length; ++i) {
if(i%2==0) { ret += splitted[i]; continue; }
if(i%2==1) { ret += 'href="' + splitted[i].split('"').join('%22') + '"'; }
}
// fix question marks in wiki links
// maybe this'll break some stuff :-(
ret=ret.replace(RegExp('\(<a href="' + pg.wiki.articlePath + '/[^"]*\)[?]\(.*?"\)', 'g'), '$1%3F$2');
// FIXME fix up % too
this.html=ret;
};
/**
Generates the preview and displays it in the current popup.
Does nothing if the generated preview is invalid or consists of whitespace only.
Also activates wikilinks in the preview for subpopups if the popupSubpopups option is true.
*/
Previewmaker.prototype.showPreview = function () {
this.makePreview();
if (typeof this.html != typeof '') return;
if (RegExp('^\\s*$').test(this.html)) return;
setPopupHTML('<hr>', 'popupPrePreviewSep', this.owner.idNumber);
setPopupTipsAndHTML(this.html, 'popupPreview', this.owner.idNumber, { owner: this.owner });
var more = (this.fullLength > this.data.length) ? this.moreLink() : '';
setPopupHTML(more, 'popupPreviewMore', this.owner.idNumber);
};
/**
@private
*/
Previewmaker.prototype.moreLink=function() {
var a=document.createElement('a');
a.className='popupMoreLink';
a.innerHTML=popupString('more...');
var savedThis=this;
a.onclick=function() {
savedThis.maxCharacters+=2000;
savedThis.maxSentences+=20;
savedThis.setData();
savedThis.showPreview();
}
return a;
}
/**
@private
*/
Previewmaker.prototype.stripLongTemplates = function() {
// operates on the HTML!
this.html=this.html.replace(RegExp('^.{0,1000}[{][{][^}]*?(<(p|br)( /)?>\\s*){2,}([^{}]*?[}][}])?', 'gi'), '');
this.html=this.html.split('\n').join(' '); // workaround for <pre> templates
this.html=this.html.replace(RegExp('[{][{][^}]*<pre>[^}]*[}][}]','gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killMultilineTemplates = function() {
this.kill('{{{', '}}}');
this.kill(RegExp('\\s*[{][{][^{}]*\\n'), '}}', '{{');
};
// ENDFILE: previewmaker.js
// STARTFILE: querypreview.js
function loadAPIPreview(queryType, article, navpop) {
var art=new Title(article).urlString();
var url=pg.wiki.apiwikibase + '?format=json&action=query&';
var htmlGenerator=function(a,d){alert('invalid html generator');};
switch (queryType) {
case 'history':
url += 'meta=userinfo&uiprop=options&titles=' + art + '&prop=revisions&rvlimit=' +
getValueOf('popupHistoryPreviewLimit');
htmlGenerator=APIhistoryPreviewHTML;
break;
case 'category':
url += 'list=categorymembers&cmtitle=' + art;
htmlGenerator=APIcategoryPreviewHTML;
break;
case 'userinfo':
var usernameart = encodeURIComponent( new Title( article ).userName() );
url += 'list=users&usprop=blockinfo|groups|editcount|registration&ususers=' + usernameart;
htmlGenerator=APIuserInfoPreviewHTML;
break;
case 'contribs':
var usernameart = encodeURIComponent( new Title( article ).userName() );
url += 'list=usercontribs&meta=userinfo&uiprop=options&ucuser=' + usernameart +
'&uclimit=' + getValueOf('popupContribsPreviewLimit');
htmlGenerator=APIcontribsPreviewHTML;
break;
case 'imagepagepreview':
var trail='';
if (getValueOf('popupImageLinks')) { trail = '&list=imageusage&iutitle=' + art; }
url += 'titles=' + art + '&prop=revisions|imageinfo&rvprop=content' + trail;
htmlGenerator=APIimagepagePreviewHTML;
break;
case 'backlinks':
url += 'list=backlinks&bltitle=' + art;
htmlGenerator=APIbacklinksPreviewHTML;
break;
}
pendingNavpopTask(navpop);
if( !window.wgEnableAPI || !wgEnableAPI ) {
/* The API is not available */
htmlGenerator=function(a,d){
return 'This function of navigation popups now requires a MediaWiki ' +
'installation with the <a href="http://www.mediawiki.org/wiki/API">API</a> enabled.'; };
}
var callback=function(d){
log( "callback of API functions was hit" );
showAPIPreview(queryType, htmlGenerator(article,d,navpop), navpop.idNumber, navpop, d);
};
var go = function(){
getPageWithCaching(url, callback, navpop);
return true;
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_'+queryType+'_QUERY_DATA'); }
}
function linkList(list) {
list.sort(function(x,y) { return (x==y ? 0 : (x<y ? -1 : 1)); });
var buf=[];
for (var i=0; i<list.length; ++i) {
buf.push(wikiLink({article: new Title(list[i]),
text: list[i].split(' ').join(' '),
action: 'view'}));
}
return buf.join(', ');
}
function getTimeOffset(tz) {
if( tz ) {
if( tz.indexOf('|') > -1 ) {
// New format
return parseInt(tz.split('|')[1],10);
} else if ( tz.indexOf(':') > -1 ) {
// Old format
return( parseInt(tz,10)*60 + parseInt(tz.split(':')[1],10) );
}
}
return 0;
}
function editPreviewTable(article, h, reallyContribs, timeOffset) {
var html=['<table>'];
var day=null;
var curart=article;
for (var i=0; i<h.length; ++i) {
if (reallyContribs) {
var page=h[i]['title']; curart = new Title(page);
}
var minor=typeof h[i]['minor']=='undefined' ? '' : '<b>m </b>';
var editDate=adjustDate(getDateFromTimestamp(h[i].timestamp), timeOffset);
var thisDay = dayFormat(editDate);
var thisTime = timeFormat(editDate);
if (thisDay==day) { thisDay=''; }
else { day=thisDay; }
if (thisDay) {
html.push( '<tr><td colspan=3><span class="popup_history_date">' +
thisDay+'</span></td></tr>' );
}
html.push('<tr class="popup_history_row_' + ( (i%2) ? 'odd' : 'even') + '">');
html.push('<td>(<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&diff=prev&oldid=' + h[i]['revid'] + '">' + popupString('last') + '</a>)</td>');
html.push('<td>' +
'<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&oldid=' + h[i]['revid'] + '">' + thisTime + '</a></td>');
var col3url='', col3txt='';
if (!reallyContribs) {
var user=h[i]['user'];
col3url=pg.wiki.titlebase + pg.ns.user + ':' + new Title(user).urlString();
col3txt=escapeQuotesHTML(user);
} else {
col3url=pg.wiki.titlebase + curart.urlString();
col3txt=escapeQuotesHTML(page);
}
html.push('<td>' + (reallyContribs ? minor : '') +
'<a href="' + col3url + '">' + col3txt + '</a></td>');
var comment='';
var c=h[i].comment || h[i]['*'];
if (c) {
comment=new Previewmaker(c, new Title(curart).toUrl()).editSummaryPreview();
}
html.push('<td>' + (!reallyContribs ? minor : '') + comment + '</td>');
html.push('</tr>');
html=[html.join('')];
}
html.push('</table>');
return html.join('');
}
function getDateFromTimestamp(t) {
var s=t.split(/[^0-9]/);
switch(s.length) {
case 0: return null;
case 1: return new Date(s[0]);
case 2: return new Date(s[0], s[1]-1);
case 3: return new Date(s[0], s[1]-1, s[2]);
case 4: return new Date(s[0], s[1]-1, s[2], s[3]);
case 5: return new Date(s[0], s[1]-1, s[2], s[3], s[4]);
case 6: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]);
default: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5], s[6]);
}
}
function adjustDate(d, offset) {
// offset is in minutes
var o=offset * 60 * 1000;
return new Date( +d + o);
}
function dayFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCFullYear(), editDate.getUTCMonth()+1, editDate.getUTCDate()]).join('-'); }
return map(zeroFill, [editDate.getFullYear(), editDate.getMonth()+1, editDate.getDate()]).join('-');
}
function timeFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCHours(), editDate.getUTCMinutes(), editDate.getUTCSeconds()]).join(':'); }
return map(zeroFill, [editDate.getHours(), editDate.getMinutes(), editDate.getSeconds()]).join(':');
}
function showAPIPreview(queryType, html, id, navpop, download) {
// DJ: done
var target='popupPreview';
switch (queryType) {
case 'imagelinks':
case 'category':
case 'userinfo':
target='popupPostPreview'; break;
}
setPopupTipsAndHTML(html, target, id);
completedNavpopTask(navpop);
}
function APIbacklinksPreviewHTML(article, download, navpop) {
try {
var jsObj=getJsObj(download.data);
var list=jsObj.query.backlinks;
} catch (someError) { return 'backlinksPreviewHTML went wonky'; }
var html=[];
if (!list) { return popupString('No backlinks found'); }
for ( i in list ) {
var t=new Title(list[i]['title']);
html.push('<a href="' + pg.wiki.titlebase + t.urlString() + '">' + t + '</a>');
}
html=html.join(', ');
if (jsObj['query-continue'] && jsObj['query-continue'].backlinks && jsObj['query-continue'].backlinks.blcontinue) {
html += popupString(' and more');
}
return html;
}
function APIsharedImagePagePreviewHTML(obj) {
log( "APIsharedImagePagePreviewHTML" );
var popupid = obj['requestid'];
if( obj['query'] && obj['query']['pages'] )
{
var page=anyChild(obj['query']['pages']);
var content=(page && page.revisions ) ? page.revisions[0]['*'] : null;
if( content )
{
/* Not entirely safe, but the best we can do */
var p=new Previewmaker(content, pg.current.link.navpopup.article, pg.current.link.navpopup);
p.makePreview();
setPopupHTML( p.html, "popupSecondPreview", popupid );
}
}
}
function APIimagepagePreviewHTML(article, download, navpop) {
try {
var jsObj=getJsObj(download.data);
var page=anyChild(jsObj.query.pages);
var content=(page && page.revisions ) ? page.revisions[0]['*'] : null;
} catch (someError) {
return 'API imagepage preview failed :(';
}
var ret='';
if (content) {
var p=prepPreviewmaker(content, article, navpop);
p.makePreview();
if (p.html) { ret += '<hr>' + p.html; }
}
if (content!==null && getValueOf('popupSummaryData')) {
var info=getPageInfo(content, download);
log(info);
setPopupTrailer(info, navpop.idNumber);
}
if (page && page.imagerepository == "shared" ) {
var art=new Title(article).urlString();
var encart = encodeURIComponent( "File:" + art.stripNamespace() );
var shared_url = pg.wiki.apicommonsbase + '?format=json&callback=APIsharedImagePagePreviewHTML' +
'&requestid=' + navpop.idNumber +
'&action=query&prop=revisions&rvprop=content&titles=' + encart;
ret = ret +'<hr>' + popupString( 'Image from Commons') +
': <a href="' + pg.wiki.commonsbase + '?title=' + encart + '">' +
popupString( 'Description page') + '</a>';
importScriptURI( shared_url );
}
showAPIPreview('imagelinks', APIimagelinksPreviewHTML(article,download), navpop.idNumber, download);
return ret;
}
function APIimagelinksPreviewHTML(article, download) {
try {
var jsobj=getJsObj(download.data);
var list=jsobj.query.imageusage;
if (!list) { return popupString('No image links found'); }
} catch(someError) { return 'Image links preview generation failed :('; }
var ret=[];
for (var i=0; i < list.length; i++) {
ret.push(list[i]['title']);
}
if (ret.length === 0) { return popupString('No image links found'); }
return '<h2>' + popupString('File links') + '</h2>' + linkList(ret);
}
function APIcategoryPreviewHTML(article, download) {
try{
var jsobj=getJsObj(download.data);
var list=jsobj.query.categorymembers;
} catch(someError) { return 'Category preview failed :('; }
var ret=[];
for (var p=0; p < list.length; p++) {
ret.push(list[p]['title']);
}
if (ret.length === 0) { return popupString('Empty category'); }
ret = '<h2>' + tprintf('Category members (%s shown)', [ret.length]) + '</h2>' +linkList(ret);
if (jsobj['query-continue'] && jsobj['query-continue'].categorymembers && jsobj['query-continue'].categorymembers.cmcontinue) {
ret += popupString(' and more');
}
return ret;
}
function APIuserInfoPreviewHTML(article, download) {
try{
var jsobj=getJsObj(download.data);
var user=anyChild(jsobj.query.users);
} catch(someError) { return 'Userinfo preview failed :('; }
if (!user || user.invalid == '') {
return '<hr>' + popupString( 'Invalid or IP user');
} else if (user.missing == '') {
return '<hr>' + popupString( 'Not a registered username');
}
var ret=[];
if( user.blockedby )
ret.push('<b>' + popupString('BLOCKED') + '</b>');
for( var i=0; (user.groups && i < user.groups.length); i++)
{
ret.push( user.groups[i] );
}
if( user.editcount || user.registration )
ret.push( (user.editcount?user.editcount:'') + popupString(' edits since: ') + (user.registration?dayFormat(getDateFromTimestamp(user.registration)):'') );
ret = '<hr>' + ret.join( ', ' );
return ret;
}
function APIcontribsPreviewHTML(article, download, navpop) {
return APIhistoryPreviewHTML(article, download, navpop, true);
}
function APIhistoryPreviewHTML(article, download, navpop, reallyContribs) {
try {
var jsobj=getJsObj(download.data);
var tz=jsobj.query.userinfo.options.timecorrection;
if( reallyContribs )
var edits=jsobj.query.usercontribs;
else
var edits=anyChild(jsobj.query.pages)['revisions'];
} catch (someError) {
return 'History preview failed :-(';
}
var timeOffset = getTimeOffset(tz);
Cookie.create('popTz', timeOffset, 1);
var ret=editPreviewTable(article, edits, reallyContribs, timeOffset);
return ret;
}
//</NOLITE>
// ENDFILE: querypreview.js
// STARTFILE: debug.js
////////////////////////////////////////////////////////////////////
// Debugging functions
////////////////////////////////////////////////////////////////////
function log(){}; // dummy to stop errors
function setupDebugging() {
//<NOLITE>
if (window.popupDebug) { // popupDebug is set from .version
window.log=function(x) { //if(gMsg!='')gMsg += '\n'; gMsg+=time() + ' ' + x; };
window.console.log(x);
}
window.errlog=function(x) {
window.console.error(x);
}
log('Initializing logger');
} else {
//</NOLITE>
window.log = function(x) {};
window.errlog = function(x) {};
//<NOLITE>
}
//</NOLITE>
}
// ENDFILE: debug.js
// STARTFILE: images.js
// load image of type Title.
function loadImage(image, navpop) {
if (typeof image.stripNamespace != 'function') { alert('loadImages bad'); }
// API call to retrieve image info.
if (!getValueOf('popupImages') || !window.wgEnableAPI || !wgEnableAPI) return;
if (!isValidImageName(image)) return false;
var art=image.urlString();
var url=pg.wiki.apiwikibase + '?format=json&action=query';
url += '&prop=imageinfo&iiprop=url|mime&iiurlwidth=' + getValueOf('popupImageSizeLarge');;
url += '&titles=' + art;
pendingNavpopTask(navpop);
var callback=function(d){
popupsInsertImage(navpop.idNumber, navpop, d);
};
var go = function(){
getPageWithCaching(url, callback, navpop);
return true;
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'after', 'DOWNLOAD_IMAGE_QUERY_DATA'); }
}
function popupsInsertImage(id, navpop, download) {
log( "popupsInsertImage");
try {
var jsObj=getJsObj(download.data);
var imagepage=anyChild(jsObj.query.pages);
var imageinfo = imagepage.imageinfo[0];
} catch (someError) {
log( "popupsInsertImage failed :(" );
return;
}
var popupImage = document.getElementById("popupImg"+id);
if (!popupImage) {
log( "could not find insertion point for image");
return;
}
popupImage.width=getValueOf('popupImageSize');
popupImage.style.display='inline';
// Set the source for the image.
if( imageinfo.thumburl )
popupImage.src=imageinfo.thumburl;
else if( imageinfo.mime.indexOf("image") == 0 ){
popupImage.src=imageinfo.url;
log( "a thumb could not be found, using original image" );
} else log( "fullsize imagethumb, but not sure if it's an image");
var a=document.getElementById("popupImageLink"+id);
if (a === null) { return null; }
// Determine the action of the surrouding imagelink.
switch (getValueOf('popupThumbAction')) {
case 'imagepage':
if (pg.current.article.namespace()!=pg.ns.image) {
a.href=imageinfo.descriptionurl;
// FIXME: unreliable pg.idNumber
popTipsSoonFn('popupImage' + id)();
break;
} // else fall through
case 'sizetoggle':
a.onclick=toggleSize;
a.title=popupString('Toggle image size');
return;
case 'linkfull':
a.href = imageinfo.url;
a.title=popupString('Open full-size image');
return;
}
}
// Toggles the image between inline small and navpop fullwidth.
// It's the same image, no actual sizechange occurs, only display width.
function toggleSize() {
var imgContainer=this;
if (!imgContainer) { alert('imgContainer is null :/'); return;}
img=imgContainer.firstChild;
if (!img) { alert('img is null :/'); return;}
if (!img.style.width || img.style.width=='') { img.style.width='100%'; }
else { img.style.width=''; }
}
// Returns one title of an image from wikiText.
function getValidImageFromWikiText(wikiText) {
// nb in pg.re.image we're interested in the second bracketed expression
// this may change if the regex changes :-(
//var match=pg.re.image.exec(wikiText);
var matched=null;
var match;
// strip html comments, used by evil bots :-(
var t = removeMatchesUnless(wikiText, RegExp('(<!--[\\s\\S]*?-->)'), 1,
RegExp('^<!--[^[]*popup', 'i'));
while ( match = pg.re.image.exec(t) ) {
// now find a sane image name - exclude templates by seeking {
var m = match[2] || match[6];
if ( isValidImageName(m) ) {
matched=m;
break;
}
}
pg.re.image.lastIndex=0;
if (!matched) { return null; }
return pg.ns.image+':'+upcaseFirst(matched);
}
function removeMatchesUnless(str, re1, parencount, re2) {
var split=str.parenSplit(re1);
var c=parencount + 1;
for (var i=0; i<split.length; ++i) {
if ( i%c === 0 || re2.test(split[i]) ) { continue; }
split[i]='';
}
return split.join('');
}
//</NOLITE>
// ENDFILE: images.js
// STARTFILE: namespaces.js
// Set up namespaces and other non-strings.js localization
// (currently that means redirs too)
// Put the right namespace list into pg.ns.list, based on pg.wiki.lang
// Default to english if nothing seems to fit
function setNamespaceList() {
var m="Media";
var list = [m, "Special", "Talk", "User", "User talk", "Wikipedia", "Wikipedia talk", "File", "File talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk", "Portal", "Portal talk"];
var nsIndex = { '': 0, 'Special': 1,
'Talk': 2, 'User': 3, 'User talk': 4, 'Wikipedia': 5,
'Wikipedia talk': 6, 'Image': 7, 'File': 7, 'Image talk': 8, 'File talk' : 8, 'MediaWiki': 9,
'MediaWiki talk': 10, 'Template': 11, 'Template talk': 12,
'Help': 13, 'Help talk': 14, 'Category': 15, 'Category talk':16,
'Portal': 17, 'Portal talk': 18};
var nsLists = {
//<NOLITE>
"af": [m, "Spesiaal", "Bespreking", "Gebruiker", "Gebruikerbespreking", "Wikipedia", "Wikipediabespreking", "Beeld", "Beeldbespreking", "MediaWiki", "MediaWikibespreking", "Sjabloon", "Sjabloonbespreking", "Hulp", "Hulpbespreking", "Kategorie", "Kategoriebespreking"],
"als": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion"],
"ar": ["ملف", "خاص", "نقاش", "مستخدم", "نقاش المستخدم", "ويكيبيديا", "نقاش ويكيبيديا", "صورة", "نقاش الصورة", "ميدياويكي", "نقاش ميدياويكي", "Template", "نقاش Template", "مساعدة", "نقاش المساعدة", "تصنيف", "نقاش التصنيف"],
"ast": [m, "Especial", "Discusión", "Usuariu", "Usuariu discusión", "Uiquipedia", "Uiquipedia discusión", "Imaxen", "Imaxen discusión", "MediaWiki", "MediaWiki discusión", "Plantilla", "Plantilla discusión", "Ayuda", "Ayuda discusión", "Categoría", "Categoría discusión"],
"be": ["Мэдыя", "Спэцыяльныя", "Абмеркаваньне", "Удзельнік", "Гутаркі ўдзельніка", "Вікіпэдыя", "Абмеркаваньне Вікіпэдыя", "Выява", "Абмеркаваньне выявы", "MediaWiki", "Абмеркаваньне MediaWiki", "Шаблён", "Абмеркаваньне шаблёну", "Дапамога", "Абмеркаваньне дапамогі", "Катэгорыя", "Абмеркаваньне катэгорыі"],
"bg": ["Медия", "Специални", "Беседа", "Потребител", "Потребител беседа", "Уикипедия", "Уикипедия беседа", "Картинка", "Картинка беседа", "МедияУики", "МедияУики беседа", "Шаблон", "Шаблон беседа", "Помощ", "Помощ беседа", "Категория", "Категория беседа"],
"bm": [m, "Special", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipedia", "Discussion Wikipedia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie"],
"bn": ["বিশেষ", "আলাপ", "ব্যবহারকারী", "ব্যবহারকারী আলাপ", "উইকিপেডিয়া", "উইকিপেডিয়া আলাপ", "চিত্র", "চিত্র আলাপ", "MediaWik i আলাপ", m, "MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"br": [m, "Dibar", "Kaozeal", "Implijer", "Kaozeadenn Implijer", "Wikipedia", "Kaozeadenn Wikipedia", "Skeudenn", "Kaozeadenn Skeudenn", "MediaWiki", "Kaozeadenn MediaWiki", "Patrom", "Kaozeadenn Patrom", "Skoazell", "Kaozeadenn Skoazell", "Rummad", "Kaozeadenn Rummad"],
"ca": [m, "Especial", "Discussió", "Usuari", "Usuari Discussió", "Viquipèdia", "Viquipèdia Discussió", "Imatge", "Imatge Discussió", "MediaWiki", "MediaWiki Discussió", "Template", "Template Discussió", "Ajuda", "Ajuda Discussió", "Categoria", "Categoria Discussió"],
"cs": ["Média", "Speciální", "Diskuse", "Wikipedista", "Wikipedista diskuse", "Wikipedie", "Wikipedie diskuse", "Soubor", "Soubor diskuse", "MediaWiki", "MediaWiki diskuse", "Šablona", "Šablona diskuse", "Nápověda", "Nápověda diskuse", "Kategorie", "Kategorie diskuse"],
"csb": [m, "Specjalnô", "Diskùsëjô", "Brëkòwnik", "Diskùsëjô brëkòwnika", "Wiki", "Diskùsëjô Wiki", "Òbrôzk", "Diskùsëjô òbrôzków", "MediaWiki", "Diskùsëjô MediaWiki", "Szablóna", "Diskùsëjô Szablónë", "Pòmòc", "Diskùsëjô Pòmòcë", "Kategòrëjô", "Diskùsëjô Kategòrëji"],
"cv": ["Медиа", "Ятарлă", "Сӳтсе явасси", "Хутшăнакан", "Хутшăнаканăн канашлу страници", "Wikipedia", "0", "Ӳкерчĕк", "Ӳкерчĕке сӳтсе явмалли", "MediaWiki", "MediaWiki сӳтсе явмалли", "Шаблон", "Шаблона сӳтсе явмалли", "Пулăшу", "Пулăшăва сӳтсе явмалли", "Категори", "Категорине сӳтсе явмалли"],
"cy": [m, "Arbennig", "Sgwrs", "Defnyddiwr", "Sgwrs Defnyddiwr", "Wicipedia", "Sgwrs Wicipedia", "Delwedd", "Sgwrs Delwedd", "MediaWiki", "Sgwrs MediaWiki", "Nodyn", "Sgwrs Nodyn", "Help", "Help talk", "Category", "Category talk"],
"da": [m, "Speciel", "Diskussion", "Bruger", "Brugerdiskussion", "Wikipedia", "Wikipedia-diskussion", "Billede", "Billeddiskussion", "MediaWiki", "MediaWiki-diskussion", "Skabelon", "Skabelondiskussion", "Hjælp", "Hjælpdiskussion", "Kategori", "Kategoridiskussion", "Portal", "Portaldiskussion"],
"de": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion", "Portal", "Portal Diskussion"],
"el": ["Μέσον", "Ειδικό", "Συζήτηση", "Χρήστης", "Συζήτηση χρήστη", "Βικιπαίδεια", "Βικιπαίδεια συζήτηση", "Εικόνα", "Συζήτηση εικόνας", "MediaWiki", "MediaWiki talk", "Πρότυπο", "Συζήτηση προτύπου", "Βοήθεια", "Συζήτηση βοήθειας", "Κατηγορία", "Συζήτηση κατηγορίας"],
"eo": [m, "Speciala", "Diskuto", "Uzanto", "Uzanta diskuto", "Vikipedio", "Vikipedio diskuto", "Dosiero", "Dosiera diskuto", "MediaWiki", "MediaWiki diskuto", "Ŝablono", "Ŝablona diskuto", "Helpo", "Helpa diskuto", "Kategorio", "Kategoria diskuto"],
"es": [m, "Especial", "Discusión", "Usuario", "Usuario Discusión", "Wikipedia", "Wikipedia Discusión", "Imagen", "Imagen Discusión", "MediaWiki", "MediaWiki Discusión", "Plantilla", "Plantilla Discusión", "Ayuda", "Ayuda Discusión", "Categoría", "Categoría Discusión"],
"et": ["Meedia", "Eri", "Arutelu", "Kasutaja", "Kasutaja arutelu", "Vikipeedia", "Vikipeedia arutelu", "Pilt", "Pildi arutelu", "MediaWiki", "MediaWiki arutelu", "Mall", "Malli arutelu", "Juhend", "Juhendi arutelu", "Kategooria", "Kategooria arutelu"],
"eu": [m, "Aparteko", "Eztabaida", "Lankide", "Lankide eztabaida", "Wikipedia", "Wikipedia eztabaida", "Irudi", "Irudi eztabaida", "MediaWiki", "MediaWiki eztabaida", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"fa": ["مدیا", "ویژه", "بحث", "کاربر", "بحث کاربر", "ویکیپدیا", "بحث ویکیپدیا", "تصویر", "بحث تصویر", "مدیاویکی", "بحث مدیاویکی", "الگو", "بحث الگو", "راهنما", "بحث راهنما", "رده", "بحث رده"],
"fi": [m, "Toiminnot", "Keskustelu", "Käyttäjä", "Keskustelu käyttäjästä", "Wikipedia", "Keskustelu Wikipediasta", "Kuva", "Keskustelu kuvasta", "MediaWiki", "MediaWiki talk", "Malline", "Keskustelu mallineesta", "Ohje", "Keskustelu ohjeesta", "Luokka", "Keskustelu luokasta"],
"fo": ["Miðil", "Serstakur", "Kjak", "Brúkari", "Brúkari kjak", "Wikipedia", "Wikipedia kjak", "Mynd", "Mynd kjak", "MidiaWiki", "MidiaWiki kjak", "Fyrimynd", "Fyrimynd kjak", "Hjálp", "Hjálp kjak", "Bólkur", "Bólkur kjak"],
"fr": [m, "Spécial", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipédia", "Discussion Wikipédia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie", "Portail", "Discussion Portail"],
"fur": [m, "Speciâl", "Discussion", "Utent", "Discussion utent", "Vichipedie", "Discussion Vichipedie", "Figure", "Discussion figure", "MediaWiki", "Discussion MediaWiki", "Model", "Discussion model", "Jutori", "Discussion jutori", "Categorie", "Discussion categorie"],
"fy": [m, "Wiki", "Oerlis", "Meidogger", "Meidogger oerlis", "Wikipedy", "Wikipedy oerlis", "Ofbyld", "Ofbyld oerlis", "MediaWiki", "MediaWiki oerlis", "Berjocht", "Berjocht oerlis", "Hulp", "Hulp oerlis", "Kategory", "Kategory oerlis"],
"ga": ["Meán", "Speisialta", "Plé", "Úsáideoir", "Plé úsáideora", "Vicipéid", "Plé Vicipéide", "Íomhá", "Plé íomhá", "MediaWiki", "Plé MediaWiki", "Teimpléad", "Plé teimpléid", "Cabhair", "Plé cabhrach", "Catagóir", "Plé catagóire"],
"gl": [m, "Especial", "Conversa", "Usuario", "Conversa usuario", "Wikipedia", "Conversa Wikipedia", "Ficheiro", "Conversa ficheiro", "MediaWiki", "Conversa MediaWiki", "Modelo", "Conversa modelo", "Axuda", "Conversa axuda", "Categoría", "Conversa categoría", "Portal", "Portal talk"],
"gu": [m, "Special", "Talk", "User", "User talk", "વિકિપીડિયા", "વિકિપીડિયા talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"he": [m, "מיוחד", "שיחה", "משתמש", "שיחת משתמש", "ויקיפדיה", "שיחת ויקיפדיה", "תמונה", "שיחת תמונה", "MediaWiki", "שיחת MediaWiki", "תבנית", "שיחת תבנית", "עזרה", "שיחת עזרה", "קטגוריה", "שיחת קטגוריה"],
"hi": [m, "विशेष", "वार्ता", "सदस्य", "सदस्य वार्ता", "विकिपीडिया", "विकिपीडिया वार्ता", "चित्र", "चित्र वार्ता", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "श्रेणी", "श्रेणी वार्ता", "Help", "Help talk"],
"hr": ["Mediji", "Posebno", "Razgovor", "Suradnik", "Razgovor sa suradnikom", "Wikipedia", "Razgovor Wikipedia", "Slika", "Razgovor o slici", "MediaWiki", "MediaWiki razgovor", "Predložak", "Razgovor o predlošku", "Pomoć", "Razgovor o pomoći", "Kategorija", "Razgovor o kategoriji"],
"hu": [ "Média", "Speciális", "Vita", "Szerkesztő", "Szerkesztővita", "Wikipédia", "Wikipédia-vita", "Kép", "Képvita", "MediaWiki", "MediaWiki-vita", "Sablon", "Sablonvita", "Segítség", "Segítségvita", "Kategória", "Kategóriavita", "Portál", "Portálvita"],
"ia": [m, "Special", "Discussion", "Usator", "Discussion Usator", "Wikipedia", "Discussion Wikipedia", "Imagine", "Discussion Imagine", "MediaWiki", "Discussion MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"id": [m, "Istimewa", "Bicara", "Pengguna", "Bicara Pengguna", "Wikipedia", "Pembicaraan Wikipedia", "Gambar", "Pembicaraan Gambar", "MediaWiki", "Pembicaraan MediaWiki", "Templat", "Pembicaraan Templat", "Bantuan", "Pembicaraan Bantuan", "Kategori", "Pembicaraan Kategori"],
"is": ["Miðill", "Kerfissíða", "Spjall", "Notandi", "Notandaspjall", "Wikipedia", "Wikipediaspjall", "Mynd", "Myndaspjall", "Melding", "Meldingarspjall", "Snið", "Sniðaspjall", "Hjálp", "Hjálparspjall", "Flokkur", "Flokkaspjall"],
"it": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "File", "Discussioni file", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria", "Portale", "Discussioni portale", "Progetto", "Discussioni progetto"],
"ja": [m, "特別", "ノート", "利用者", "利用者‐会話", "Wikipedia", "Wikipedia‐ノート", "画像", "画像‐ノート", "MediaWiki", "MediaWiki‐ノート", "Template", "Template‐ノート", "Help", "Help‐ノート", "Category", "Category‐ノート"],
"ka": ["მედია", "სპეციალური", "განხილვა", "მომხმარებელი", "მომხმარებელი განხილვა", "ვიკიპედია", "ვიკიპედია განხილვა", "სურათი", "სურათი განხილვა", "მედიავიკი", "მედიავიკი განხილვა", "თარგი", "თარგი განხილვა", "დახმარება", "დახმარება განხილვა", "კატეგორია", "კატეგორია განხილვა"],
"ko": [m, "특수기능", "토론", "사용자", "사용자토론", "위키백과", "위키백과토론", "그림", "그림토론", "분류", "분류토론", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk"],
"ku": ["Medya", "Taybet", "Nîqaş", "Bikarhêner", "Bikarhêner nîqaş", "Wîkîpediya", "Wîkîpediya nîqaş", "Wêne", "Wêne nîqaş", "MediaWiki", "MediaWiki nîqaş", "Şablon", "Şablon nîqaş", "Alîkarî", "Alîkarî nîqaş", "Kategorî", "Kategorî nîqaş"],
"la": ["Specialis", "Disputatio", "Usor", "Disputatio Usoris", "Vicipaedia", "Disputatio Vicipaediae", "Imago", "Disputatio Imaginis", "MediaWiki", "Disputatio MediaWiki", "Formula", "Disputatio Formulae", "Auxilium", "Disputatio Auxilii", "Categoria", "Disputatio Categoriae", m],
"li": [m, "Speciaal", "Euverlik", "Gebroeker", "Euverlik gebroeker", "Wikipedia", "Euverlik Wikipedia", "Aafbeilding", "Euverlik afbeelding", "MediaWiki", "Euverlik MediaWiki", "Sjabloon", "Euverlik sjabloon", "Help", "Euverlik help", "Kategorie", "Euverlik kategorie"],
"lt": ["Medija", "Specialus", "Aptarimas", "Naudotojas", "Naudotojo aptarimas", "Wikipedia", "Wikipedia aptarimas", "Vaizdas", "Vaizdo aptarimas", "MediaWiki", "MediaWiki aptarimas", "Šablonas", "Šablono aptarimas", "Pagalba", "Pagalbos aptarimas", "Kategorija", "Kategorijos aptarimas"],
"mk": ["Медија", "Специјални", "Разговор", "Корисник", "Корисник разговор", "Wikipedia", "Wikipedia разговор", "Слика", "Слика разговор", "МедијаВики", "МедијаВики разговор", "Шаблон", "Шаблон разговор", "Помош", "Помош разговор", "Категорија", "Категорија разговор"],
"ms": [m, "Istimewa", "Perbualan", "Pengguna", "Perbualan Pengguna", "Wikipedia", "Perbualan Wikipedia", "Imej", "Imej Perbualan", "MediaWiki", "MediaWiki Perbualan", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"mt": [m, "Special", "Talk", "User", "User talk", "Wikipedija", "Wikipedija talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"nap": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "Immagine", "Discussioni immagine", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria"],
"nds": [m, "Spezial", "Diskuschoon", "Bruker", "Bruker Diskuschoon", "Wikipedia", "Wikipedia Diskuschoon", "Bild", "Bild Diskuschoon", "MediaWiki", "MediaWiki Diskuschoon", "Vörlaag", "Vörlaag Diskuschoon", "Hülp", "Hülp Diskuschoon", "Kategorie", "Kategorie Diskuschoon"],
"nl": [m, "Speciaal", "Overleg", "Gebruiker", "Overleg gebruiker", "Wikipedia", "Overleg Wikipedia", "Bestand", "Overleg bestand", "MediaWiki", "Overleg MediaWiki", "Sjabloon", "Overleg sjabloon", "Help", "Overleg help", "Categorie", "Overleg categorie"],
"nn": ["Filpeikar", "Spesial", "Diskusjon", "Brukar", "Brukardiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Fil", "Fildiskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"no": ["Medium", "Spesial", "Diskusjon", "Bruker", "Brukerdiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Bilde", "Bildediskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"nv": [m, "Special", "Naaltsoos baa yinísht'į́", "Choinish'įįhí", "Choinish'įįhí baa yinísht'į́", "Wikiibíídiiya", "Wikiibíídiiya baa yinísht'į́", "E'elyaaígíí", "E'elyaaígíí baa yinísht'į́", "MediaWiki", "MediaWiki baa yinísht'į́", "Template", "Template talk", "Aná'álwo'", "Aná'álwo' baa yinísht'į́", "T'ááłáhági át'éego", "T'ááłáhági át'éego baa yinísht'į́"],
"oc": ["Especial", "Discutir", "Utilisator", "Discutida Utilisator", "Oiquipedià", "Discutida Oiquipedià", "Image", "Discutida Image", "MediaWiki", "MediaWiki talk", "Template", "Template talk", m, "Help", "Help talk", "Category", "Category talk"],
"os": [m, "Сæрмагонд", "Дискусси", "Архайæг", "Архайæджы дискусси", "Wikipedia", "0", "Ныв", "Нывы тыххæй дискусси", "MediaWiki", "Дискусси MediaWiki", "Шаблон", "Шаблоны тыххæй дискусси", "Æххуыс", "Æххуысы тыххæй дискусси", "Категори", "Категорийы тыххæй дискусси"],
"pa": ["ਮੀਡੀਆ", "ਖਾਸ", "ਚਰਚਾ", "ਮੈਂਬਰ", "ਮੈਂਬਰ ਚਰਚਾ", "Wikipedia", "Wikipedia ਚਰਚਾ", "ਤਸਵੀਰ", "ਤਸਵੀਰ ਚਰਚਾ", "ਮੀਡੀਆਵਿਕਿ", "ਮੀਡੀਆਵਿਕਿ ਚਰਚਾ", "ਨਮੂਨਾ", "ਨਮੂਨਾ ਚਰਚਾ", "ਮਦਦ", "ਮਦਦ ਚਰਚਾ", "ਸ਼੍ਰੇਣੀ", "ਸ਼੍ਰੇਣੀ ਚਰਚਾ"],
"pl": [m, "Specjalna", "Dyskusja", "Wikipedysta", "Dyskusja wikipedysty", "Wikipedia", "Dyskusja Wikipedii", "Plik", "Dyskusja pliku", "MediaWiki", "Dyskusja MediaWiki", "Szablon", "Dyskusja szablonu", "Pomoc", "Dyskusja pomocy", "Kategoria", "Dyskusja kategorii", "Portal", "Dyskusja portalu","Wikiprojekt","Dyskusja Wikiprojektu"],
"pt": [m, "Especial", "Discussão", "Usuário", "Usuário Discussão", "Wikipedia", "Wikipedia Discussão", "Imagem", "Imagem Discussão", "MediaWiki", "MediaWiki Discussão", "Predefinição", "Predefinição Discussão", "Ajuda", "Ajuda Discussão", "Categoria", "Categoria Discussão"],
"ro": [m, "Special", "Discuţie", "Utilizator", "Discuţie Utilizator", "Wikipedia", "Discuţie Wikipedia", "Imagine", "Discuţie Imagine", "MediaWiki", "Discuţie MediaWiki", "Format", "Discuţie Format", "Ajutor", "Discuţie Ajutor", "Categorie", "Discuţie Categorie"],
"ru": ["Медиа", "Служебная", "Обсуждение", "Участник", "Обсуждение участника", "Википедия", "Обсуждение Википедии", "Изображение", "Обсуждение изображения", "MediaWiki", "Обсуждение MediaWiki", "Шаблон", "Обсуждение шаблона", "Справка", "Обсуждение справки", "Категория", "Обсуждение категории"],
"sc": ["Speciale", "Contièndha", "Utente", "Utente discussioni", "Wikipedia", "Wikipedia discussioni", "Immàgini", "Immàgini contièndha", m, "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sk": ["Médiá", "Špeciálne", "Diskusia", "Redaktor", "Diskusia s redaktorom", "Wikipédia", "Diskusia k Wikipédii", "Obrázok", "Diskusia k obrázku", "MediaWiki", "Diskusia k MediaWiki", "Šablóna", "Diskusia k šablóne", "Pomoc", "Diskusia k pomoci", "Kategória", "Diskusia ku kategórii"],
"sl": [m, "Posebno", "Pogovor", "Uporabnik", "Uporabniški pogovor", "Wikipedija", "Pogovor k Wikipediji", "Slika", "Pogovor k sliki", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sq": [m, "Speciale", "Diskutim", "Përdoruesi", "Përdoruesi diskutim", "Wikipedia", "Wikipedia diskutim", "Figura", "Figura diskutim", "MediaWiki", "MediaWiki diskutim", "Stampa", "Stampa diskutim", "Ndihmë", "Ndihmë diskutim", "Category", "Category talk"],
"sr": [m, "Посебно", "Разговор", "Корисник", "Разговор са корисником", "Википедија", "Разговор о Википедији", "Слика", "Разговор о слици", "МедијаВики", "Разговор о МедијаВикију", "Шаблон", "Разговор о шаблону", "Помоћ", "Разговор о помоћи", "Категорија", "Разговор о категорији", "Портал", "Разговор о порталу"],
"sv": [m, "Special", "Diskussion", "Användare", "Användardiskussion", "Wikipedia", "Wikipediadiskussion", "Bild", "Bilddiskussion", "MediaWiki", "MediaWiki diskussion", "Mall", "Malldiskussion", "Hjälp", "Hjälp diskussion", "Kategori", "Kategoridiskussion"],
"ta": ["ஊடகம்", "சிறப்பு", "பேச்சு", "பயனர்", "பயனர் பேச்சு", "Wikipedia", "Wikipedia பேச்சு", "படிமம்", "படிமப் பேச்சு", "மீடியாவிக்கி", "மீடியாவிக்கி பேச்சு", "வார்ப்புரு", "வார்ப்புரு பேச்சு", "உதவி", "உதவி பேச்சு", "பகுப்பு", "பகுப்பு பேச்சு"],
"th": [m, "พิเศษ", "พูดคุย", "ผู้ใช้", "คุยเกี่ยวกับผู้ใช้", "Wikipedia", "Wikipedia talk", "ภาพ", "คุยเกี่ยวกับภาพ", "MediaWiki", "คุยเกี่ยวกับ MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"tlh": ["Doch", "le'", "ja'chuq", "lo'wI'", "lo'wI' ja'chuq", "wIqIpe'DIya", "wIqIpe'DIya ja'chuq", "nagh beQ", "nagh beQ ja'chuq", "MediaWiki", "MediaWiki ja'chuq", "chen'ay'", "chen'ay' ja'chuq", "QaH", "QaH ja'chuq", "Segh", "Segh ja'chuq"],
"tr": [m, "Özel", "Tartışma", "Kullanıcı", "Kullanıcı mesaj", "Vikipedi", "Vikipedi tartışma", "Resim", "Resim tartışma", "MedyaViki", "MedyaViki tartışma", "Şablon", "Şablon tartışma", "Yardım", "Yardım tartışma", "Kategori", "Kategori tartışma"],
"tt": [m, "Maxsus", "Bäxäs", "Äğzä", "Äğzä bäxäse", "Wikipedia", "Wikipedia bäxäse", "Räsem", "Räsem bäxäse", "MediaWiki", "MediaWiki bäxäse", "Ürnäk", "Ürnäk bäxäse", "Yärdäm", "Yärdäm bäxäse", "Törkem", "Törkem bäxäse"],
"uk": ["Медіа", "Спеціальні", "Обговорення", "Користувач", "Обговорення користувача", "Wikipedia", "Обговорення Wikipedia", "Зображення", "Обговорення зображення", "MediaWiki", "Обговорення MediaWiki", "Шаблон", "Обговорення шаблону", "Довідка", "Обговорення довідки", "Категорія", "Обговорення категорії"],
"vi": ["Phương tiện", "Đặc biệt", "Thảo luận", "Thành viên", "Thảo luận Thành viên", "Wikipedia", "Thảo luận Wikipedia", "Hình", "Thảo luận Hình", "MediaWiki", "Thảo luận MediaWiki", "Tiêu bản", "Thảo luận Tiêu bản", "Trợ giúp", "Thảo luận Trợ giúp", "Thể loại", "Thảo luận Thể loại"],
"wa": [m, "Sipeciås", "Copene", "Uzeu", "Uzeu copene", "Wikipedia", "Wikipedia copene", "Imådje", "Imådje copene", "MediaWiki", "MediaWiki copene", "Modele", "Modele copene", "Aidance", "Aidance copene", "Categoreye", "Categoreye copene"]
//</NOLITE>
};
pg.ns.list = nsLists[pg.wiki.lang] || list;
pg.ns.index = nsIndex;
}
function namespaceListToRegex(list) {return RegExp('^('+list.join('|').split(' ').join('[ _]')+'):');};
// function setNamespaceList is ugly as sin, moved to later in the code
function setNamespaces() {
setNamespaceList();
pg.ns.withTalkList=[null]; // NB root (article) corresponds with this entry, null
pg.ns.talkList=[pg.ns.list[2]];
// if the number of namespaces changes then this will have to be changed
// maybe the easiest way is to specify the arrays by hand as in the comments following the loop
for (var i=3; i+1<pg.ns.list.length; i=i+2) {
pg.ns.withTalkList.push(pg.ns.list[i]);
pg.ns.talkList.push(pg.ns.list[i+1]);
}
// ALERT! SILLY HARDCODED VALUES FOLLOW!
pg.ns.special = pg.ns.list[pg.ns.index.Special];
pg.ns.image = pg.ns.list[pg.ns.index.File];
pg.ns.user = pg.ns.list[pg.ns.index.User];
pg.ns.usertalk = pg.ns.list[pg.ns.index['User talk']];
pg.ns.category = pg.ns.list[pg.ns.index.Category];
pg.ns.template = pg.ns.list[pg.ns.index.Template];
pg.ns.nonArticleList=pg.ns.list.slice(0,2).concat(pg.ns.list.slice(2));
}
function setRedirs() {
var r='redirect';
var R='REDIRECT';
var redirLists={
//<NOLITE>
'ar': [ R, 'تحويل' ],
'be': [ r, 'перанакіраваньне' ],
'bg': [ r, 'пренасочване', 'виж' ],
'bs': [ r, 'Preusmjeri', 'preusmjeri', 'PREUSMJERI' ],
'cs': [ R, 'PŘESMĚRUJ' ],
'cy': [ r, 'ail-cyfeirio' ],
'de': [ R, 'WEITERLEITUNG' ],
'eo': [ R, 'ALIDIREKTU', 'ALIDIREKTI' ],
'et': [ r, 'suuna' ],
'ga': [ r, 'athsheoladh' ],
'gl': [ r, 'REDIRECCIÓN', 'REDIRECIONAMENTO'],
'he': [ R, 'הפניה' ],
'hu': [ R, 'ÁTIRÁNYÍTÁS' ],
'is': [ r, 'tilvísun', 'TILVÍSUN' ],
'it': [ R, 'RINVIA', 'Rinvia'],
'mk': [ r, 'пренасочување', 'види' ],
'nds': [ r, 'wiederleiden' ],
'nl': [ R, 'DOORVERWIJZING' ],
'nn': [ r, 'omdiriger' ],
'pl': [ R, 'PATRZ', 'PRZEKIERUJ', 'TAM' ],
'pt': [ R, 'redir' ],
'ru': [ R, 'ПЕРЕНАПРАВЛЕНИЕ', 'ПЕРЕНАПР' ],
'sk': [ r, 'presmeruj' ],
'sr': [ r, 'Преусмери', 'преусмери', 'ПРЕУСМЕРИ', 'Preusmeri', 'preusmeri', 'PREUSMERI' ],
'tt': [ R, 'yünältü', 'перенаправление', 'перенапр' ],
'vi': [ r, 'đổi' ] // no comma
//</NOLITE>
};
var redirList=redirLists[ pg.wiki.lang ] || [r, R];
// Mediawiki is very tolerant about what comes after the #redirect at the start
pg.re.redirect=RegExp('^\\s*[#](' + redirList.join('|') + ').*?\\[{2}([^\\|\\]]*)(|[^\\]]*)?\\]{2}\\s*(.*)', 'i');
}
function setInterwiki() {
if (pg.wiki.wikimedia) {
pg.wiki.interwiki='aa|ab|af|ak|als|am|an|ang|ar|arc|arz|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|dsb|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|hsb|ht|hu|hy|hz|ia|id|ie|ig|ii|ik|ilo|io|is|it|iu|ja|jbo|jv|ka|kg|ki|kj|kk|kl|km|kn|ko|kr|ks|ksh|ku|kv|kw|ky|la|lad|lan|lb|lg|li|ln|lmo|lo|lt|lu|lv|map-bms|mg|mh|mi|mk|ml|mn|mo|mr|ms|mt|stq|mus|my|na|nah|nap|nb|nd|nds|nds-nl|ne|new|ng|nl|nn|no|nr|nv|ny|oc|oj|om|or|os|pa|pam|pi|pl|pms|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|stq|su|sv|sw|szl|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|zh-yue|zu';
pg.re.interwiki=RegExp('^'+pg.wiki.interwiki+':');
} else {
pg.wiki.interwiki=null;
pg.re.interwiki=RegExp('^$');
}
}
function nsRe(label) {
var l=upcaseFirst(label);
return nsRegexString(pg.ns.list[pg.ns.index[l]], l);
}
function nsReImage() {
var str = pg.ns.list[pg.ns.index["File"]];
return '(?:' + str + '|' + encodeURI(str) + '|' + upcaseFirst(str) + '|Image|' + upcaseFirst('Image') + ')';
}
function nsRegexString(str, extra) {
return '(?:' + str + '|' + encodeURI(str) + (extra ? '|' + extra : '') + ')';
}
function nsRegex(str, extra) {
return RegExp(nsRegexString(str, extra));
}
// ENDFILE: namespaces.js
// STARTFILE: selpop.js
//<NOLITE>
function getEditboxSelection() {
// see http://www.webgurusforum.com/8/12/0
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
// IE, Opera
if (document.selection) { return document.selection.createRange().text; }
// Mozilla
var selStart = editbox.selectionStart;
var selEnd = editbox.selectionEnd;
return (editbox.value).substring(selStart, selEnd);
}
function doSelectionPopup() {
// popup if the selection looks like [[foo|anything afterwards at all
// or [[foo|bar]]text without ']]'
// or [[foo|bar]]
var sel=getEditboxSelection();
var open=sel.indexOf('[[');
var pipe=sel.indexOf('|');
var close=sel.indexOf(']]');
if (open == -1 || ( pipe == -1 && close == -1) ) { return; }
if (pipe != -1 && open > pipe || close != -1 && open > close) { return; }
if (getValueOf('popupOnEditSelection')=='boxpreview') {
return doSeparateSelectionPopup(sel);
}
var article=new Title(sel.substring(open+2, (pipe < 0) ? close : pipe)).urlString();
if (close > 0 && sel.substring(close+2).indexOf('[[') >= 0) {
return;
}
var a=document.createElement('a');
a.href=pg.wiki.titlebase + article;
mouseOverWikiLink2(a);
if (a.navpopup) {
a.navpopup.addHook(function(){runStopPopupTimer(a.navpopup);}, 'unhide', 'after');
}
}
function doSeparateSelectionPopup(str) {
var div=document.getElementById('selectionPreview');
if (!div) {
div = document.createElement('div');
div.id='selectionPreview';
try { var box=document.editform.wpTextbox1; }
catch (oopsie) { return; }
box.parentNode.insertBefore(div, box);
}
div.innerHTML=wiki2html(str);
div.ranSetupTooltipsAlready = false;
popTipsSoonFn('selectionPreview')();
}
//</NOLITE>
// ENDFILE: selpop.js
// STARTFILE: navpopup.js
/**
@fileoverview Defines two classes: {@link Navpopup} and {@link Mousetracker}.
<code>Navpopup</code> describes popups: when they appear, where, what
they look like and so on.
<code>Mousetracker</code> "captures" the mouse using
<code>document.onmousemove</code>.
*/
/**
Creates a new Mousetracker.
@constructor
@class The Mousetracker class. This monitors mouse movements and manages associated hooks.
*/
function Mousetracker() {
/**
Interval to regularly run the hooks anyway, in milliseconds.
@type Integer
*/
this.loopDelay=400;
/**
Timer for the loop.
@type Timer
*/
this.timer=null;
/**
Flag - are we switched on?
@type Boolean
*/
this.active=false;
/**
Flag - are we probably inaccurate, i.e. not reflecting the actual mouse position?
*/
this.dirty=true;
/**
Array of hook functions.
@private
@type Array
*/
this.hooks=[];
}
/**
Adds a hook, to be called when we get events.
@param {Function} f A function which is called as
<code>f(x,y)</code>. It should return <code>true</code> when it
wants to be removed, and <code>false</code> otherwise.
*/
Mousetracker.prototype.addHook = function (f) {
this.hooks.push(f);
};
/**
Runs hooks, passing them the x
and y coords of the mouse. Hook functions that return true are
passed to {@link Mousetracker#removeHooks} for removal.
@private
*/
Mousetracker.prototype.runHooks = function () {
if (!this.hooks || !this.hooks.length) { return; }
//log('Mousetracker.runHooks; we got some hooks to run');
var remove=false;
var removeObj={};
// this method gets called a LOT -
// pre-cache some variables
var x=this.x, y=this.y, len = this.hooks.length;
for (var i=0; i<len; ++i) {
//~ run the hook function, and remove it if it returns true
if (this.hooks[i](x, y)===true) {
remove=true;
removeObj[i]=true;
}
}
if (remove) { this.removeHooks(removeObj); }
};
/**
Removes hooks.
@private
@param {Object} removeObj An object whose keys are the index
numbers of functions for removal, with values that evaluate to true
*/
Mousetracker.prototype.removeHooks = function(removeObj) {
var newHooks=[];
var len = this.hooks.length;
for (var i=0; i<len; ++i) {
if (! removeObj[i]) { newHooks.push(this.hooks[i]); }
}
this.hooks=newHooks;
};
/**
Event handler for mouse wiggles.
We simply grab the event, set x and y and run the hooks.
This makes the cpu all hot and bothered :-(
@private
@param {Event} e Mousemove event
*/
Mousetracker.prototype.track=function (e) {
//~ Apparently this is needed in IE.
e = e || window.event;
var x, y;
if (e) {
if (e.pageX) { x=e.pageX; y=e.pageY; }
else if (typeof e.clientX!='undefined') {
var left, top, docElt = window.document.documentElement;
if (docElt) { left=docElt.scrollLeft; }
left = left || window.document.body.scrollLeft || window.document.scrollLeft || 0;
if (docElt) { top=docElt.scrollTop; }
top = top || window.document.body.scrollTop || window.document.scrollTop || 0;
x=e.clientX + left;
y=e.clientY + top;
} else { return; }
this.setPosition(x,y);
}
};
/**
Sets the x and y coordinates stored and takes appropriate action,
running hooks as appropriate.
@param {Integer} x, y Screen coordinates to set
*/
Mousetracker.prototype.setPosition=function(x,y) {
this.x = x;
this.y = y;
if (this.dirty || this.hooks.length === 0) { this.dirty=false; return; }
if (typeof this.lastHook_x != 'number') { this.lastHook_x = -100; this.lastHook_y=-100; }
var diff = (this.lastHook_x - x)*(this.lastHook_y - y);
diff = (diff >= 0) ? diff : -diff;
if ( diff > 1 ) {
this.lastHook_x=x;
this.lastHook_y=y;
if (this.dirty) { this.dirty = false; }
else { this.runHooks(); }
}
}
/**
Sets things in motion, unless they are already that is, registering an event handler on <code>document.onmousemove</code>.
A half-hearted attempt is made to preserve the old event handler if there is one.
*/
Mousetracker.prototype.enable = function () {
if (this.active) { return; }
this.active=true;
//~ Save the current handler for mousemove events. This isn't too
//~ robust, of course.
this.savedHandler=document.onmousemove;
//~ Gotta save @tt{this} again for the closure, and use apply for
//~ the member function.
var savedThis=this;
document.onmousemove=function (e) {savedThis.track.apply(savedThis, [e]);};
if (this.loopDelay) { this.timer = setInterval(function() { //log('loop delay in mousetracker is working');
savedThis.runHooks();}, this.loopDelay); }
};
/**
Disables the tracker, removing the event handler.
*/
Mousetracker.prototype.disable = function () {
if (!this.active) { return; }
if (typeof this.savedHandler=='function') {
document.onmousemove=this.savedHandler;
} else { delete document.onmousemove; }
if (this.timer) { clearInterval(this.timer); }
this.active=false;
};
/**
Creates a new Navpopup.
Gets a UID for the popup and
@param init Contructor object. If <code>init.draggable</code> is true or absent, the popup becomes draggable.
@constructor
@class The Navpopup class. This generates popup hints, and does some management of them.
*/
function Navpopup(init) {
//alert('new Navpopup(init)');
/** UID for each Navpopup instance.
Read-only.
@type integer
*/
this.uid=Navpopup.uid++;
/**
Read-only flag for current visibility of the popup.
@type boolean
@private
*/
this.visible=false;
/** Flag to be set when we want to cancel a previous request to
show the popup in a little while.
@private
@type boolean
*/
this.noshow=false;
/** Categorised list of hooks.
@see #runHooks
@see #addHook
@private
@type Object
*/
this.hooks={
'create': [],
'unhide': [],
'hide': []
};
/** list of unique IDs of hook functions, to avoid duplicates
@private
*/
this.hookIds={};
/** List of downloads associated with the popup.
@private
@type Array
*/
this.downloads=[];
/** Number of uncompleted downloads.
@type integer
*/
this.pending=null;
/** Tolerance in pixels when detecting whether the mouse has left the popup.
@type integer
*/
this.fuzz=5;
/** Flag to toggle running {@link #limitHorizontalPosition} to regulate the popup's position.
@type boolean
*/
this.constrained=true;
/** The popup width in pixels.
@private
@type integer
*/
this.width=0;
/** The popup width in pixels.
@private
@type integer
*/
this.height=0;
/** The main content DIV element.
@type HTMLDivElement
*/
this.mainDiv=null;
this.createMainDiv();
// if (!init || typeof init.popups_draggable=='undefined' || init.popups_draggable) {
// this.makeDraggable(true);
// }
}
/**
A UID for each Navpopup. This constructor property is just a counter.
@type integer
@private
*/
Navpopup.uid=0;
/**
Retrieves the {@link #visible} attribute, indicating whether the popup is currently visible.
@type boolean
*/
Navpopup.prototype.isVisible=function() {
return this.visible;
};
/**
Repositions popup using CSS style.
@private
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@param {boolean} noLimitHor Don't call {@link #limitHorizontalPosition}
*/
Navpopup.prototype.reposition= function (x,y, noLimitHor) {
log ('reposition('+x+','+y+','+noLimitHor+')');
if (typeof x != 'undefined' && x!==null) { this.left=x; }
if (typeof y != 'undefined' && y!==null) { this.top=y; }
if (typeof this.left != 'undefined' && typeof this.top != 'undefined') {
this.mainDiv.style.left=this.left + 'px';
this.mainDiv.style.top=this.top + 'px';
}
if (!noLimitHor) { this.limitHorizontalPosition(); }
//console.log('navpop'+this.uid+' - (left,top)=(' + this.left + ',' + this.top + '), css=('
//+ this.mainDiv.style.left + ',' + this.mainDiv.style.top + ')');
};
/**
Prevents popups from being in silly locations. Hopefully.
Should not be run if {@link #constrained} is true.
@private
*/
Navpopup.prototype.limitHorizontalPosition=function() {
if (!this.constrained || this.tooWide) { return; }
this.updateDimensions();
var x=this.left;
var w=this.width;
var cWidth=document.body.clientWidth;
// log('limitHorizontalPosition: x='+x+
// ', this.left=' + this.left +
// ', this.width=' + this.width +
// ', cWidth=' + cWidth);
if ( (x+w) >= cWidth ||
( x > 0 && this.maxWidth && this.width < this.maxWidth && this.height > this.width
&& x > cWidth - this.maxWidth ) ) {
// This is a very nasty hack. There has to be a better way!
// We find the "natural" width of the div by positioning it at the far left
// then reset it so that it should be flush right (well, nearly)
this.mainDiv.style.left='-10000px';
this.mainDiv.style.width = this.maxWidth + 'px';
var naturalWidth=parseInt(this.mainDiv.offsetWidth, 10);
var newLeft=cWidth - naturalWidth - 1;
if (newLeft < 0) { newLeft = 0; this.tooWide=true; } // still unstable for really wide popups?
log ('limitHorizontalPosition: moving to ('+newLeft + ','+ this.top+');' + ' naturalWidth=' + naturalWidth + ', clientWidth=' + cWidth);
this.reposition(newLeft, null, true);
}
};
/**
Counter indicating the z-order of the "highest" popup.
We start the z-index at 1000 so that popups are above everything
else on the screen.
@private
@type integer
*/
Navpopup.highest=1000;
/**
Brings popup to the top of the z-order.
We increment the {@link #highest} property of the contructor here.
@private
*/
Navpopup.prototype.raise = function () {
this.mainDiv.style.zIndex=Navpopup.highest + 1;
++Navpopup.highest;
};
/**
Shows the popup provided {@link #noshow} is not true.
Updates the position, brings the popup to the top of the z-order and unhides it.
*/
Navpopup.prototype.show = function () {
//document.title+='s';
if (this.noshow) { return; }
//document.title+='t';
this.reposition();
this.raise();
this.unhide();
};
/**
Runs the {@link #show} method in a little while, unless we're
already visible.
@param {integer} time Delay in milliseconds
@see #showSoonIfStable
*/
Navpopup.prototype.showSoon = function (time) {
if (this.visible) { return; }
this.noshow=false;
//~ We have to save the value of @tt{this} so that the closure below
//~ works.
var savedThis=this;
//this.start_x = Navpopup.tracker.x;
//this.start_y = Navpopup.tracker.y;
setTimeout(function () {
if (Navpopup.tracker.active) {
savedThis.reposition.apply(savedThis, [Navpopup.tracker.x + 2, Navpopup.tracker.y + 2]);
}
//~ Have to use apply to invoke his member function here
savedThis.show.apply(savedThis, []);
}, time);
};
/**
Checks to see if the mouse pointer has
stabilised (checking every <code>time</code>/2 milliseconds) and runs the
{@link #show} method if it has. This method makes {@link #showSoon} redundant.
@param {integer} time The minimum time (ms) before the popup may be shown.
*/
Navpopup.prototype.showSoonIfStable = function (time) {
log ('showSoonIfStable, time='+time);
if (this.visible) { return; }
this.noshow = false;
//~ initialize these variables so that we never run @tt{show} after
//~ just half the time
this.stable_x = -10000; this.stable_y = -10000;
var stableShow = function() {
log('stableShow called');
var new_x = Navpopup.tracker.x, new_y = Navpopup.tracker.y;
var dx = savedThis.stable_x - new_x, dy = savedThis.stable_y - new_y;
var fuzz2 = 0; // savedThis.fuzz * savedThis.fuzz;
//document.title += '[' + [savedThis.stable_x,new_x, savedThis.stable_y,new_y, dx, dy, fuzz2].join(',') + '] ';
if ( dx * dx <= fuzz2 && dy * dy <= fuzz2 ) {
log ('mouse is stable');
clearInterval(savedThis.showSoonStableTimer);
savedThis.reposition.apply(savedThis, [new_x + 2, new_y + 2]);
savedThis.show.apply(savedThis, []);
return;
}
savedThis.stable_x = new_x; savedThis.stable_y = new_y;
};
var savedThis = this;
this.showSoonStableTimer = setInterval(stableShow, time/2);
};
/**
Makes the popup unhidable until we call {@link #unstick}.
*/
Navpopup.prototype.stick=function() {
this.noshow=false;
this.sticky=true;
};
/**
Allows the popup to be hidden.
*/
Navpopup.prototype.unstick=function() {
this.sticky=false;
};
/**
Sets the {@link #noshow} flag and hides the popup. This should be called
when the mouse leaves the link before
(or after) it's actually been displayed.
*/
Navpopup.prototype.banish = function () {
log ('banish called');
// hide and prevent showing with showSoon in the future
this.noshow=true;
if (this.showSoonStableTimer) {
log('clearing showSoonStableTimer');
clearInterval(this.showSoonStableTimer);
}
this.hide();
};
/**
Runs hooks added with {@link #addHook}.
@private
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
*/
Navpopup.prototype.runHooks = function (key, when) {
if (!this.hooks[key]) { return; }
var keyHooks=this.hooks[key];
var len=keyHooks.length;
for (var i=0; i< len; ++i) {
if (keyHooks[i] && keyHooks[i].when == when) {
if (keyHooks[i].hook.apply(this, [])) {
// remove the hook
if (keyHooks[i].hookId) {
delete this.hookIds[keyHooks[i].hookId];
}
keyHooks[i]=null;
}
}
}
};
/**
Adds a hook to the popup. Hook functions are run with <code>this</code> set to refer to the Navpopup instance, and no arguments.
@param {Function} hook The hook function. Functions that return true are deleted.
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
@param {String} uid A truthy string identifying the hook function; if it matches another hook in this position, it won't be added again.
*/
Navpopup.prototype.addHook = function ( hook, key, when, uid ) {
when = when || 'after';
if (!this.hooks[key]) { return; }
// if uid is specified, don't add duplicates
var hookId=null;
if (uid) {
hookId=[key,when,uid].join('|');
if (this.hookIds[hookId]) {
return;
}
this.hookIds[hookId]=true;
}
this.hooks[key].push( {hook: hook, when: when, hookId: hookId} );
};
/**
Creates the main DIV element, which contains all the actual popup content.
Runs hooks with key 'create'.
@private
*/
Navpopup.prototype.createMainDiv = function () {
if (this.mainDiv) { return; }
this.runHooks('create', 'before');
var mainDiv=document.createElement('div');
var savedThis=this;
mainDiv.onclick=function(e) {savedThis.onclickHandler(e);};
mainDiv.className=(this.className) ? this.className : 'navpopup_maindiv';
mainDiv.id=mainDiv.className + this.uid;
mainDiv.style.position='absolute';
mainDiv.style.display='none';
mainDiv.className='navpopup';
// easy access to javascript object through DOM functions
mainDiv.navpopup=this;
this.mainDiv=mainDiv;
document.body.appendChild(mainDiv);
this.runHooks('create', 'after');
};
/**
Calls the {@link #raise} method.
@private
*/
Navpopup.prototype.onclickHandler=function(e) {
this.raise();
};
/**
Makes the popup draggable, using a {@link Drag} object.
@private
*/
Navpopup.prototype.makeDraggable=function(handleName) {
if (!this.mainDiv) { this.createMainDiv(); }
var drag=new Drag();
if (!handleName) {
drag.startCondition=function(e) {
try { if (!e.shiftKey) { return false; } } catch (err) { return false; }
return true;
};
}
var dragHandle = document.getElementById(handleName) || this.mainDiv;
var np=this;
drag.endHook=function(x,y) {
Navpopup.tracker.dirty=true;
np.reposition(x,y);
};
drag.init(dragHandle,this.mainDiv);
};
/** Hides the popup using CSS. Runs hooks with key 'hide'.
Sets {@link #visible} appropriately. {@link #banish} should be called externally instead of this method.
@private
*/
Navpopup.prototype.hide = function () {
this.runHooks('hide', 'before');
this.abortDownloads();
if (this.sticky) { return; }
if (typeof this.visible != 'undefined' && this.visible) {
this.mainDiv.style.display='none';
this.visible=false;
}
this.runHooks('hide', 'after');
};
/** Shows the popup using CSS. Runs hooks with key 'unhide'.
Sets {@link #visible} appropriately. {@link #show} should be called externally instead of this method.
@private
*/
Navpopup.prototype.unhide = function () {
this.runHooks('unhide', 'before');
if (typeof this.visible != 'undefined' && !this.visible) {
this.mainDiv.style.display='inline';
this.visible=true;
}
this.runHooks('unhide', 'after');
};
/**
Sets the <code>innerHTML</code> attribute of the main div containing the popup content.
@param {String} html The HTML to set.
*/
Navpopup.prototype.setInnerHTML = function (html) {
this.mainDiv.innerHTML = html;
};
/**
Updates the {@link #width} and {@link #height} attributes with the CSS properties.
@private
*/
Navpopup.prototype.updateDimensions = function () {
this.width=parseInt(this.mainDiv.offsetWidth, 10);
this.height=parseInt(this.mainDiv.offsetHeight, 10);
};
/**
Checks if the point (x,y) is within {@link #fuzz} of the
{@link #mainDiv}.
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@type boolean
*/
Navpopup.prototype.isWithin = function(x,y) {
//~ If we're not even visible, no point should be considered as
//~ being within the popup.
if (!this.visible) { return false; }
this.updateDimensions();
var fuzz=this.fuzz || 0;
//~ Use a simple box metric here.
return (x+fuzz >= this.left && x-fuzz <= this.left + this.width &&
y+fuzz >= this.top && y-fuzz <= this.top + this.height);
};
/**
Adds a download to {@link #downloads}.
@param {Downloader} download
*/
Navpopup.prototype.addDownload=function(download) {
if (!download) { return; }
this.downloads.push(download);
};
/**
Aborts the downloads listed in {@link #downloads}.
@see Downloader#abort
*/
Navpopup.prototype.abortDownloads=function() {
for(var i=0; i<this.downloads.length; ++i) {
var d=this.downloads[i];
if (d && d.abort) { d.abort(); }
}
this.downloads=[];
};
/**
A {@link Mousetracker} instance which is a property of the constructor (pseudo-global).
*/
Navpopup.tracker=new Mousetracker();
// ENDFILE: navpopup.js
// STARTFILE: diff.js
//<NOLITE>
/*
* Javascript Diff Algorithm
* By John Resig (http://ejohn.org/) and [[:en:User:Lupin]]
*
* More Info:
* http://ejohn.org/projects/javascript-diff-algorithm/
*/
function delFmt(x) {
if (!x.length) { return ''; }
return "<del class='popupDiff'>" + x.join('') +"</del>";
}
function insFmt(x) {
if (!x.length) { return ''; }
return "<ins class='popupDiff'>" + x.join('') +"</ins>";
}
function countCrossings(a, b, i, eject) {
// count the crossings on the edge starting at b[i]
if (!b[i].row && b[i].row !== 0) { return -1; }
var count=0;
for (var j=0; j<a.length; ++j) {
if (!a[j].row && a[j].row !== 0) { continue; }
if ( (j-b[i].row)*(i-a[j].row) > 0) {
if(eject) { return true; }
count++;
}
}
return count;
}
function shortenDiffString(str, context) {
var re=RegExp('(<del[\\s\\S]*?</del>|<ins[\\s\\S]*?</ins>)');
var splitted=str.parenSplit(re);
var ret=[''];
for (var i=0; i<splitted.length; i+=2) {
if (splitted[i].length < 2*context) {
ret[ret.length-1] += splitted[i];
if (i+1<splitted.length) { ret[ret.length-1] += splitted[i+1]; }
continue;
}
else {
if (i > 0) { ret[ret.length-1] += splitted[i].substring(0,context); }
if (i+1 < splitted.length) {
ret.push(splitted[i].substring(splitted[i].length-context) +
splitted[i+1]);
}
}
}
while (ret.length > 0 && !ret[0]) { ret = ret.slice(1); }
return ret;
}
function diffString( o, n, simpleSplit ) {
var splitRe=RegExp('([[]{2}|[\]]{2}|[{]{2,3}|[}]{2,3}|[|]|=|[*:]+|\\s|\\b)');
o=o.entify(); n=n.entify();
var out, i;
if (simpleSplit) { out = diff( o.split(/\b/), n.split(/\b/) ); }
else { out = diff( o.parenSplit(splitRe), n.parenSplit(splitRe) ); }
var str = "";
var acc=[]; // accumulator for prettier output
// crossing pairings -- eg 'A B' vs 'B A' -- cause problems, so let's iron them out
// this doesn't always do things optimally but it should be fast enough
var maxOutputPair=0;
for (i=0; i<out.n.length; ++i) {
if ( out.n[i].paired ) {
if( maxOutputPair > out.n[i].row ) {
// tangle - delete pairing
out.o[ out.n[i].row ]=out.o[ out.n[i].row ].text;
out.n[i]=out.n[i].text;
}
if (maxOutputPair < out.n[i].row) { maxOutputPair = out.n[i].row; }
}
}
// output the stuff preceding the first paired old line
for (i=0; i<out.o.length && !out.o[i].paired; ++i) { acc.push( out.o[i] ); }
str += delFmt(acc); acc=[];
// main loop
for ( i = 0; i < out.n.length; ++i ) {
// output unpaired new "lines"
while ( i < out.n.length && !out.n[i].paired ) { acc.push( out.n[i++] ); }
str += insFmt(acc); acc=[];
if ( i < out.n.length ) { // this new "line" is paired with the (out.n[i].row)th old "line"
str += out.n[i].text;
// output unpaired old rows starting after this new line's partner
var m = out.n[i].row + 1;
while ( m < out.o.length && !out.o[m].paired ) { acc.push ( out.o[m++] ); }
str += delFmt(acc); acc=[];
}
}
return str;
}
// see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object
// FIXME: use obj.hasOwnProperty instead of this kludge!
window.jsReservedProperties=RegExp('^(constructor|prototype|__((define|lookup)[GS]etter)__' +
'|eval|hasOwnProperty|propertyIsEnumerable' +
'|to(Source|String|LocaleString)|(un)?watch|valueOf)$');
function diffBugAlert(word) {
if (!diffBugAlert.list[word]) {
diffBugAlert.list[word]=1;
alert('Bad word: '+word+'\n\nPlease report this bug.');
}
}
diffBugAlert.list={};
function makeDiffHashtable(src) {
var ret={};
for ( var i = 0; i < src.length; i++ ) {
if ( jsReservedProperties.test(src[i]) ) { src[i] += '<!-- -->'; }
if ( !ret[ src[i] ] ) { ret[ src[i] ] = []; }
try { ret[ src[i] ].push( i ); } catch (err) { diffBugAlert(src[i]); }
}
return ret;
}
function diff( o, n ) {
// pass 1: make hashtable ns with new rows as keys
var ns = makeDiffHashtable(n);
// pass 2: make hashtable os with old rows as keys
var os = makeDiffHashtable(o);
// pass 3: pair unique new rows and matching unique old rows
var i;
for ( i in ns ) {
if ( ns[i].length == 1 && os[i] && os[i].length == 1 ) {
n[ ns[i][0] ] = { text: n[ ns[i][0] ], row: os[i][0], paired: true };
o[ os[i][0] ] = { text: o[ os[i][0] ], row: ns[i][0], paired: true };
}
}
// pass 4: pair matching rows immediately following paired rows (not necessarily unique)
for ( i = 0; i < n.length - 1; i++ ) {
if ( n[i].paired && ! n[i+1].paired && n[i].row + 1 < o.length && ! o[ n[i].row + 1 ].paired &&
n[i+1] == o[ n[i].row + 1 ] ) {
n[i+1] = { text: n[i+1], row: n[i].row + 1, paired: true };
o[n[i].row+1] = { text: o[n[i].row+1], row: i + 1, paired: true };
}
}
// pass 5: pair matching rows immediately preceding paired rows (not necessarily unique)
for ( i = n.length - 1; i > 0; i-- ) {
if ( n[i].paired && ! n[i-1].paired && n[i].row > 0 && ! o[ n[i].row - 1 ].paired &&
n[i-1] == o[ n[i].row - 1 ] ) {
n[i-1] = { text: n[i-1], row: n[i].row - 1, paired: true };
o[n[i].row-1] = { text: o[n[i].row-1], row: i - 1, paired: true };
}
}
return { o: o, n: n };
}
//</NOLITE>
// ENDFILE: diff.js
// STARTFILE: init.js
function setSiteInfo() {
if (window.popupLocalDebug) {
pg.wiki.hostname = 'en.wikipedia.org';
} else {
pg.wiki.hostname = location.hostname; // use in preference to location.hostname for flexibility (?)
}
pg.wiki.wikimedia=RegExp('(wiki([pm]edia|source|books|news|quote|versity)|wiktionary|mediawiki)[.]org').test(pg.wiki.hostname);
pg.wiki.wikia=RegExp('[.]wikia[.]com$', 'i').test(pg.wiki.hostname);
pg.wiki.isLocal=RegExp('^localhost').test(pg.wiki.hostname);
pg.wiki.commons=( pg.wiki.wikimedia && pg.wiki.hostname != 'commons.wikimedia.org') ? 'commons.wikimedia.org' : null;
pg.wiki.lang = wgContentLanguage;
var port = location.port ? ':' + location.port : '';
pg.wiki.sitebase = pg.wiki.hostname + port;
}
function setTitleBase() {
var protocol = ( window.popupLocalDebug ? 'http:' : location.protocol );
pg.wiki.articlePath = wgArticlePath.replace(/\/\$1/, ""); // as in http://some.thing.com/wiki/Article
pg.wiki.botInterfacePath = wgScript;
pg.wiki.APIPath = wgScriptPath +"/api.php";
// default mediawiki setting is paths like http://some.thing.com/articlePath/index.php?title=foo
var titletail = pg.wiki.botInterfacePath + '?title=';
//var titletail2 = joinPath([pg.wiki.botInterfacePath, 'wiki.phtml?title=']);
// other sites may need to add code here to set titletail depending on how their urls work
pg.wiki.titlebase = protocol + '//' + pg.wiki.sitebase + titletail;
//pg.wiki.titlebase2 = protocol + '//' + joinPath([pg.wiki.sitebase, titletail2]);
pg.wiki.wikibase = protocol + '//' + pg.wiki.sitebase + pg.wiki.botInterfacePath;
pg.wiki.apiwikibase = protocol + '//' + pg.wiki.sitebase + pg.wiki.APIPath;
pg.wiki.articlebase = protocol + '//' + pg.wiki.sitebase + pg.wiki.articlePath;
pg.wiki.commonsbase = protocol + '//' + pg.wiki.commons + pg.wiki.botInterfacePath;
pg.wiki.apicommonsbase = protocol + '//' + pg.wiki.commons + pg.wiki.APIPath;
pg.re.basenames = RegExp( '^(' +
map( literalizeRegex, [ pg.wiki.titlebase, //pg.wiki.titlebase2,
pg.wiki.articlebase ]).join('|') + ')' );
}
//////////////////////////////////////////////////
// Global regexps
function setMainRegex() {
var reStart='[^:]*://';
var preTitles = literalizeRegex(wgScriptPath) + '/(?:index[.]php|wiki[.]phtml)[?]title=';
// slightly ugly hack when pg.wiki.articlePath is empty
preTitles += '|' + literalizeRegex( ( pg.wiki.articlePath ? pg.wiki.articlePath + '/': ''));
var reEnd='(' + preTitles + ')([^&?#]*)[^#]*(?:#(.+))?';
pg.re.main = RegExp(reStart + literalizeRegex(pg.wiki.sitebase) + reEnd);
}
function setRegexps() {
setMainRegex();
var sp=nsRe('Special');
pg.re.urlNoPopup=RegExp('((title=|/)' + sp + '(?:%3A|:)|section=[0-9])') ;
pg.re.contribs =RegExp('(title=|/)' + sp + '(?:%3A|:)Contributions' + '(&target=|/|/' + pg.ns.user+':)(.*)') ;
pg.re.email =RegExp('(title=|/)' + sp + '(?:%3A|:)Emailuser' + '(&target=|/|/(?:' + pg.ns.user+':)?)(.*)') ;
pg.re.backlinks =RegExp('(title=|/)' + sp + '(?:%3A|:)Whatlinkshere' + '(&target=|/)([^&]*)');
//<NOLITE>
var im=nsReImage();
// note: tries to get images in infobox templates too, e.g. movie pages, album pages etc
// (^|\[\[)image: *([^|\]]*[^|\] ]) *
// (^|\[\[)image: *([^|\]]*[^|\] ])([^0-9\]]*([0-9]+) *px)?
// $4 = 120 as in 120px
pg.re.image = RegExp('(^|\\[\\[)' + im + ': *([^|\\]]*[^|\\] ])' +
'([^0-9\\]]*([0-9]+) *px)?|(?:\\n *[|]?|[|]) *' +
'(' + getValueOf('popupImageVarsRegexp') + ')' +
' *= *(?:\\[\\[ *)?(?:' + im + ':)?' +
'([^|]*?)(?:\\]\\])? *[|]? *\\n', 'img') ;
pg.re.imageBracketCount = 6;
pg.re.category = RegExp('\\[\\[' +nsRe('Category') +
': *([^|\\]]*[^|\\] ]) *', 'i');
pg.re.categoryBracketCount = 1;
pg.re.ipUser=RegExp('('+nsRe('User')+':)?' +
'((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}' +
'(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])');
pg.re.stub= RegExp(getValueOf('popupStubRegexp'), 'im');
pg.re.disambig=RegExp(getValueOf('popupDabRegexp'), 'im');
//</NOLITE>
// FIXME replace with general parameter parsing function, this is daft
pg.re.oldid=RegExp('[?&]oldid=([^&]*)');
pg.re.diff=RegExp('[?&]diff=([^&]*)');
}
//////////////////////////////////////////////////
// miscellany
function setupCache() {
// page caching
pg.cache.pages = [];
}
function setMisc() {
pg.current.link=null;
pg.current.links=[];
pg.current.linksHash={};
setupCache();
pg.timer.checkPopupPosition=null;
pg.counter.loop=0;
// ids change with each popup: popupImage0, popupImage1 etc
pg.idNumber=0;
// for myDecodeURI
pg.misc.decodeExtras = [
{from: '%2C', to: ',' },
{from: '_', to: ' ' },
{from: '%24', to: '$'},
{from: '%26', to: '&' } // no ,
];
}
function leadingInteger(s){
var n=s.match(/^(\d*)/)[1];
if (n) { return +n; }
return null;
}
function setBrowserHacks() {
var useOriginal=false;
// browser-specific hacks
if (typeof window.opera != 'undefined') {
//if (leadingInteger(opera.version()) < 9)
{ useOriginal=true; } // v9 beta still seems to have buggy css
setDefault('popupNavLinkSeparator', ' · ');
} else if (navigator.appName=='Konqueror') {
setDefault('popupNavLinkSeparator', ' • ');
pg.flag.isKonq=true;
} else if ( navigator.vendor && navigator.vendor.toLowerCase().indexOf('apple computer')===0) {
pg.flag.isSafari=true;
var webkit=+navigator.userAgent.replace(RegExp('^.*AppleWebKit[/](\\d+).*', 'i'), '$1');
if (webkit < 420) { useOriginal=true; }
} else if (navigator.appName.indexOf("Microsoft")!=-1) {
setDefault('popupNavLinkSeparator', ' · ');
useOriginal=true;
var ver=+navigator.userAgent.replace(RegExp('^.*MSIE (\\d+).*'), '$1');
pg.flag.isIE=true;
pg.flag.IEVersion=ver;
}
if ((pg.flag.isIE && pg.flag.IEVersion < 7) || pg.flag.isKonq || (pg.flag.isSafari && webkit < 420)) {
pg.flag.linksLikeIE6=true;
}
if (useOriginal && pg.structures.original) {
setDefault('popupStructure','original');
}
}
function setupPopups() {
// NB translatable strings should be set up first (strings.js)
// basics
setupDebugging();
setSiteInfo();
setTitleBase();
setOptions(); // see options.js
// namespaces etc
setNamespaces();
setInterwiki();
// regexps
setRegexps();
setRedirs();
// other stuff
setBrowserHacks();
setMisc();
setupLivePreview();
// main deal here
setupTooltips();
Navpopup.tracker.enable();
setupPopups.completed = true;
}
// ENDFILE: init.js
// STARTFILE: navlinks.js
//<NOLITE>
//////////////////////////////////////////////////
// navlinks... let the fun begin
//
function defaultNavlinkSpec() {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
if (getValueOf('popupLastEditLink')) {
str += '*<<lastEdit|shortcut=/>>|<<lastContrib>>|<<sinceMe>>if(oldid){|<<oldEdit>>|<<diffCur>>}';
}
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>*<<userlog|shortcut=L|log>>';
str+='if(ipuser){*<<arin>>}if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>|<<blocklog|log>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{' + editstr + '}'
var historystr='<<history|shortcut=h>>if(mainspace_en){|<<editors|shortcut=E|>>}';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>*<<move|shortcut=m>>';
// admin links
str += 'if(admin){<br><<unprotect|unprotectShort>>|<<protect|shortcut=p>>|<<protectlog|log>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>|<<deletelog|log>>}';
return str;
}
function navLinksHTML (article, hint, params) { //oldid, rcid) {
var str = '<span class="popupNavLinks">' + defaultNavlinkSpec() + '</span>';
// BAM
return navlinkStringToHTML(str, article, params);
}
function expandConditionalNavlinkString(s,article,z,recursionCount) {
var oldid=z.oldid, rcid=z.rcid, diff=z.diff;
// nested conditionals (up to 10 deep) are ok, hopefully! (work from the inside out)
if (typeof recursionCount!=typeof 0) { recursionCount=0; }
var conditionalSplitRegex=RegExp(
//(1 if \\( (2 2) \\) {(3 3)} (4 else {(5 5)} 4)1)
'(;?\\s*if\\s*\\(\\s*([\\w]*)\\s*\\)\\s*\\{([^{}]*)\\}(\\s*else\\s*\\{([^{}]*?)\\}|))', 'i');
var splitted=s.parenSplit(conditionalSplitRegex);
// $1: whole conditional
// $2: test condition
// $3: true expansion
// $4: else clause (possibly empty)
// $5: false expansion (possibly null)
var numParens=5;
var ret = splitted[0];
for (var i=1; i<splitted.length; i=i+numParens+1) {
var testString=splitted[i+2-1];
var trueString=splitted[i+3-1];
var falseString=splitted[i+5-1];
if (typeof falseString=='undefined' || !falseString) { falseString=''; }
var testResult=null;
switch (testString) {
case 'user':
testResult=(article.userName())?true:false;
break;
case 'talk':
testResult=(article.talkPage())?false:true; // talkPage converts _articles_ to talkPages
break;
case 'admin':
testResult=getValueOf('popupAdminLinks')?true:false;
break;
case 'oldid':
testResult=(typeof oldid != 'undefined' && oldid)?true:false;
break;
case 'rcid':
testResult=(typeof rcid != 'undefined' && rcid)?true:false;
break;
case 'ipuser':
testResult=(article.isIpUser())?true:false;
break;
case 'mainspace_en':
testResult=isInMainNamespace(article) &&
pg.wiki.hostname=='en.wikipedia.org';
break;
case 'wikimedia':
testResult=(pg.wiki.wikimedia) ? true : false;
break;
case 'diff':
testResult=(typeof diff != 'undefined' && diff)?true:false;
break;
}
switch(testResult) {
case null: ret+=splitted[i]; break;
case true: ret+=trueString; break;
case false: ret+=falseString; break;
}
// append non-conditional string
ret += splitted[i+numParens];
}
if (conditionalSplitRegex.test(ret) && recursionCount < 10) {
return expandConditionalNavlinkString(ret,article,z,recursionCount+1);
}
return ret;
}
function navlinkStringToArray(s, article, params) {
s=expandConditionalNavlinkString(s,article,params);
var splitted=s.parenSplit(RegExp('<<(.*?)>>'));
var ret=[];
for (var i=0; i<splitted.length; ++i) {
if (i%2) { // i odd, so s is a tag
var t=new navlinkTag();
var ss=splitted[i].split('|');
t.id=ss[0];
for (var j=1; j<ss.length; ++j) {
var sss=ss[j].split('=');
if (sss.length>1) {
t[sss[0]]=sss[1];
}
else { // no assignment (no "="), so treat this as a title (overwriting the last one)
t.text=popupString(sss[0]);
}
}
t.article=article;
var oldid=params.oldid, rcid=params.rcid, diff=params.diff;
if (typeof oldid != 'undefined' && oldid != null) { t.oldid=oldid; }
if (typeof rcid != 'undefined' && rcid != null) { t.rcid=rcid; }
if (typeof diff != 'undefined' && diff != null) { t.diff=diff; }
if (!t.text && t.id != 'mainlink') { t.text=popupString(t.id); }
ret.push(t);
}
else { // plain HTML
ret.push(splitted[i]);
}
}
return ret;
}
function navlinkSubstituteHTML(s) {
return s.split('*').join(getValueOf('popupNavLinkSeparator'))
.split('<menurow>').join('<li class="popup_menu_row">')
.split('</menurow>').join('</li>')
.split('<menu>').join('<ul class="popup_menu">')
.split('</menu>').join('</ul>');
}
function navlinkDepth(magic,s) {
return s.split('<' + magic + '>').length - s.split('</' + magic + '>').length;
}
// navlinkString: * becomes the separator
// <<foo|bar=baz|fubar>> becomes a foo-link with attribute bar='baz'
// and visible text 'fubar'
// if(test){...} and if(test){...}else{...} work too (nested ok)
function navlinkStringToHTML(s,article,params) {
//limitAlert(navlinkStringToHTML, 5, 'navlinkStringToHTML\n' + article + '\n' + (typeof article));
var p=navlinkStringToArray(s,article,params);
var html='';
var menudepth = 0; // nested menus not currently allowed, but doesn't do any harm to code for it
var menurowdepth = 0;
var wrapping = null;
for (var i=0; i<p.length; ++i) {
if (typeof p[i] == typeof '') {
html+=navlinkSubstituteHTML(p[i]);
menudepth += navlinkDepth('menu', p[i]);
menurowdepth += navlinkDepth('menurow', p[i]);
// if (menudepth === 0) {
// tagType='span';
// } else if (menurowdepth === 0) {
// tagType='li';
// } else {
// tagType = null;
// }
} else if (typeof p[i].type != 'undefined' && p[i].type=='navlinkTag') {
if (menudepth > 0 && menurowdepth === 0) {
html += '<li class="popup_menu_item">' + p[i].html() + '</li>';
} else {
html+=p[i].html();
}
}
}
return html;
}
function navlinkTag() {
this.type='navlinkTag';
}
navlinkTag.prototype.html=function () {
this.getNewWin();
this.getPrintFunction();
var html='';
var opening, closing;
var tagType='span';
if (!tagType) {
opening = ''; closing = '';
} else {
opening = '<' + tagType + ' class="popup_' + this.id + '">';
closing = '</' + tagType + '>';
}
if (typeof this.print!='function') {
errlog ('Oh dear - invalid print function for a navlinkTag, id='+this.id);
} else {
html=this.print(this);
if (typeof html != typeof '') {html='';}
else if (typeof this.shortcut!='undefined') html=addPopupShortcut(html, this.shortcut);
}
return opening + html + closing;
};
navlinkTag.prototype.getNewWin=function() {
getValueOf('popupLinksNewWindow');
if (typeof pg.option.popupLinksNewWindow[this.id] === 'undefined') { this.newWin=null; }
this.newWin=pg.option.popupLinksNewWindow[this.id];
}
navlinkTag.prototype.getPrintFunction=function() { //think about this some more
// this.id and this.article should already be defined
if (typeof this.id!=typeof '' || typeof this.article!=typeof {} ) { return; }
var html='';
var a,t;
this.noPopup=1;
switch (this.id) {
case 'contribs': case 'history': case 'whatLinksHere':
case 'userPage': case 'monobook': case 'userTalk':
case 'talk': case 'article': case 'lastEdit':
this.noPopup=null;
}
switch (this.id) {
case 'email': case 'contribs': case 'block': case 'unblock':
case 'userlog': case 'userSpace': case 'deletedContribs':
this.article=this.article.userName();
}
switch (this.id) {
case 'userTalk': case 'newUserTalk': case 'editUserTalk':
case 'userPage': case 'monobook': case 'editMonobook': case 'blocklog':
this.article=this.article.userName(true);
// fall through; no break
case 'pagelog': case 'deletelog': case 'protectlog':
delete this.oldid;
}
if (this.id=='editMonobook' || this.id=='monobook') { this.article.append('/monobook.js'); }
if (this.id != 'mainlink') {
// FIXME anchor handling should be done differently with Title object
this.article=this.article.removeAnchor();
// if (typeof this.text=='undefined') this.text=popupString(this.id);
}
switch (this.id) {
case 'undelete': this.print=specialLink; this.specialpage='Undelete'; this.sep='/'; break;
case 'whatLinksHere': this.print=specialLink; this.specialpage='Whatlinkshere'; break;
case 'relatedChanges': this.print=specialLink; this.specialpage='Recentchangeslinked'; break;
case 'move': this.print=specialLink; this.specialpage='Movepage'; break;
case 'contribs': this.print=specialLink; this.specialpage='Contributions'; break;
case 'deletedContribs':this.print=specialLink; this.specialpage='Deletedcontributions'; break;
case 'email': this.print=specialLink; this.specialpage='Emailuser'; break;
case 'block': this.print=specialLink; this.specialpage='Blockip'; this.sep='&ip='; break;
case 'unblock': this.print=specialLink; this.specialpage='Ipblocklist'; this.sep='&action=unblock&ip='; break;
case 'userlog': this.print=specialLink; this.specialpage='Log'; this.sep='&user='; break;
case 'blocklog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=block&page='; break;
case 'pagelog': this.print=specialLink; this.specialpage='Log'; this.sep='&page='; break;
case 'protectlog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=protect&page='; break;
case 'deletelog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=delete&page='; break;
case 'userSpace': this.print=specialLink; this.specialpage='PrefixIndex'; this.sep='&namespace=2&prefix='; break;
case 'search': this.print=specialLink; this.specialpage='Search'; this.sep='&fulltext=Search&search='; break;
case 'history': case 'historyfeed': case 'unwatch': case 'watch':
case 'unprotect': case 'protect':
this.print=wikiLink; this.action=this.id; break;
case 'delete':
this.print=wikiLink; this.action='delete';
if (this.article.namespace()==pg.ns.image) {
var img=this.article.stripNamespace();
this.action+='&image='+img;
}
break;
case 'markpatrolled':
case 'edit': // editOld should keep the oldid, but edit should not.
delete this.oldid; // fall through
case 'view': case 'purge': case 'render':
this.print=wikiLink;
this.action=this.id; break;
case 'raw':
this.print=wikiLink; this.action='raw&ctype=text/css'; break;
case 'new':
this.print=wikiLink; this.action='edit§ion=new'; break;
case 'mainlink':
if (typeof this.text=='undefined') { this.text=this.article.toString().entify(); }
if (getValueOf('popupSimplifyMainLink') && isInStrippableNamespace(this.article)) {
var s=this.text.split('/'); this.text=s[s.length-1];
if (this.text=='' && s.length > 1) { this.text=s[s.length-2]; }
}
this.print=titledWikiLink;
if (typeof this.title=='undefined' && pg.current.link && typeof pg.current.link.href != 'undefined') {
this.title=safeDecodeURI((pg.current.link.originalTitle)?pg.current.link.originalTitle:this.article);
if (typeof this.oldid != 'undefined' && this.oldid) {
this.title=tprintf('Revision %s of %s', [this.oldid, this.title]);
}
}
this.action='view'; break;
case 'userPage':
case 'article':
case 'monobook':
case 'editMonobook':
case 'editArticle':
delete this.oldid;
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.article=this.article.articleFromTalkOrArticle();
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.print=wikiLink;
if (this.id.indexOf('edit')==0) {
this.action='edit';
} else { this.action='view';}
break;
case 'userTalk':
case 'talk':
this.article=this.article.talkPage();
delete this.oldid;
this.print=wikiLink;
this.action='view'; break;
case 'arin':
this.print=arinLink; break;
case 'count':
this.print=editCounterLink; break;
case 'google':
this.print=googleLink; break;
case 'editors':
this.print=editorListLink; break;
case 'globalsearch':
this.print=globalSearchLink; break;
case 'lastEdit':
this.print=titledDiffLink;
this.title=popupString('Show the last edit');
this.from='prev'; this.to='cur'; break;
case 'oldEdit':
this.print=titledDiffLink;
this.title=popupString('Show the edit made to get revision') + ' ' + this.oldid;
this.from='prev'; this.to=this.oldid; break;
case 'editOld':
this.print=wikiLink; this.action='edit'; break;
case 'undo':
this.print=wikiLink; this.action='edit&undo='; break;
case 'markpatrolled':
this.print=wikiLink; this.action='markpatrolled';
case 'revert':
this.print=wikiLink; this.action='revert'; break;
case 'nullEdit':
this.print=wikiLink; this.action='nullEdit'; break;
case 'diffCur':
this.print=titledDiffLink;
this.title=tprintf('Show changes since revision %s', [this.oldid]);
this.from=this.oldid; this.to='cur'; break;
case 'editUserTalk':
case 'editTalk':
delete this.oldid;
this.article=this.article.talkPage();
this.action='edit'; this.print=wikiLink; break;
case 'newUserTalk':
case 'newTalk':
this.article=this.article.talkPage();
this.action='edit§ion=new'; this.print=wikiLink; break;
case 'lastContrib':
case 'sinceMe':
this.print=magicHistoryLink;
break;
case 'togglePreviews':
this.text=popupString(pg.option.simplePopups ? 'enable previews' : 'disable previews');
case 'disablePopups': case 'purgePopups':
this.print=popupMenuLink;
break;
default:
this.print=function () {return 'Unknown navlink type: '+this.id+''};
}
};
//
// end navlinks
//////////////////////////////////////////////////
//</NOLITE>
// ENDFILE: navlinks.js
// STARTFILE: shortcutkeys.js
//<NOLITE>
function popupHandleKeypress(evt) {
var keyCode = window.event ? window.event.keyCode : ( evt.keyCode ? evt.keyCode : evt.which);
if (!keyCode || !pg.current.link || !pg.current.link.navpopup) { return; }
if (keyCode==27) { // escape
killPopup();
return false; // swallow keypress
}
var letter=String.fromCharCode(keyCode);
var links=pg.current.link.navpopup.mainDiv.getElementsByTagName('A');
var startLink=0;
var i,j;
if (popupHandleKeypress.lastPopupLinkSelected) {
for (i=0; i<links.length; ++i) {
if (links[i]==popupHandleKeypress.lastPopupLinkSelected) { startLink=i; }
}
}
for (j=0; j<links.length; ++j) {
i=(startLink + j + 1) % links.length;
if (links[i].getAttribute('popupkey')==letter) {
if (evt && evt.preventDefault) evt.preventDefault();
links[i].focus();
popupHandleKeypress.lastPopupLinkSelected=links[i];
return false; // swallow keypress
}
}
// pass keypress on
if (document.oldPopupOnkeypress) { return document.oldPopupOnkeypress(evt); }
return true;
}
function addPopupShortcuts() {
if (document.onkeypress!=popupHandleKeypress) {
document.oldPopupOnkeypress=document.onkeypress;
}
document.onkeypress=popupHandleKeypress;
}
function rmPopupShortcuts() {
popupHandleKeypress.lastPopupLinkSelected=null;
try {
if (document.oldPopupOnkeypress && document.oldPopupOnkeypress==popupHandleKeypress) {
// panic
document.onkeypress=null; //function () {};
return;
}
document.onkeypress=document.oldPopupOnkeypress;
} catch (nasties) { /* IE goes here */ }
}
function addLinkProperty(html, property) {
// take "<a href=...>...</a> and add a property
// not sophisticated at all, easily broken
var i=html.indexOf('>');
if (i<0) { return html; }
return html.substring(0,i) + ' ' + property + html.substring(i);
}
function addPopupShortcut(html, key) {
if (!getValueOf('popupShortcutKeys')) { return html; }
var ret= addLinkProperty(html, 'popupkey="'+key+'"');
if (key==' ') { key=popupString('spacebar'); }
return ret.replace(RegExp('^(.*?)(title=")(.*?)(".*)$', 'i'),'$1$2$3 ['+key+']$4');
}
//</NOLITE>
// ENDFILE: shortcutkeys.js
// STARTFILE: diffpreview.js
//<NOLITE>
function loadDiff(article, oldid, diff, navpop) {
navpop.diffData={};
var oldRev, newRev;
switch (diff) {
case 'cur':
switch ( oldid ) {
case null:
case '':
case 'prev':
// eg newmessages diff link
oldRev='0&direction=prev';
newRev=0;
break;
default:
oldRev = oldid;
newRev = 0;
}
break;
case 'prev':
oldRev = ( oldid || 0 ) + '&direction=prev'; newRev = oldid; break;
case 'next':
oldRev = oldid; newRev = oldid + '&direction=next';
break;
default:
oldRev = oldid || 0; newRev = diff || 0; break;
}
oldRev = oldRev || 0;
newRev = newRev || 0;
var go = function() {
pendingNavpopTask(navpop);
getWiki(article, doneDiffNew, newRev, navpop);
pendingNavpopTask(navpop);
getWiki(article, doneDiffOld, oldRev, navpop);
var tz = Cookie.read('popTz');
if ( (window.wgEnableAPI || wgEnableAPI) && getValueOf('popupAdjustDiffDates') && tz===null) {
pendingNavpopTask(navpop);
getPageWithCaching(pg.wiki.apiwikibase + '?format=json&action=query&meta=userinfo&uiprop=options',
function(d) {
completedNavpopTask(navpop);
setTimecorrectionCookie(d);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}, navpop);
}
return true; // remove hook once run
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_DIFFS'); }
}
function setTimecorrectionCookie(d) {
try {
var jsobj=getJsObj(d.data);
var tz=jsobj.query.userinfo.options.timecorrection;
} catch (someError) {
logerr( 'setTimecorretion failed' );
return;
}
Cookie.create( 'popTz', getTimeOffset(tz), 1);
}
function doneDiff(download, isOld) {
if (!download.owner || !download.owner.diffData) { return; }
var navpop=download.owner;
var label= (isOld) ? 'Old' : 'New';
var otherLabel=(isOld) ? 'New' : 'Old';
navpop.diffData[label]=download;
completedNavpopTask(download.owner);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}
function diffDownloadsComplete(navpop) {
if ( Cookie.read('popTz')===null) { return false; }
return navpop.diffData.Old && navpop.diffData.New;
}
function doneDiffNew(download) { doneDiff(download, false); }
function doneDiffOld(download) { doneDiff(download, true); }
function rmBoringLines(a,b,context) {
if (typeof context == 'undefined') { context=2; }
// this is fairly slow... i think it's quicker than doing a word-based diff from the off, though
var aa=[], aaa=[];
var bb=[], bbb=[];
var i, j;
// first, gather all disconnected nodes in a and all crossing nodes in a and b
for (i=0; i<a.length; ++i ) {
if(!a[i].paired) { aa[i]=1; }
else if (countCrossings(b,a,i, true)) {
aa[i]=1;
bb[ a[i].row ] = 1;
}
}
// pick up remaining disconnected nodes in b
for (i=0; i<b.length; ++i ) {
if (bb[i]==1) { continue; }
if(!b[i].paired) { bb[i]=1; }
}
// another pass to gather context: we want the neighbours of included nodes which are not yet included
// we have to add in partners of these nodes, but we don't want to add context for *those* nodes in the next pass
for (i=0; i<b.length; ++i) {
if ( bb[i] == 1 ) {
for (j=max(0,i-context); j < min(b.length, i+context); ++j) {
if ( !bb[j] ) { bb[j] = 1; aa[ b[j].row ] = 0.5; }
}
}
}
for (i=0; i<a.length; ++i) {
if ( aa[i] == 1 ) {
for (j=max(0,i-context); j < min(a.length, i+context); ++j) {
if ( !aa[j] ) { aa[j] = 1; bb[ a[j].row ] = 0.5; }
}
}
}
for (i=0; i<bb.length; ++i) {
if (bb[i] > 0) { // it's a row we need
if (b[i].paired) { bbb.push(b[i].text); } // joined; partner should be in aa
else {
bbb.push(b[i]);
}
}
}
for (i=0; i<aa.length; ++i) {
if (aa[i] > 0) { // it's a row we need
if (a[i].paired) { aaa.push(a[i].text); } // joined; partner should be in aa
else {
aaa.push(a[i]);
}
}
}
return { a: aaa, b: bbb};
}
function stripOuterCommonLines(a,b,context) {
var i=0;
while (i<a.length && i < b.length && a[i]==b[i]) { ++i; }
var j=a.length-1; var k=b.length-1;
while ( j>=0 && k>=0 && a[j]==b[k] ) { --j; --k; }
return { a: a.slice(max(0,i - 1 - context), min(a.length+1, j + context+1)),
b: b.slice(max(0,i - 1 - context), min(b.length+1, k + context+1)) };
}
function insertDiff(navpop) {
// for speed reasons, we first do a line-based diff, discard stuff that seems boring, then do a word-based diff
// FIXME: sometimes this gives misleading diffs as distant chunks are squashed together
var oldlines=navpop.diffData.Old.data.split('\n');
var newlines=navpop.diffData.New.data.split('\n');
var inner=stripOuterCommonLines(oldlines,newlines,getValueOf('popupDiffContextLines'));
oldlines=inner.a; newlines=inner.b;
var truncated=false;
getValueOf('popupDiffMaxLines');
if (oldlines.length > pg.option.popupDiffMaxLines || newlines.length > pg.option.popupDiffMaxLines) {
// truncate
truncated=true;
inner=stripOuterCommonLines(oldlines.slice(0,pg.option.popupDiffMaxLines),
newlines.slice(0,pg.option.popupDiffMaxLines),
pg.option.popupDiffContextLines);
oldlines=inner.a; newlines=inner.b;
}
var lineDiff=diff(oldlines, newlines);
var lines2=rmBoringLines(lineDiff.o, lineDiff.n);
var oldlines2=lines2.a; var newlines2=lines2.b;
var simpleSplit = !String.prototype.parenSplit.isNative;
var html='<hr>';
if (getValueOf('popupDiffDates')) {
html += diffDatesTable(navpop.diffData.Old, navpop.diffData.New);
html += '<hr>';
}
html += shortenDiffString(
diffString(oldlines2.join('\n'), newlines2.join('\n'), simpleSplit),
getValueOf('popupDiffContextCharacters') ).join('<hr>');
setPopupTipsAndHTML(html.split('\n').join('<br>') +
(truncated ? '<hr><b>'+popupString('Diff truncated for performance reasons')+'</b>' : '') ,
'popupPreview', navpop.idNumber);
}
function diffDatesTable( oldDl, newDl ) {
var html='<table class="popup_diff_dates">';
html += diffDatesTableRow( newDl, tprintf('New revision'));
html += diffDatesTableRow( oldDl, tprintf('Old revision'));
html += '</table>';
return html;
}
function diffDatesTableRow( dl, label ) {
var txt='';
if (!dl) {
txt=popupString('Something went wrong :-(');
} else if (!dl.lastModified) {
txt= (/^\s*$/.test(dl.data)) ?
popupString('Empty revision, maybe non-existent') : popupString('Unknown date');
} else {
var datePrint=getValueOf('popupDiffDatePrinter');
if (typeof dl.lastModified[datePrint] == 'function') {
if (getValueOf('popupAdjustDiffDates')) {
var off;
if (off=Cookie.read('popTz')) {
var d2=adjustDate(dl.lastModified, off);
txt = dayFormat(d2, true) + ' ' + timeFormat(d2, true);
}
} else {
txt = dl.lastModified[datePrint]();
}
} else {
txt = tprintf('Invalid %s %s', ['popupDiffDatePrinter', datePrint]);
}
}
var revlink = generalLink({url: dl.url.replace(/&.*?(oldid=[0-9]+(?:&direction=[^&]*)?).*/, '&$1'),
text: label, title: label});
return simplePrintf('<tr><td>%s</td><td>%s</td></tr>', [ revlink, txt ]);
}
//</NOLITE>
// ENDFILE: diffpreview.js
// STARTFILE: links.js
//<NOLITE>
/////////////////////
// LINK GENERATION //
/////////////////////
// titledDiffLink --> titledWikiLink --> generalLink
// wikiLink --> titledWikiLink --> generalLink
// editCounterLink --> generalLink
function titledDiffLink(l) { // article, text, title, from, to) {
return titledWikiLink({article: l.article, action: l.to + '&oldid=' + l.from,
newWin: l.newWin,
noPopup: l.noPopup,
text: l.text, title: l.title,
/* hack: no oldid here */
actionName: 'diff'});
}
function wikiLink(l) {
//{article:article, action:action, text:text, oldid, newid}) {
if (! (typeof l.article == typeof {}
&& typeof l.action == typeof '' && typeof l.text==typeof '')) return null;
if (typeof l.oldid == 'undefined') { l.oldid=null; }
var savedOldid = l.oldid;
if (!/^(edit|view|revert|render)$|^raw/.test(l.action)) { l.oldid=null; }
var hint=popupString(l.action + 'Hint'); // revertHint etc etc etc
var oldidData=[l.oldid, safeDecodeURI(l.article)];
var revisionString = tprintf('revision %s of %s', oldidData);
log('revisionString='+revisionString);
switch (l.action) {
case 'edit§ion=new': hint = popupString('newSectionHint'); break;
case 'edit&undo=':
if (l.diff && l.diff != 'prev' && savedOldid ) {
l.action += l.diff + '&undoafter=' + savedOldid;
} else if (savedOldid) {
l.action += savedOldid;
}
hint = popupString('undoHint');
break;
case 'raw&ctype=text/css': hint=popupString('rawHint'); break;
case 'revert':
if (!window.wgEnableAPI || !wgEnableAPI) {
alert( 'This function of navigation popups now requires a MediaWiki ' +
'installation with the API enabled.');
break;
}
var p=parseParams(pg.current.link.href);
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=' + revertSummary(l.oldid, p.diff);
if (p.diff=='prev') {
l.action += '&direction=prev';
revisionString = tprintf('the revision prior to revision %s of %s', oldidData);
}
if (getValueOf('popupRevertSummaryPrompt')) { l.action += '&autosummaryprompt=true'; }
if (getValueOf('popupMinorReverts')) { l.action += '&autominor=true'; }
log('revisionString is now '+revisionString);
break;
case 'nullEdit':
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=null';
break;
case 'historyfeed':
l.action='history&feed=rss';
break;
case 'markpatrolled':
l.action='markpatrolled&rcid='+l.rcid;
}
if (hint) {
if (l.oldid) {
hint = simplePrintf(hint, [revisionString]);
}
else {
hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
}
}
else {
hint = safeDecodeURI(l.article + '&action=' + l.action) + (l.oldid) ? '&oldid='+l.oldid : '';
}
return titledWikiLink({article: l.article, action: l.action, text: l.text, newWin:l.newWin,
title: hint, oldid: l.oldid, noPopup: l.noPopup});
}
function revertSummary(oldid, diff) {
var ret='';
if (diff == 'prev') {
ret=getValueOf('popupQueriedRevertToPreviousSummary');
} else { ret = getValueOf('popupQueriedRevertSummary'); }
return ret + '&autorv=' + oldid;
}
function titledWikiLink(l) {
// possible properties of argument:
// article, action, text, title, oldid, actionName, className, noPopup
// oldid = null is fine here
// article and action are mandatory args
if (typeof l.article == 'undefined' || typeof l.action=='undefined') {
errlog('got undefined article or action in titledWikiLink');
return null;
}
var base = pg.wiki.titlebase + l.article.urlString();
var url=base;
if (typeof l.actionName=='undefined' || !l.actionName) { l.actionName='action'; }
// no need to add &action=view, and this confuses anchors
if (l.action != 'view') { url = base + '&' + l.actionName + '=' + l.action; }
if (typeof l.oldid!='undefined' && l.oldid) { url+='&oldid='+l.oldid; }
var cssClass=pg.misc.defaultNavlinkClassname;
if (typeof l.className!='undefined' && l.className) { cssClass=l.className; }
return generalNavLink({url: url, newWin: l.newWin,
title: (typeof l.title != 'undefined') ? l.title : null,
text: (typeof l.text!='undefined')?l.text:null,
className: cssClass, noPopup:l.noPopup});
}
function getLastContrib(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processLastContribInfo(x,{page: wikipage, newWin: newWin})});
}
function processLastContribInfo(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: an odd thing happened. Please retry.'); return; }
if(!info.firstNewEditor) {
alert(tprintf('Only found one editor: %s made %s edits', [info.edits[0].editor,info.edits.length]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+info.firstNewEditor.oldid;
displayUrl(newUrl, stuff.newWin);
}
function getDiffSinceMyEdit(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processDiffSinceMyEdit(x,{page: wikipage, newWin: newWin})});
}
function processDiffSinceMyEdit(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: something fishy happened. Please try again.'); return; }
var friendlyName=stuff.page.split('_').join(' ');
if(!info.myLastEdit) {
alert(tprintf('Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
[info.userName, getValueOf('popupHistoryLimit'), friendlyName]));
return;
}
if(info.myLastEdit.index==0) {
alert(tprintf("%s seems to be the last editor to the page %s", [info.userName, friendlyName]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+ info.myLastEdit.oldid;
displayUrl(newUrl, stuff.newWin);
}
function displayUrl(url, newWin){
if(newWin) { window.open(url); }
else { document.location=url; }
}
function purgePopups() {
processAllPopups(true);
setupCache(); // deletes all cached items (not browser cached, though...)
pg.option={};
abortAllDownloads();
}
function processAllPopups(nullify, banish) {
for (var i=0; i<pg.current.links.length; ++i) {
if (!pg.current.links[i].navpopup) { continue; }
(nullify || banish) && pg.current.links[i].navpopup.banish();
pg.current.links[i].simpleNoMore=false;
nullify && (pg.current.links[i].navpopup=null);
}
}
function disablePopups(){
processAllPopups(false, true);
setupTooltips(null, true);
}
function togglePreviews() {
processAllPopups(true, true);
pg.option.simplePopups=!pg.option.simplePopups;
abortAllDownloads();
}
function magicHistoryLink(l) {
// FIXME use onclick change href trick to sort this out instead of window.open
var jsUrl='', title='';
switch(l.id) {
case 'lastContrib':
jsUrl=simplePrintf('javascript:getLastContrib(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('lastContribHint');
break;
case 'sinceMe':
jsUrl=simplePrintf('javascript:getDiffSinceMyEdit(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('sinceMeHint');
break;
}
return generalNavLink({url: jsUrl, newWin: false, // can't have new windows with JS links, I think
title: title, text: l.text, noPopup: l.noPopup});
}
function popupMenuLink(l) {
var jsUrl=simplePrintf('javascript:%s()', [l.id]);
var title=popupString(simplePrintf('%sHint', [l.id]));
return generalNavLink({url: jsUrl, newWin:false, title:title, text:l.text, noPopup:l.noPopup});
}
function specialLink(l) {
// properties: article, specialpage, text, sep
if (typeof l.specialpage=='undefined'||!l.specialpage) return null;
var base = pg.wiki.titlebase + pg.ns.special+':'+l.specialpage;
if (typeof l.sep == 'undefined' || l.sep===null) l.sep='&target=';
var article=l.article.urlString({keepSpaces: l.specialpage=='Search'});
var hint=popupString(l.specialpage+'Hint');
switch (l.specialpage) {
case 'Log':
switch (l.sep) {
case '&user=': hint=popupString('userLogHint'); break;
case '&type=block&page=': hint=popupString('blockLogHint'); break;
case '&page=': hint=popupString('pageLogHint'); break;
case '&type=protect&page=': hint=popupString('protectLogHint'); break;
case '&type=delete&page=': hint=popupString('deleteLogHint'); break;
default: log('Unknown log type, sep=' + l.sep); hint='Missing hint (FIXME)';
}
break;
case 'PrefixIndex': article += '/'; break;
}
if (hint) hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
else hint = safeDecodeURI(l.specialpage+':'+l.article) ;
var url = base + l.sep + article;
return generalNavLink({url: url, title: hint, text: l.text, newWin:l.newWin, noPopup:l.noPopup});
}
function generalLink(l) {
// l.url, l.text, l.title, l.newWin, l.className, l.noPopup
if (typeof l.url=='undefined') return null;
// only quotation marks in the url can screw us up now... I think
var url=l.url.split('"').join('%22');
var ret='<a href="' + url + '"';
if (typeof l.title!='undefined' && l.title) { ret += ' title="' + l.title + '"'; }
if (l.noPopup) { ret += ' noPopup=1'; }
var newWin;
if (typeof l.newWin=='undefined' || l.newWin===null) { newWin=getValueOf('popupNewWindows'); }
else { newWin=l.newWin; }
if (newWin) { ret += ' target="_blank"'; }
if (typeof l.className!='undefined'&&l.className) { ret+=' class="'+l.className+'"'; }
ret += '>';
if (typeof l.text==typeof '') { ret+= l.text; }
ret +='</a>';
return ret;
}
function appendParamsToLink(linkstr, params) {
var sp=linkstr.parenSplit(RegExp('(href="[^"]+?)"', 'i'));
if (sp.length<2) return null;
var ret=sp.shift() + sp.shift();
ret += '&' + params + '"';
ret += sp.join('');
return ret;
}
function changeLinkTargetLink(x) { // newTarget, text, hint, summary, clickButton, minor, title (optional) {
if (x.newTarget) {
log ('changeLinkTargetLink: newTarget=' + x.newTarget);
}
// optional: oldTarget (in wikitext)
// if x.newTarget omitted or null, remove the link
//x.text=encodeURI(x.text); // this buggers things up on zh.wikipedia.org and doesn't seem necessary
x.clickButton=encodeURI(x.clickButton);
// FIXME: first character of page title as well as namespace should be case insensitive
// eg [[category:foo]] and [[Category:Foo]] are equivalent
// this'll break if charAt(0) is nasty
var cA=literalizeRegex(x.oldTarget);
var chs=cA.charAt(0).toUpperCase();
chs='['+chs + chs.toLowerCase()+']';
var currentArticleRegexBit=encodeURIComponent(chs+cA.substring(1));
currentArticleRegexBit=currentArticleRegexBit
.split(RegExp('[_ ]+', 'g')).join('[_ ]+')
.split( "%20" ).join('[_ ]+')
.split('\\(').join('(?:%2528|\\()')
.split('\\)').join('(?:%2529|\\))');
// leading and trailing space should be ignored, and anchor bits optional:
currentArticleRegexBit = '\\s*(' + currentArticleRegexBit + '(?:#[^\\[\\|]*)?)\\s*';
// e.g. Computer (archaic) -> \s*([Cc]omputer[_ ](?:%2528|\()archaic(?:%2528|\)))\s*
// autoedit=s~\[\[([Cc]ad)\]\]~[[Computer-aided%20design|$1]]~g;s~\[\[([Cc]AD)[|]~[[Computer-aided%20design|~g
var title=x.title || wgPageName.split('_').join(' ');
var lk=titledWikiLink({article: new Title(title), newWin:x.newWin,
action: 'edit',
text: x.text,
title: x.hint,
className: 'popup_change_title_link'
});
var cmd='';
if (x.newTarget) {
// escape '&' and other nasties
var t=encodeURIComponent(x.newTarget);
var s=encodeURIComponent(literalizeRegex(x.newTarget));
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~[['+t+'|$1]]~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|]~[['+t+'|~g;';
cmd += 's~\\[\\['+s + '\\|' + s + '\\]\\]~[[' + t + ']]~g';
} else {
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~$1~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|](.*?)\\]\\]~$2~g';
}
cmd += '&autoclick='+x.clickButton + '&actoken=' + autoClickToken();
cmd += ( x.minor == null ) ? '' : '&autominor='+x.minor;
cmd += ( x.watch == null ) ? '' : '&autowatch='+x.watch;
cmd += '&autosummary='+encodeURIComponent(x.summary);
return appendParamsToLink(lk, 'autoedit='+cmd);
}
function redirLink(redirMatch, article) {
// NB redirMatch is in wikiText
var ret='';
if (getValueOf('popupAppendRedirNavLinks') && getValueOf('popupNavLinks')) {
ret += '<hr>';
if (getValueOf('popupFixRedirs') && typeof autoEdit != 'undefined' && autoEdit) {
log('redirLink: newTarget=' + redirMatch);
ret += addPopupShortcut(
changeLinkTargetLink(
{newTarget: redirMatch, text: popupString('Redirects'),
hint: popupString('Fix this redirect'),
summary: simplePrintf(getValueOf('popupFixRedirsSummary'),
[article.toString(), redirMatch ]),
oldTarget: article.toString(),
clickButton: getValueOf('popupRedirAutoClick'), minor: true,
watch: getValueOf('popupWatchRedirredPages')})
, 'R');
ret += popupString(' to ');
}
else ret += popupString('Redirects') + popupString(' to ');
return ret;
}
else return '<br> ' + popupString('Redirects') + popupString(' to ') +
titledWikiLink({article: new Title().fromWikiText(redirMatch), action: 'view', /* FIXME: newWin */
text: safeDecodeURI(redirMatch), title: popupString('Bypass redirect')});
}
function arinLink(l) {
if (!saneLinkCheck(l)) { return null; }
if ( ! l.article.isIpUser() || ! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
return generalNavLink({url:'http://ws.arin.net/cgi-bin/whois.pl?queryinput=' + encodeURIComponent(uN), newWin:l.newWin,
title: tprintf('Look up %s in ARIN whois database', [uN]),
text: l.text, noPopup:1});
}
function toolDbName(cookieStyle) {
var ret = wgDBname;
if (!cookieStyle) { ret+= '_p'; }
return ret;
}
function saneLinkCheck(l) {
if (typeof l.article != typeof {} || typeof l.text != typeof '') { return false; }
return true;
}
function editCounterLink(l) {
if(!saneLinkCheck(l)) return null;
if (! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
var tool=getValueOf('popupEditCounterTool');
var url;
var soxredToolUrl='http://toolserver.org/~soxred93/count/index.php?name=$1&lang=$2&wiki=$3';
var kateToolUrl='http://toolserver.org/~$3/cgi-bin/Tool1/wannabe_kate?username=$1&site=en.wikipedia.org&$2';
switch(tool) {
case 'custom':
url=simplePrintf(getValueOf('popupEditCounterUrl'), [ encodeURIComponent(uN), toolDbName() ]);
break;
case 'kate':
case 'interiot':
url=simplePrintf(kateToolUrl, [ encodeURIComponent(uN), toolDbName(), tool ]);
break;
default:
var theWiki=pg.wiki.hostname.split('.');
url=simplePrintf(soxredToolUrl, [ encodeURIComponent(uN), theWiki[0], theWiki[1] ]);
}
return generalNavLink({url:url, title: tprintf('editCounterLinkHint', [uN]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function globalSearchLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + article, newWin:l.newWin,
title: tprintf('globalSearchHint', [safeDecodeURI(l.article)]),
text: l.text, noPopup:1});
}
function googleLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://www.google.com/search?q=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + '%22' + article + '%22', newWin:l.newWin,
title: tprintf('googleSearchHint', [safeDecodeURI(l.article)]),
text: l.text, noPopup:1});
}
function editorListLink(l) {
if(!saneLinkCheck(l)) return null;
var article= l.article.articleFromTalkPage() || l.article;
var base='http://toolserver.org/~tim/cgi-bin/contribution-counter?page=';
return generalNavLink({url:base+article.urlString(),
title: tprintf('editorListHint', [article]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function generalNavLink(l) {
l.className = (l.className==null) ? 'popupNavLink' : l.className;
return generalLink(l);
}
//////////////////////////////////////////////////
// magic history links
//
function getHistoryInfo(wikipage, whatNext) {
log('getHistoryInfo');
getHistory(wikipage, whatNext ? function(d){whatNext(processHistory(d));} : processHistory);
}
// FIXME eliminate pg.idNumber ... how? :-(
function getHistory(wikipage, onComplete) {
log('getHistory');
if( !window.wgEnableAPI || !wgEnableAPI ) {
alert( 'This function of navigation popups now requires a MediaWiki ' +
'installation with the API enabled.');
return false;
}
var url = pg.wiki.apiwikibase + '?format=json&action=query&prop=revisions&titles=' +
new Title(wikipage).urlString() + '&rvlimit=' + getValueOf('popupHistoryLimit');
log('getHistory: url='+url);
return startDownload(url, pg.idNumber+'history', onComplete);
}
function processHistory(download) {
var jsobj = getJsObj(download.data);
try {
window.x=jsobj;
var p=jsobj['query']['pages']
for (var pageid in p) {
var revisions=p[pageid]['revisions'];
// we only get the first one
break;
}
} catch (someError) {
log('Something went wrong with JSON business');
return finishProcessHistory([]);
}
var edits=[];
for (var i=0; i<revisions.length; ++i) {
edits.push({ oldid: revisions[i]['revid'], editor: revisions[i]['user'] });
}
log('processed ' + edits.length + ' edits');
return finishProcessHistory(edits, wgUserName);
}
function finishProcessHistory(edits, userName) {
var histInfo={};
histInfo.edits=edits;
histInfo.userName=userName;
for (var i=0; i<edits.length; ++i) {
if (typeof histInfo.myLastEdit == 'undefined' && userName && edits[i].editor==userName) {
histInfo.myLastEdit={index: i, oldid: edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
if (typeof histInfo.firstNewEditor == 'undefined' && edits[i].editor != edits[0].editor) {
histInfo.firstNewEditor={index:i, oldid:edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
}
//pg.misc.historyInfo=histInfo;
return histInfo;
}
//</NOLITE>
// ENDFILE: links.js
// STARTFILE: options.js
//////////////////////////////////////////////////
// options
// check for cookies and existing value, else use default
function defaultize(x) {
var val=null;
if (x!='popupCookies') {
defaultize('popupCookies');
if (pg.option.popupCookies && (val=Cookie.read(x))) {
pg.option[x]=val;
return;
}
}
if (pg.option[x]===null || typeof pg.option[x]=='undefined') {
if (typeof window[x] != 'undefined' ) pg.option[x]=window[x];
else pg.option[x]=pg.optionDefault[x];
}
}
function newOption(x, def) {
pg.optionDefault[x]=def;
}
function setDefault(x, def) {
return newOption(x, def);
}
function getValueOf(varName) {
defaultize(varName);
return pg.option[varName];
}
function useDefaultOptions() { // for testing
for (var p in pg.optionDefault) {
pg.option[p]=pg.optionDefault[p];
if (typeof window[p]!='undefined') { delete window[p]; }
}
}
function setOptions() {
// user-settable parameters and defaults
var userIsSysop = false;
if ( wgUserGroups ) {
for ( var g = 0; g < wgUserGroups.length; ++g ) {
if ( wgUserGroups[g] == "sysop" )
userIsSysop = true
}
}
// Basic options
newOption('popupDelay', 0.5);
newOption('popupHideDelay', 0.5);
newOption('simplePopups', false);
newOption('popupStructure', 'shortmenus'); // see later - default for popupStructure is 'original' if simplePopups is true
newOption('popupActionsMenu', true);
newOption('popupSetupMenu', true);
newOption('popupAdminLinks', userIsSysop);
newOption('popupShortcutKeys', false);
newOption('popupHistoricalLinks', true);
newOption('popupOnlyArticleLinks', true);
newOption('removeTitles', true);
newOption('popupMaxWidth', 350);
newOption('popupInitialWidth', false); // integer or false
newOption('popupSimplifyMainLink', true);
newOption('popupAppendRedirNavLinks', true);
newOption('popupTocLinks', false);
newOption('popupSubpopups', true);
newOption('popupDragHandle', false /* 'popupTopLinks'*/);
newOption('popupLazyPreviews', true);
newOption('popupLazyDownloads', true);
newOption('popupAllDabsStubs', false);
newOption('popupDebugging', false);
newOption('popupAdjustDiffDates', true);
newOption('popupActiveNavlinks', true);
newOption('popupModifier', false); // ctrl, shift, alt or meta
newOption('popupModifierAction', 'enable'); // or 'disable'
newOption('popupDraggable', true);
//<NOLITE>
// images
newOption('popupImages', true);
newOption('imagePopupsForImages', true);
newOption('popupNeverGetThumbs', false);
//newOption('popupImagesToggleSize', true);
newOption('popupThumbAction', 'imagepage'); //'sizetoggle');
newOption('popupImageSize', 60);
newOption('popupImageSizeLarge', 200);
// redirs, dabs, reversion
newOption('popupFixRedirs', false);
newOption('popupRedirAutoClick', 'wpDiff');
newOption('popupFixDabs', false);
newOption('popupRevertSummaryPrompt', false);
newOption('popupMinorReverts', false);
newOption('popupRedlinkRemoval', false);
newOption('popupWatchDisambiggedPages', null);
newOption('popupWatchRedirredPages', null);
newOption('popupDabWiktionary', 'last');
// navlinks
newOption('popupNavLinks', true);
newOption('popupNavLinkSeparator', ' ⋅ ');
newOption('popupLastEditLink', true);
newOption('popupEditCounterTool', 'soxred');
newOption('popupEditCounterUrl', '');
newOption('popupExtraUserMenu', '');
//</NOLITE>
// previews etc
newOption('popupPreviews', true);
newOption('popupSummaryData', true);
newOption('popupMaxPreviewSentences', 5);
newOption('popupMaxPreviewCharacters', 600);
newOption('popupLastModified', true);
newOption('popupPreviewKillTemplates', true);
newOption('popupPreviewRawTemplates', true);
newOption('popupPreviewFirstParOnly', true);
newOption('popupPreviewCutHeadings', true);
newOption('popupPreviewButton', false);
newOption('popupPreviewButtonEvent', 'click');
//<NOLITE>
// diffs
newOption('popupPreviewDiffs', true);
newOption('popupDiffMaxLines', 100);
newOption('popupDiffContextLines', 2);
newOption('popupDiffContextCharacters', 40);
newOption('popupDiffDates', true);
newOption('popupDiffDatePrinter', 'toLocaleString');
// edit summaries. God, these are ugly.
newOption('popupFixDabsSummary', popupString('defaultpopupFixDabsSummary') );
newOption('popupExtendedRevertSummary', popupString('defaultpopupExtendedRevertSummary') );
newOption('popupTimeOffset', null);
newOption('popupRevertSummary', popupString('defaultpopupRevertSummary') );
newOption('popupRevertToPreviousSummary', popupString('defaultpopupRevertToPreviousSummary') );
newOption('popupQueriedRevertSummary', popupString('defaultpopupQueriedRevertSummary') );
newOption('popupQueriedRevertToPreviousSummary', popupString('defaultpopupQueriedRevertToPreviousSummary') );
newOption('popupFixRedirsSummary', popupString('defaultpopupFixRedirsSummary') );
newOption('popupRedlinkSummary', popupString('defaultpopupRedlinkSummary') );
newOption('popupRmDabLinkSummary', popupString('defaultpopupRmDabLinkSummary') );
//</NOLITE>
// misc
newOption('popupCookies', false);
newOption('popupHistoryLimit', 50);
//<NOLITE>
newOption('popupFilters', [popupFilterStubDetect, popupFilterDisambigDetect,
popupFilterPageSize, popupFilterCountLinks,
popupFilterCountImages, popupFilterCountCategories,
popupFilterLastModified]);
newOption('extraPopupFilters', []);
newOption('popupOnEditSelection', 'cursor');
newOption('popupPreviewHistory', true);
newOption('popupImageLinks', true);
newOption('popupCategoryMembers', true);
newOption('popupUserInfo', true);
newOption('popupHistoryPreviewLimit', 25);
newOption('popupContribsPreviewLimit',25);
//</NOLITE>
// new windows
newOption('popupNewWindows', false);
newOption('popupLinksNewWindow', {'lastContrib': true, 'sinceMe': true});
// regexps
newOption('popupDabRegexp', '([{][{]\\s*disambig|disambig\\s*[}][}]|disamb\\s*[}][}]|dab\\s*[}][}])|[{][{]\\s*(((geo|hn|road?|school|number)dis)|[234][lc][acw]|shipindex)(\\s*[|][^}]*)?\\s*[}][}]|is a .*disambiguation.*page');
newOption('popupStubRegexp', '(sect)?stub[}][}]|This .*-related article is a .*stub');
newOption('popupImageVarsRegexp', 'image|image_(?:file|skyline|name|flag|seal)|cover|badge|logo');
}
// ENDFILE: options.js
// STARTFILE: strings.js
//<NOLITE>
//////////////////////////////////////////////////
// Translatable strings
//////////////////////////////////////////////////
//
// See instructions at
// http://en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups/Translation
pg.string = {
/////////////////////////////////////
// summary data, searching etc.
/////////////////////////////////////
'article': 'article',
'category': 'category',
'categories': 'categories',
'image': 'image',
'images': 'images',
'stub': 'stub',
'section stub': 'section stub',
'Empty page': 'Empty page',
'kB': 'kB',
'bytes': 'bytes',
'day': 'day',
'days': 'days',
'hour': 'hour',
'hours': 'hours',
'minute': 'minute',
'minutes': 'minutes',
'second': 'second',
'seconds': 'seconds',
'week': 'week',
'weeks': 'weeks',
'search': 'search',
'SearchHint': 'Find English Wikipedia articles containing %s',
'web': 'web',
'global': 'global',
'globalSearchHint': 'Search across Wikipedias in different languages for %s',
'googleSearchHint': 'Google for %s',
/////////////////////////////////////
// article-related actions and info
// (some actions also apply to user pages)
/////////////////////////////////////
'actions': 'actions', ///// view articles and view talk
'popupsMenu': 'popups',
'togglePreviewsHint': 'Toggle preview generation in popups on this page',
'enable previews': 'enable previews',
'disable previews': 'disable previews',
'toggle previews': 'toggle previews',
'show preview': 'show preview',
'reset': 'reset',
'more...': 'more...',
'disable': 'disable popups',
'disablePopupsHint': 'Disable popups on this page. Reload page to re-enable.',
'historyfeedHint': 'RSS feed of recent changes to this page',
'purgePopupsHint': 'Reset popups, clearing all cached popup data.',
'PopupsHint': 'Reset popups, clearing all cached popup data.',
'spacebar': 'space',
'view': 'view',
'view article': 'view article',
'viewHint': 'Go to %s',
'talk': 'talk',
'talk page': 'talk page',
'this revision': 'this revision',
'revision %s of %s': 'revision %s of %s',
'Revision %s of %s': 'Revision %s of %s',
'the revision prior to revision %s of %s': 'the revision prior to revision %s of %s',
'Toggle image size': 'Click to toggle image size',
'del': 'del', ///// delete, protect, move
'delete': 'delete',
'deleteHint': 'Delete %s',
'undeleteShort': 'un',
'UndeleteHint': 'Show the deletion history for %s',
'protect': 'protect',
'protectHint': 'Restrict editing rights to %s',
'unprotectShort': 'un',
'unprotectHint': 'Allow %s to be edited by anyone again',
'move': 'move',
'move page': 'move page',
'MovepageHint': 'Change the title of %s',
'edit': 'edit', ///// edit articles and talk
'edit article': 'edit article',
'editHint': 'Change the content of %s',
'edit talk': 'edit talk',
'new': 'new',
'new topic': 'new topic',
'newSectionHint': 'Start a new section on %s',
'null edit': 'null edit',
'nullEditHint': 'Submit an edit to %s, making no changes ',
'hist': 'hist', ///// history, diffs, editors, related
'history': 'history',
'historyHint': 'List the changes made to %s',
'last': 'last',
'lastEdit': 'lastEdit',
'mark patrolled': 'mark patrolled',
'markpatrolledHint': 'Mark this edit as patrolled',
'show last edit': 'most recent edit',
'Show the last edit': 'Show the effects of the most recent change',
'lastContrib': 'lastContrib',
'last set of edits': 'latest edits',
'lastContribHint': 'Show the net effect of changes made by the last editor',
'cur': 'cur',
'diffCur': 'diffCur',
'Show changes since revision %s': 'Show changes since revision %s',
'%s old': '%s old', // as in 4 weeks old
'oldEdit': 'oldEdit',
'purge': 'purge',
'purgeHint': 'Demand a fresh copy of %s',
'raw': 'source',
'rawHint': 'Download the source of %s',
'render': 'simple',
'renderHint': 'Show a plain HTML version of %s',
'Show the edit made to get revision': 'Show the edit made to get revision',
'sinceMe': 'sinceMe',
'changes since mine': 'diff my edit',
'sinceMeHint': 'Show changes since my last edit',
'Couldn\'t find an edit by %s\nin the last %s edits to\n%s': 'Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
'eds': 'eds',
'editors': 'editors',
'editorListHint': 'List the users who have edited %s',
'related': 'related',
'relatedChanges': 'relatedChanges',
'related changes': 'related changes',
'RecentchangeslinkedHint': 'Show changes in articles related to %s',
'editOld': 'editOld', ///// edit old version, or revert
'rv': 'rv',
'revert': 'revert',
'revertHint': 'Revert to %s',
'defaultpopupRedlinkSummary': 'Removing link to empty page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixDabsSummary': 'Disambiguate [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixRedirsSummary': 'Redirect bypass from [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupExtendedRevertSummary': 'Revert to revision dated %s by %s, oldid %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertToPreviousSummary': 'Revert to the revision prior to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertSummary': 'Revert to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertToPreviousSummary': 'Revert to the revision prior to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertSummary': 'Revert to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRmDabLinkSummary': 'Remove link to dab page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'Redirects': 'Redirects', // as in Redirects to ...
' to ': ' to ', // as in Redirects to ...
'Bypass redirect': 'Bypass redirect',
'Fix this redirect': 'Fix this redirect',
'disambig': 'disambig', ///// add or remove dab etc.
'disambigHint': 'Disambiguate this link to [[%s]]',
'Click to disambiguate this link to:': 'Click to disambiguate this link to:',
'remove this link': 'remove this link',
'remove all links to this page from this article': 'remove all links to this page from this article',
'remove all links to this disambig page from this article': 'remove all links to this disambig page from this article',
'mainlink': 'mainlink', ///// links, watch, unwatch
'wikiLink': 'wikiLink',
'wikiLinks': 'wikiLinks',
'links here': 'links here',
'whatLinksHere': 'whatLinksHere',
'what links here': 'what links here',
'WhatlinkshereHint': 'List the pages that are hyperlinked to %s',
'unwatchShort': 'un',
'watchThingy': 'watch', // called watchThingy because {}.watch is a function
'watchHint': 'Add %s to my watchlist',
'unwatchHint': 'Remove %s from my watchlist',
'Only found one editor: %s made %s edits': 'Only found one editor: %s made %s edits',
'%s seems to be the last editor to the page %s': '%s seems to be the last editor to the page %s',
'rss': 'rss',
/////////////////////////////////////
// diff previews
/////////////////////////////////////
'Diff truncated for performance reasons': 'Diff truncated for performance reasons',
'Old revision': 'Old revision',
'New revision': 'New revision',
'Something went wrong :-(': 'Something went wrong :-(',
'Empty revision, maybe non-existent': 'Empty revision, maybe non-existent',
'Unknown date': 'Unknown date',
/////////////////////////////////////
// other special previews
/////////////////////////////////////
'Empty category': 'Empty category',
'Category members (%s shown)': 'Category members (%s shown)',
'No image links found': 'No image links found',
'File links': 'File links',
'No image found': 'No image found',
'Image from Commons': 'Image from Commons',
'Description page': 'Description page',
/////////////////////////////////////
// user-related actions and info
/////////////////////////////////////
'user': 'user', ///// user page, talk, email, space
'user page': 'user page',
'user talk': 'user talk',
'edit user talk': 'edit user talk',
'leave comment': 'leave comment',
'email': 'email',
'email user': 'email user',
'EmailuserHint': 'Send an email to %s',
'space': 'space', // short form for userSpace link
'PrefixIndexHint': 'Show pages in the userspace of %s',
'count': 'count', ///// contributions, log
'edit counter': 'edit counter',
'editCounterLinkHint': 'Count the contributions made by %s',
'contribs': 'contribs',
'contributions': 'contributions',
'deletedContribs': 'deleted contributions',
'DeletedcontributionsHint': 'List deleted edits made by %s',
'ContributionsHint': 'List the contributions made by %s',
'log': 'log',
'user log': 'user log',
'userLogHint': 'Show %s\'s user log',
'arin': 'ARIN lookup', ///// ARIN lookup, block user or IP
'Look up %s in ARIN whois database': 'Look up %s in the ARIN whois database',
'unblockShort': 'un',
'block': 'block',
'block user': 'block user',
'IpblocklistHint': 'Unblock %s',
'BlockipHint': 'Prevent %s from editing',
'block log': 'block log',
'blockLogHint': 'Show the block log for %s',
'protectLogHint': 'Show the protection log for %s',
'pageLogHint': 'Show the page log for %s',
'deleteLogHint': 'Show the deletion log for %s',
'Invalid %s %s': 'The option %s is invalid: %s',
'No backlinks found': 'No backlinks found',
' and more': ' and more',
'undo': 'undo',
'undoHint': 'undo this edit',
'Download preview data': 'Download preview data',
'Invalid or IP user': 'Invalid or IP user',
'Not a registered username': 'Not a registered username',
'BLOCKED': 'BLOCKED',
' edits since: ': ' edits since: ',
/////////////////////////////////////
// Autoediting
/////////////////////////////////////
'Enter a non-empty edit summary or press cancel to abort': 'Enter a non-empty edit summary or press cancel to abort',
'Failed to get revision information, please edit manually.\n\n': 'Failed to get revision information, please edit manually.\n\n',
'The %s button has been automatically clicked. Please wait for the next page to load.': 'The %s button has been automatically clicked. Please wait for the next page to load.',
'Could not find button %s. Please check the settings in your javascript file.': 'Could not find button %s. Please check the settings in your javascript file.',
/////////////////////////////////////
// Popups setup
/////////////////////////////////////
'Open full-size image': 'Open full-size image',
'zxy': 'zxy'
};
function popupString(str) {
if (typeof popupStrings != 'undefined' && popupStrings && popupStrings[str]) { return popupStrings[str]; }
if (pg.string[str]) { return pg.string[str]; }
return str;
}
function tprintf(str,subs) {
if (typeof subs != typeof []) { subs = [subs]; }
return simplePrintf(popupString(str), subs);
}
//</NOLITE>
// ENDFILE: strings.js
////////////////////////////////////////////////////////////////////
// Run things
////////////////////////////////////////////////////////////////////
hookEvent('load', setupPopups);
addOnloadHook(autoEdit);
//support for MediaWiki's live preview
addOnloadHook( function() {
if(typeof doLivePreview != "function" || typeof $j != "function") return;
$j("#wpPreview").click(function(){
var i = setInterval(function(){
var p = document.getElementById("wikiPreview");
if(p.previousSibling.className == "mw-ajax-loader") return;
p.ranSetupTooltipsAlready = false;
setupTooltips(p);
clearInterval(i);
}, 500);
});
});
l9ko3do7x5pq35l3skhk74ipkacg8oz
14876
14875
2012-01-20T23:13:52Z
Hoo man
668
Bot: Security fix: [[WMFblog:2011/10/03/native-https-support-enabled-for-all-wikimedia-foundation-wikis/|protocol-relative URLs]] per https://meta.wikimedia.org/?oldid=3197161 ([[m:Stewards' noticeboard|questions?]]).
14876
javascript
text/javascript
var popupVersion="en:MediaWiki:Gadget-popups.js " + /*/{{subst:Selfsubst/now string|js|/*/ "2010-08-30 16:11:49 (UTC)" /*/}}/*/;
// STARTFILE: main.js
// **********************************************************************
// ** **
// ** changes to this file affect many users. **
// ** please discuss on the talk page before editing **
// ** **
// **********************************************************************
// ** **
// ** if you do edit this file, be sure that your editor recognizes it **
// ** as utf8, or the weird and wonderful characters in the namespaces **
// ** below will be completely broken. You can check with the show **
// ** changes button before submitting the edit. **
// ** test: مدیا מיוחד Мэдыя **
// ** **
// **********************************************************************
//////////////////////////////////////////////////
// Globals
//
// Trying to shove as many of these as possible into the pg (popup globals) object
function pg(){}; // dummy to stop errors
window.pg = {
re: {}, // regexps
ns: {}, // namespaces
string: {}, // translatable strings
wiki: {}, // local site info
misc: {}, // YUCK PHOOEY
option: {}, // options, see newOption etc
optionDefault: {}, // default option values
flag: {}, // misc flags
cache: {}, // page and image cache
structures: {}, // navlink structures
timer: {}, // all sorts of timers (too damn many)
counter: {}, // .. and all sorts of counters
current: {}, // state info
endoflist: null
};
window.pop = { // wrap various functions in here
init: {},
util: {},
endoflist: null
};
function popupsReady() {
if (!window.pg) { return false; }
if (!pg.flag) { return false; }
if (!pg.flag.finishedLoading) { return false; }
return true;
}
/// Local Variables: ///
/// mode:c ///
/// End: ///
// ENDFILE: main.js
// STARTFILE: actions.js
function setupTooltips(container, remove, force, popData) {
log('setupTooltips, container='+container+', remove='+remove);
if (!container) {
//<NOLITE>
// the main initial call
if (getValueOf('popupOnEditSelection') && window.doSelectionPopup && document && document.editform && document.editform.wpTextbox1) {
document.editform.wpTextbox1.onmouseup=doSelectionPopup;
}
//</NOLITE>
// article/content is a structure-dependent thing
container = defaultPopupsContainer();
}
if (!remove && !force && container.ranSetupTooltipsAlready) { return; }
container.ranSetupTooltipsAlready = !remove;
var anchors;
anchors=container.getElementsByTagName('A');
setupTooltipsLoop(anchors, 0, 250, 100, remove, popData);
}
function defaultPopupsContainer() {
if (getValueOf('popupOnlyArticleLinks')) {
return document.getElementById('article') ||
document.getElementById('content') ||
document.getElementById('mw_content') || document;
}
return document;
}
function setupTooltipsLoop(anchors,begin,howmany,sleep, remove, popData) {
log(simplePrintf('setupTooltipsLoop(%s,%s,%s,%s,%s)', arguments));
var finish=begin+howmany;
var loopend = min(finish, anchors.length);
var j=loopend - begin;
log ('setupTooltips: anchors.length=' + anchors.length + ', begin=' + begin +
', howmany=' + howmany + ', loopend=' + loopend + ', remove=' + remove);
var doTooltip= remove ? removeTooltip : addTooltip;
// try a faster (?) loop construct
if (j > 0) {
do {
var a=anchors[loopend - j];
if (!a || !a.href) {
log('got null anchor at index ' + loopend - j);
continue;
}
doTooltip(a, popData);
} while (--j);
}
if (finish < anchors.length) {
setTimeout(function() {
setupTooltipsLoop(anchors,finish,howmany,sleep,remove,popData);},
sleep);
} else {
if ( !remove && ! getValueOf('popupTocLinks')) { rmTocTooltips(); }
pg.flag.finishedLoading=true;
}
}
// eliminate popups from the TOC
// This also kills any onclick stuff that used to be going on in the toc
function rmTocTooltips() {
var toc=document.getElementById('toc');
if (toc) {
var tocLinks=toc.getElementsByTagName('A');
var tocLen = tocLinks.length;
for (j=0; j<tocLen; ++j) {
removeTooltip(tocLinks[j], true);
}
}
}
function addTooltip(a, popData) {
if ( !isPopupLink(a) ) { return; }
a.onmouseover=mouseOverWikiLink;
a.onmouseout= mouseOutWikiLink;
a.onmousedown = killPopup;
a.hasPopup = true;
a.popData = popData;
}
function removeTooltip(a) {
if ( !a.hasPopup ) { return; }
a.onmouseover = null;
a.onmouseout = null;
if (a.originalTitle) { a.title = a.originalTitle; }
a.hasPopup=false;
}
function removeTitle(a) {
if (a.originalTitle) { return; }
a.originalTitle=a.title;
a.title='';
}
function restoreTitle(a) {
if ( a.title || !a.originalTitle ) { return; }
a.title = a.originalTitle;
a.originalTitle='';
}
function registerHooks(np) {
var popupMaxWidth=getValueOf('popupMaxWidth');
if (typeof popupMaxWidth == 'number') {
var setMaxWidth = function () {
np.mainDiv.style.maxWidth = popupMaxWidth + 'px';
np.maxWidth = popupMaxWidth;
try {
// hack for IE
// see http://www.svendtofte.com/code/max_width_in_ie/
// use setExpression as documented here on msdn: http://tinyurl dot com/dqljn
if (np.mainDiv.style.setExpression) {
np.mainDiv.style.setExpression(
'width', 'document.body.clientWidth > ' +
popupMaxWidth + ' ? "' +popupMaxWidth + 'px": "auto"');
}
}
catch (errors) {
errlog( "Running on IE8 are we not?: " + errors );
}
};
np.addHook(setMaxWidth, 'unhide', 'before');
}
//<NOLITE>
if (window.addPopupShortcuts && window.rmPopupShortcuts) {
np.addHook(addPopupShortcuts, 'unhide', 'after');
np.addHook(rmPopupShortcuts, 'hide', 'before');
}
//</NOLITE>
}
function mouseOverWikiLink(evt) {
if (!window.popupsReady || !window.popupsReady()) { return; }
if (!evt && window.event) {evt=window.event};
return mouseOverWikiLink2(this, evt);
}
function footnoteTarget(a) {
var aTitle=Title.fromAnchor(a);
// We want ".3A" rather than "%3A" or "?" here, so use the anchor property directly
var anch = aTitle.anchor;
if ( ! /^(cite_note-|_note-|endnote)/.test(anch) ) { return false; }
var lTitle=Title.fromURL(location.href);
if ( lTitle.toString(true) != aTitle.toString(true) ) { return false; }
var el=document.getElementById(anch);
while ( el && typeof el.nodeName == 'string') {
var nt = el.nodeName.toLowerCase();
if ( nt == 'li' ) { return el; }
else if ( nt == 'body' ) { return false; }
else if ( el.parentNode ) { el=el.parentNode; }
else { return false; }
}
return false;
}
function footnotePreview(x, navpop) {
setPopupHTML('<hr>' + x.innerHTML, 'popupPreview', navpop.idNumber,
getValueOf('popupSubpopups') ? function() {
setupTooltips(document.getElementById('popupPreview' + navpop.idNumber));
} : null);
}
// var modid=0;
// if(!window.opera) { window.opera={postError: console.log}; }
function modifierKeyHandler(a) {
return function(evt) {
// opera.postError('modifierKeyHandler called' + (++modid));
// opera.postError(''+evt + modid);
// for (var i in evt) {
// opera.postError('' + modid + ' ' + i + ' ' + evt[i]);
// }
// opera.postError(''+evt.ctrlKey + modid);
var mod=getValueOf('popupModifier');
if (!mod) { return true; }
if (!evt && window.event) {evt=window.event};
// opera.postError('And now....'+modid);
// opera.postError(''+evt+modid);
// opera.postError(''+evt.ctrlKey+modid);
var modPressed = modifierPressed(evt);
var action = getValueOf('popupModifierAction');
// FIXME: probable bug - modifierPressed should be modPressed below?
if ( action == 'disable' && modifierPressed ) { return true; }
if ( action == 'enable' && !modifierPressed ) { return true; }
mouseOverWikiLink2(a, evt);
};
}
function modifierPressed(evt) {
var mod=getValueOf('popupModifier');
if (!mod) { return false; }
if (!evt && window.event) {evt=window.event};
// opera.postError('And now....'+modid);
// opera.postError(''+evt+modid);
// opera.postError(''+evt.ctrlKey+modid);
return ( evt && mod && evt[mod.toLowerCase() + 'Key'] );
}
function dealWithModifier(a,evt) {
if (!getValueOf('popupModifier')) { return false; }
var action = getValueOf('popupModifierAction');
if ( action == 'enable' && !modifierPressed(evt) ||
action == 'disable' && modifierPressed(evt) ) {
// if the modifier is needed and not pressed, listen for it until
// we mouseout of this link.
restoreTitle(a);
var addHandler='addEventListener';
var rmHandler='removeEventListener';
var on='';
if (!document.addEventListener) {
addHandler='attachEvent';
rmHandler='detachEvent';
on='on';
}
if (!document[addHandler]) { // forget it
return;
}
a.modifierKeyHandler=modifierKeyHandler(a);
switch (action) {
case 'enable':
document[addHandler](on+'keydown', a.modifierKeyHandler, false);
a[addHandler](on+'mouseout', function() {
document[rmHandler](on+'keydown',
a.modifierKeyHandler, false);
}, true);
break;
case 'disable':
document[addHandler](on+'keyup', a.modifierKeyHandler, false);
}
return true;
}
return false;
}
function mouseOverWikiLink2(a, evt) {
if (dealWithModifier(a,evt)) { return; }
if ( getValueOf('removeTitles') ) { removeTitle(a); }
if ( a==pg.current.link && a.navpopup && a.navpopup.isVisible() ) { return; }
pg.current.link=a;
if (getValueOf('simplePopups') && pg.option.popupStructure===null) {
// reset *default value* of popupStructure
setDefault('popupStructure', 'original');
}
var article=(new Title()).fromAnchor(a);
// set global variable (ugh) to hold article (wikipage)
pg.current.article = article;
if (!a.navpopup) {
// FIXME: this doesn't behave well if you mouse out of a popup
// directly into a link with the same href
if (pg.current.linksHash[a.href] && false) {
a.navpopup = pg.current.linksHash[a.href];
}
else {
a.navpopup=newNavpopup(a, article);
pg.current.linksHash[a.href] = a.navpopup;
pg.current.links.push(a);
}
}
if (a.navpopup.pending===null || a.navpopup.pending!==0) {
// either fresh popups or those with unfinshed business are redone from scratch
simplePopupContent(a, article);
}
a.navpopup.showSoonIfStable(a.navpopup.delay);
getValueOf('popupInitialWidth');
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=setInterval(checkPopupPosition, 600);
if(getValueOf('simplePopups')) {
if (getValueOf('popupPreviewButton') && !a.simpleNoMore) {
var d=document.createElement('div');
d.className='popupPreviewButtonDiv';
var s=document.createElement('span');
d.appendChild(s);
s.className='popupPreviewButton';
s['on' + getValueOf('popupPreviewButtonEvent')] = function() {
a.simpleNoMore=true;
nonsimplePopupContent(a,article);
}
s.innerHTML=popupString('show preview');
setPopupHTML(d, 'popupPreview', a.navpopup.idNumber);
}
return;
}
if (a.navpopup.pending!==0 ) {
nonsimplePopupContent(a, article);
}
}
// simplePopupContent: the content that is shown even when simplePopups is true
function simplePopupContent(a, article) {
/* FIXME hack */ a.navpopup.hasPopupMenu=false;
a.navpopup.setInnerHTML(popupHTML(a));
fillEmptySpans({navpopup:a.navpopup});
if (getValueOf('popupDraggable'))
{
var dragHandle = getValueOf('popupDragHandle') || null;
if (dragHandle && dragHandle != 'all') {
dragHandle += a.navpopup.idNumber;
}
setTimeout(function(){a.navpopup.makeDraggable(dragHandle);}, 150);
}
//<NOLITE>
if (getValueOf('popupRedlinkRemoval') && a.className=='new') {
setPopupHTML('<br>'+popupRedlinkHTML(article), 'popupRedlink', a.navpopup.idNumber);
}
//</NOLITE>
}
function debugData(navpopup) {
if(getValueOf('popupDebugging') && navpopup.idNumber) {
setPopupHTML('idNumber='+navpopup.idNumber + ', pending=' + navpopup.pending,
'popupError', navpopup.idNumber);
}
}
function newNavpopup(a, article) {
var navpopup = new Navpopup();
navpopup.fuzz=5;
navpopup.delay=getValueOf('popupDelay')*1000;
// increment global counter now
navpopup.idNumber = ++pg.idNumber;
navpopup.parentAnchor = a;
navpopup.parentPopup = (a.popData && a.popData.owner);
navpopup.article = article;
registerHooks(navpopup);
return navpopup;
}
function nonsimplePopupContent(a, article) {
var diff=null, history=null;
var params=parseParams(a.href);
var oldid=(typeof params.oldid=='undefined' ? null : params.oldid);
//<NOLITE>
if(getValueOf('popupPreviewDiffs') && window.loadDiff) {
diff=params.diff;
}
if(getValueOf('popupPreviewHistory')) {
history=(params.action=='history');
}
//</NOLITE>
a.navpopup.pending=0;
var x;
if (x=footnoteTarget(a)) {
footnotePreview(x, a.navpopup);
//<NOLITE>
} else if ( diff || diff === 0 ) {
loadDiff(article, oldid, diff, a.navpopup);
} else if ( history ) {
loadAPIPreview('history', article, a.navpopup);
} else if ( pg.re.contribs.test(a.href) ) {
loadAPIPreview('contribs', article, a.navpopup);
} else if ( pg.re.backlinks.test(a.href) ) {
loadAPIPreview('backlinks', article, a.navpopup);
} else if ( // FIXME should be able to get all preview combinations with options
article.namespace()==pg.ns.image &&
( getValueOf('imagePopupsForImages') || ! anchorContainsImage(a) )
) {
loadAPIPreview('imagepagepreview', article, a.navpopup);
loadImage(article, a.navpopup);
//</NOLITE>
} else {
if (article.namespace() == pg.ns.category &&
getValueOf('popupCategoryMembers')) {
loadAPIPreview('category', article, a.navpopup);
} else if ((article.namespace() == pg.ns.user || article.namespace() == pg.ns.usertalk) &&
getValueOf('popupUserInfo')) {
loadAPIPreview('userinfo', article, a.navpopup);
}
startArticlePreview(article, oldid, a.navpopup);
}
}
function pendingNavpopTask(navpop) {
if (navpop && navpop.pending===null) { navpop.pending=0; }
++navpop.pending;
debugData(navpop);
}
function completedNavpopTask(navpop) {
if (navpop && navpop.pending) { --navpop.pending; }
debugData(navpop);
}
function startArticlePreview(article, oldid, navpop) {
navpop.redir=0;
loadPreview(article, oldid, navpop);
}
function loadPreview(article, oldid, navpop) {
pendingNavpopTask(navpop);
if (!navpop.redir) { navpop.originalArticle=article; }
if (!navpop.visible && getValueOf('popupLazyDownloads')) {
var id=(navpop.redir) ? 'DOWNLOAD_PREVIEW_REDIR_HOOK' : 'DOWNLOAD_PREVIEW_HOOK';
navpop.addHook(function() {
getWiki(article, insertPreview, oldid, navpop);
return true; }, 'unhide', 'before', id);
} else {
getWiki(article, insertPreview, oldid, navpop);
}
}
function loadPreviewFromRedir(redirMatch, navpop) {
// redirMatch is a regex match
var target = new Title().fromWikiText(redirMatch[2]);
// overwrite (or add) anchor from original target
// mediawiki does overwrite; eg [[User:Lupin/foo3#Done]]
if ( navpop.article.anchor ) { target.anchor = navpop.article.anchor; }
var trailingRubbish=redirMatch[4];
navpop.redir++;
navpop.redirTarget=target;
//<NOLITE>
if (window.redirLink) {
var warnRedir = redirLink(target, navpop.article);
setPopupHTML(warnRedir, 'popupWarnRedir', navpop.idNumber);
}
//</NOLITE>
navpop.article=target;
fillEmptySpans({redir: true, redirTarget: target, navpopup:navpop});
return loadPreview(target, null, navpop);
}
function insertPreview(download) {
if (!download.owner) { return; }
var redirMatch = pg.re.redirect.exec(download.data);
if (download.owner.redir===0 && redirMatch) {
completedNavpopTask(download.owner);
loadPreviewFromRedir(redirMatch, download.owner);
return;
}
if (download.owner.visible || !getValueOf('popupLazyPreviews')) {
insertPreviewNow(download);
} else {
var id=(download.owner.redir) ? 'PREVIEW_REDIR_HOOK' : 'PREVIEW_HOOK';
download.owner.addHook( function(){insertPreviewNow(download); return true;},
'unhide', 'after', id );
}
}
function insertPreviewNow(download) {
if (!download.owner) { return; }
var wikiText=download.data;
var navpop=download.owner;
completedNavpopTask(navpop);
var art=navpop.redirTarget || navpop.originalArticle;
//<NOLITE>
makeFixDabs(wikiText, navpop);
if (getValueOf('popupSummaryData') && window.getPageInfo) {
var info=getPageInfo(wikiText, download);
setPopupTrailer(getPageInfo(wikiText, download), navpop.idNumber);
}
var imagePage='';
if (art.namespace()==pg.ns.image) { imagePage=art.toString(); }
else { imagePage=getValidImageFromWikiText(wikiText); }
if(imagePage) { loadImage(Title.fromWikiText(imagePage), navpop); }
//</NOLITE>
if (getValueOf('popupPreviews')) { insertArticlePreview(download, art, navpop); }
}
function insertArticlePreview(download, art, navpop) {
if (download && typeof download.data == typeof ''){
if (art.namespace()==pg.ns.template && getValueOf('popupPreviewRawTemplates')) {
// FIXME compare/consolidate with diff escaping code for wikitext
var h='<hr><tt>' + download.data.entify().split('\\n').join('<br>\\n') + '</tt>';
setPopupHTML(h, 'popupPreview', navpop.idNumber);
}
else {
var p=prepPreviewmaker(download.data, art, navpop);
p.showPreview();
}
}
}
function prepPreviewmaker(data, article, navpop) {
// deal with tricksy anchors
var d=anchorize(data, article.anchorString());
var urlBase=joinPath([pg.wiki.articlebase, article.urlString()]);
var p=new Previewmaker(d, urlBase, navpop);
return p;
}
// Try to imitate the way mediawiki generates HTML anchors from section titles
function anchorize(d, anch) {
if (!anch) { return d; }
var anchRe=RegExp('=+\\s*' + literalizeRegex(anch).replace(/[_ ]/g, '[_ ]') + '\\s*=+');
var match=d.match(anchRe);
if(match && match.length > 0 && match[0]) { return d.substring(d.indexOf(match[0])); }
// now try to deal with == foo [[bar|baz]] boom == -> #foo_baz_boom
var lines=d.split('\n');
for (var i=0; i<lines.length; ++i) {
lines[i]=lines[i].replace(RegExp('[[]{2}([^|\\]]*?[|])?(.*?)[\\]]{2}', 'g'), '$2')
.replace(/'''([^'])/g, '$1').replace(RegExp("''([^'])", 'g'), '$1');
if (lines[i].match(anchRe)) {
return d.split('\n').slice(i).join('\n').replace(RegExp('^[^=]*'), '');
}
}
return d;
}
function killPopup() {
if (getValueOf('popupShortcutKeys') && window.rmPopupShortcuts) { rmPopupShortcuts(); }
if (!pg) { return; }
pg.current.link && pg.current.link.navpopup && pg.current.link.navpopup.banish();
pg.current.link=null;
abortAllDownloads();
if (pg.timer.checkPopupPosition !== null) {
clearInterval(pg.timer.checkPopupPosition);
pg.timer.checkPopupPosition=null;
}
return true; // preserve default action
}
// ENDFILE: actions.js
// STARTFILE: domdrag.js
/**
@fileoverview
The {@link Drag} object, which enables objects to be dragged around.
<pre>
*************************************************
dom-drag.js
09.25.2001
www.youngpup.net
**************************************************
10.28.2001 - fixed minor bug where events
sometimes fired off the handle, not the root.
*************************************************
Pared down, some hooks added by [[User:Lupin]]
Copyright Aaron Boodman.
Saying stupid things daily since March 2001.
</pre>
*/
/**
Creates a new Drag object. This is used to make various DOM elements draggable.
@constructor
*/
function Drag () {
/**
Condition to determine whether or not to drag. This function should take one parameter, an Event.
To disable this, set it to <code>null</code>.
@type Function
*/
this.startCondition = null;
/**
Hook to be run when the drag finishes. This is passed the final coordinates of
the dragged object (two integers, x and y). To disables this, set it to <code>null</code>.
@type Function
*/
this.endHook = null;
}
/**
Gets an event in a cross-browser manner.
@param {Event} e
@private
*/
Drag.prototype.fixE = function(e) {
if (typeof e == 'undefined') { e = window.event; }
if (typeof e.layerX == 'undefined') { e.layerX = e.offsetX; }
if (typeof e.layerY == 'undefined') { e.layerY = e.offsetY; }
return e;
};
/**
Initialises the Drag instance by telling it which object you want to be draggable, and what you want to drag it by.
@param {DOMElement} o The "handle" by which <code>oRoot</code> is dragged.
@param {DOMElement} oRoot The object which moves when <code>o</code> is dragged, or <code>o</code> if omitted.
*/
Drag.prototype.init = function(o, oRoot) {
var dragObj = this;
this.obj = o;
o.onmousedown = function(e) { dragObj.start.apply( dragObj, [e]); };
o.dragging = false;
o.popups_draggable = true;
o.hmode = true;
o.vmode = true;
o.root = oRoot && oRoot !== null ? oRoot : o ;
if (isNaN(parseInt(o.root.style.left, 10))) { o.root.style.left = "0px"; }
if (isNaN(parseInt(o.root.style.top, 10))) { o.root.style.top = "0px"; }
o.root.onthisStart = function(){};
o.root.onthisEnd = function(){};
o.root.onthis = function(){};
};
/**
Starts the drag.
@private
@param {Event} e
*/
Drag.prototype.start = function(e) {
var o = this.obj; // = this;
e = this.fixE(e);
if (this.startCondition && !this.startCondition(e)) { return; }
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10);
o.root.onthisStart(x, y);
o.lastMouseX = e.clientX;
o.lastMouseY = e.clientY;
var dragObj = this;
o.onmousemoveDefault = document.onmousemove;
o.dragging = true;
document.onmousemove = function(e) { dragObj.drag.apply( dragObj, [e] ); };
document.onmouseup = function(e) { dragObj.end.apply( dragObj, [e] ); };
return false;
};
/**
Does the drag.
@param {Event} e
@private
*/
Drag.prototype.drag = function(e) {
e = this.fixE(e);
var o = this.obj;
var ey = e.clientY;
var ex = e.clientX;
var y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10);
var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10 );
var nx, ny;
nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));
this.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
this.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
this.obj.lastMouseX = ex;
this.obj.lastMouseY = ey;
this.obj.root.onthis(nx, ny);
return false;
};
/**
Ends the drag.
@private
*/
Drag.prototype.end = function() {
document.onmousemove=this.obj.onmousemoveDefault;
document.onmouseup = null;
this.obj.dragging = false;
if (this.endHook) {
this.endHook( parseInt(this.obj.root.style[this.obj.hmode ? "left" : "right"], 10),
parseInt(this.obj.root.style[this.obj.vmode ? "top" : "bottom"], 10));
}
};
// ENDFILE: domdrag.js
// STARTFILE: structures.js
//<NOLITE>
pg.structures.original={};
pg.structures.original.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle',
'popupData', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
pg.structures.original.popupRedirSpans=function () {
return ['popupRedir', 'popupWarnRedir', 'popupRedirTopLinks',
'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'];
};
pg.structures.original.popupTitle=function (x) {
log ('defaultstructure.popupTitle');
if (!getValueOf('popupNavLinks')) {
return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
}
return '';
};
pg.structures.original.popupTopLinks=function (x) {
log ('defaultstructure.popupTopLinks');
if (getValueOf('popupNavLinks')) { return navLinksHTML(x.article, x.hint, x.params); }
return '';
};
pg.structures.original.popupImage=function(x) {
log ('original.popupImage, x.article='+x.article+', x.navpop.idNumber='+x.navpop.idNumber);
return imageHTML(x.article, x.navpop.idNumber);
};
pg.structures.original.popupRedirTitle=pg.structures.original.popupTitle;
pg.structures.original.popupRedirTopLinks=pg.structures.original.popupTopLinks;
function copyStructure(oldStructure, newStructure) {
pg.structures[newStructure]={};
for (var prop in pg.structures[oldStructure]) {
pg.structures[newStructure][prop]=pg.structures[oldStructure][prop];
}
}
copyStructure('original', 'nostalgia');
pg.structures.nostalgia.popupTopLinks=function(x) {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>';
str+='if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{'
+ editstr + '}'
var historystr='<<history|shortcut=h>>';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>';
str += 'if(admin){<br>}else{*}<<move|shortcut=m>>';
// admin links
str += 'if(admin){*<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>}';
return navlinkStringToHTML(str, x.article, x.params);
};
pg.structures.nostalgia.popupRedirTopLinks=pg.structures.nostalgia.popupTopLinks;
/** -- fancy -- **/
copyStructure('original', 'fancy');
pg.structures.fancy.popupTitle=function (x) {
return navlinkStringToHTML('<font size=+0><<mainlink>></font>',x.article,x.params);
};
pg.structures.fancy.popupTopLinks=function(x) {
var hist='<<history|shortcut=h|hist>>|<<lastEdit|shortcut=/|last>>if(mainspace_en){|<<editors|shortcut=E|eds>>}';
var watch='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
var move='<<move|shortcut=m|move>>';
return navlinkStringToHTML('if(talk){' +
'<<edit|shortcut=e>>|<<new|shortcut=+|+>>*' + hist + '*' +
'<<article|shortcut=a>>|<<editArticle|edit>>' + '*' + watch + '*' + move +
'}else{<<edit|shortcut=e>>*' + hist +
'*<<talk|shortcut=t|>>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>' +
'*' + watch + '*' + move+'}<br>', x.article, x.params);
};
pg.structures.fancy.popupOtherLinks=function(x) {
var admin='<<unprotect|unprotectShort>>|<<protect|shortcut=p>>*<<undelete|undeleteShort>>|<<delete|shortcut=d|del>>';
var user='<<contribs|shortcut=c>>if(wikimedia){|<<count|shortcut=#|#>>}';
user+='if(ipuser){|<<arin>>}else{*<<email|shortcut=E|'+
popupString('email')+'>>}if(admin){*<<block|shortcut=b>>}';
var normal='<<whatLinksHere|shortcut=l|links here>>*<<relatedChanges|shortcut=r|related>>';
return navlinkStringToHTML('<br>if(user){' + user + '*}if(admin){'+admin+'if(user){<br>}else{*}}' + normal,
x.article, x.params);
};
pg.structures.fancy.popupRedirTitle=pg.structures.fancy.popupTitle;
pg.structures.fancy.popupRedirTopLinks=pg.structures.fancy.popupTopLinks;
pg.structures.fancy.popupRedirOtherLinks=pg.structures.fancy.popupOtherLinks;
/** -- fancy2 -- **/
// hack for [[User:MacGyverMagic]]
copyStructure('fancy', 'fancy2');
pg.structures.fancy2.popupTopLinks=function(x) { // hack out the <br> at the end and put one at the beginning
return '<br>'+pg.structures.fancy.popupTopLinks(x).replace(RegExp('<br>$','i'),'');
};
pg.structures.fancy2.popupLayout=function () { // move toplinks to after the title
return ['popupError', 'popupImage', 'popupTitle', 'popupData', 'popupTopLinks', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
/** -- menus -- **/
copyStructure('original', 'menus');
pg.structures.menus.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupData', 'popupMiscTools', ['popupRedlink'],
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview', 'popupFixDab'];
};
function toggleSticky(uid) {
var popDiv=document.getElementById('navpopup_maindiv'+uid);
if (!popDiv) { return; }
if (!popDiv.navpopup.sticky) { popDiv.navpopup.stick(); }
else {
popDiv.navpopup.unstick();
popDiv.navpopup.hide();
}
}
pg.structures.menus.popupTopLinks = function (x, shorter) {
// FIXME maybe this stuff should be cached
var s=[];
var dropdiv='<div class="popup_drop">';
var enddiv='</div>';
var endspan='</span>';
var hist='<<history|shortcut=h>>';
if (!shorter) { hist = '<menurow>' + hist +
'|<<historyfeed|rss>>if(mainspace_en){|<<editors|shortcut=E>>}</menurow>'; }
var lastedit='<<lastEdit|shortcut=/|show last edit>>';
var jsHistory='<<lastContrib|last set of edits>><<sinceMe|changes since mine>>';
var linkshere='<<whatLinksHere|shortcut=l|what links here>>';
var related='<<relatedChanges|shortcut=r|related changes>>';
var search='<menurow><<search|shortcut=s>>if(wikimedia){|<<globalsearch|shortcut=g|global>>}' +
'|<<google|shortcut=G|web>></menurow>';
var watch='<menurow><<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>></menurow>';
var protect='<menurow><<unprotect|unprotectShort>>|' +
'<<protect|shortcut=p>>|<<protectlog|log>></menurow>';
var del='<menurow><<undelete|undeleteShort>>|<<delete|shortcut=d>>|' +
'<<deletelog|log>></menurow>';
var move='<<move|shortcut=m|move page>>';
var nullPurge='<menurow><<nullEdit|shortcut=n|null edit>>|<<purge|shortcut=P>></menurow>';
var viewOptions='<menurow><<view|shortcut=v>>|<<render|shortcut=S>>|<<raw>></menurow>';
var editRow='if(oldid){' +
'<menurow><<edit|shortcut=e>>|<<editOld|shortcut=e|this revision>></menurow>' +
'<menurow><<revert|shortcut=v>>|<<undo>></menurow>' + '}else{<<edit|shortcut=e>>}';
var markPatrolled='if(rcid){<<markpatrolled|mark patrolled>>}';
var newTopic='if(talk){<<new|shortcut=+|new topic>>}';
var protectDelete='if(admin){' + protect + del + '}';
if (getValueOf('popupActionsMenu')) {
s.push( '<<mainlink>>*' + dropdiv + menuTitle('actions'));
} else {
s.push( dropdiv + '<<mainlink>>');
}
s.push( '<menu>')
s.push( editRow + markPatrolled + newTopic + hist + lastedit )
if (!shorter) { s.push(jsHistory); }
s.push( move + linkshere + related)
if (!shorter) { s.push(nullPurge + search); }
if (!shorter) { s.push(viewOptions); }
s.push('<hr>' + watch + protectDelete);
s.push('<hr>' +
'if(talk){<<article|shortcut=a|view article>><<editArticle|edit article>>}' +
'else{<<talk|shortcut=t|talk page>><<editTalk|edit talk>>' +
'<<newTalk|shortcut=+|new topic>>}</menu>' + enddiv);
// user menu starts here
var email='<<email|shortcut=E|email user>>';
var contribs= 'if(wikimedia){<menurow>}<<contribs|shortcut=c|contributions>>if(wikimedia){</menurow>}' +
'if(admin){<menurow><<deletedContribs>></menurow>}';
s.push('if(user){*' + dropdiv + menuTitle('user'));
s.push('<menu>'); +
s.push('<menurow><<userPage|shortcut=u|user page>>|<<userSpace|space>></menurow>');
s.push('<<userTalk|shortcut=t|user talk>><<editUserTalk|edit user talk>>' +
'<<newUserTalk|shortcut=+|leave comment>>');
if(!shorter) { s.push( 'if(ipuser){<<arin>>}else{' + email + '}') }
else { s.push( 'if(ipuser){}else{' + email + '}') }
s.push('<hr>' + contribs + '<<userlog|shortcut=L|user log>>');
s.push('if(wikimedia){<<count|shortcut=#|edit counter>>}');
s.push('if(admin){<menurow><<unblock|unblockShort>>|<<block|shortcut=b|block user>></menurow>}');
s.push('<<blocklog|shortcut=B|block log>>' + getValueOf('popupExtraUserMenu'));
s.push('</menu>' + enddiv + '}');
// popups menu starts here
if (getValueOf('popupSetupMenu') && !x.navpop.hasPopupMenu /* FIXME: hack */) {
x.navpop.hasPopupMenu=true;
s.push('*' + dropdiv + menuTitle('popupsMenu') + '<menu>');
s.push('<<togglePreviews|toggle previews>>');
s.push('<<purgePopups|reset>>');
s.push('<<disablePopups|disable>>');
s.push('</menu>'+enddiv);
}
return navlinkStringToHTML(s.join(''), x.article, x.params);
};
function menuTitle(s) {
return '<a href="#" noPopup=1>' + popupString(s) + '</a>';
}
pg.structures.menus.popupRedirTitle=pg.structures.menus.popupTitle;
pg.structures.menus.popupRedirTopLinks=pg.structures.menus.popupTopLinks;
copyStructure('menus', 'shortmenus');
pg.structures.shortmenus.popupTopLinks=function(x) {
return pg.structures.menus.popupTopLinks(x,true);
};
pg.structures.shortmenus.popupRedirTopLinks=pg.structures.shortmenus.popupTopLinks;
copyStructure('shortmenus', 'dabshortmenus');
pg.structures.dabshortmenus.popupLayout=function () {
return ['popupError', 'popupImage', 'popupTopLinks', 'popupTitle', 'popupOtherLinks',
'popupRedir', ['popupWarnRedir', 'popupRedirTopLinks', 'popupRedirTitle', 'popupRedirData', 'popupRedirOtherLinks'],
'popupData', 'popupMiscTools', ['popupRedlink'], 'popupFixDab',
'popupPrePreviewSep', 'popupPreview', 'popupSecondPreview', 'popupPreviewMore', 'popupPostPreview'];
};
copyStructure('menus', 'dabmenus');
pg.structures.dabmenus.popupLayout=pg.structures.dabshortmenus.popupLayout;
//</NOLITE>
pg.structures.lite={};
pg.structures.lite.popupLayout=function () {
return ['popupTitle', 'popupPreview' ];
};
pg.structures.lite.popupTitle=function (x) {
log (x.article + ': structures.lite.popupTitle');
//return navlinkStringToHTML('<b><<mainlink>></b>',x.article,x.params);
return '<div><span class="popup_mainlink"><b>' + x.article.toString() + '</b></span></div>';
};
// ENDFILE: structures.js
// STARTFILE: autoedit.js
//<NOLITE>
function getParamValue(paramName, h) {
if (typeof h == 'undefined' ) { h = document.location.href; }
var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
var m=cmdRe.exec(h);
if (m) {
try {
return decodeURIComponent(m[1]);
} catch (someError) {}
}
return null;
}
function substitute(data,cmdBody) {
// alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags);
var fromRe=RegExp(cmdBody.from, cmdBody.flags);
return data.replace(fromRe, cmdBody.to);
}
function execCmds(data, cmdList) {
for (var i=0; i<cmdList.length; ++i) {
data=cmdList[i].action(data, cmdList[i]);
}
return data;
}
function parseCmd(str) {
// returns a list of commands
if (!str.length) { return []; }
var p=false;
switch (str.charAt(0)) {
case 's':
p=parseSubstitute(str);
break;
default:
return false;
}
if (p) { return [p].concat(parseCmd(p.remainder)); }
return false;
}
function unEscape(str, sep) {
return str.split('\\\\').join('\\').split('\\'+sep).join(sep).split('\\n').join('\n');
}
function parseSubstitute(str) {
// takes a string like s/a/b/flags;othercmds and parses it
var from,to,flags,tmp;
if (str.length<4) { return false; }
var sep=str.charAt(1);
str=str.substring(2);
tmp=skipOver(str,sep);
if (tmp) { from=tmp.segment; str=tmp.remainder; }
else { return false; }
tmp=skipOver(str,sep);
if (tmp) { to=tmp.segment; str=tmp.remainder; }
else { return false; }
flags='';
if (str.length) {
tmp=skipOver(str,';') || skipToEnd(str, ';');
if (tmp) {flags=tmp.segment; str=tmp.remainder; }
}
return {action: substitute, from: from, to: to, flags: flags, remainder: str};
}
function skipOver(str,sep) {
var endSegment=findNext(str,sep);
if (endSegment<0) { return false; }
var segment=unEscape(str.substring(0,endSegment), sep);
return {segment: segment, remainder: str.substring(endSegment+1)};
}
function skipToEnd(str,sep) {
return {segment: str, remainder: ''};
}
function findNext(str, ch) {
for (var i=0; i<str.length; ++i) {
if (str.charAt(i)=='\\') { i+=2; }
if (str.charAt(i)==ch) { return i; }
}
return -1;
}
function setCheckbox(param, box) {
var val=getParamValue(param);
if (val!==null) {
switch (val) {
case '1': case 'yes': case 'true':
box.checked=true;
break;
case '0': case 'no': case 'false':
box.checked=false;
}
}
}
function autoEdit() {
if (!setupPopups.completed) { setupPopups(); }
if (!document.editform || !window.wgEnableAPI || !wgEnableAPI ) { return false; }
if (window.autoEdit.alreadyRan) { return false; }
window.autoEdit.alreadyRan=true;
var cmdString=getParamValue('autoedit');
if (cmdString) {
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
var cmdList=parseCmd(cmdString);
var input=editbox.value;
var output=execCmds(input, cmdList);
editbox.value=output;
// wikEd user script compatibility
if (typeof(wikEdUseWikEd) != 'undefined') {
if (wikEdUseWikEd == true) {
WikEdUpdateFrame();
}
}
}
setCheckbox('autominor', document.editform.wpMinoredit);
setCheckbox('autowatch', document.editform.wpWatchthis);
var rvid = getParamValue('autorv');
if (rvid) {
var url=pg.wiki.apiwikibase + '?action=query&format=json&prop=revisions&revids='+rvid;
startDownload(url, null, autoEdit2);
} else { autoEdit2(); }
}
function autoEdit2(d) {
var summary=getParamValue('autosummary');
var summaryprompt=getParamValue('autosummaryprompt');
var summarynotice='';
if (d && d.data && getParamValue('autorv')) {
var s = getRvSummary(summary, d.data);
if (s===false) {
summaryprompt=true;
summarynotice=popupString('Failed to get revision information, please edit manually.\n\n');
summary = simplePrintf(summary, [getParamValue('autorv'), '(unknown)', '(unknown)']);
} else { summary = s; }
}
if (summaryprompt) {
var txt= summarynotice +
popupString('Enter a non-empty edit summary or press cancel to abort');
var response=prompt(txt, summary);
if (response) { summary=response; }
else { return; }
}
if (summary) { document.editform.wpSummary.value=summary; }
// Attempt to avoid possible premature clicking of the save button
// (maybe delays in updates to the DOM are to blame?? or a red herring)
setTimeout(autoEdit3, 100);
}
function autoClickToken() {
return document.cookie.substr(document.cookie.indexOf("session=")+8,4);
}
function autoEdit3() {
if( getParamValue('actoken') != autoClickToken()) return;
var btn=getParamValue('autoclick');
if (btn) {
if (document.editform && document.editform[btn]) {
var button=document.editform[btn];
var msg=tprintf('The %s button has been automatically clicked. Please wait for the next page to load.',
[ button.value ]);
bannerMessage(msg);
document.title='('+document.title+')';
button.click();
} else {
alert(tprintf('Could not find button %s. Please check the settings in your javascript file.',
[ btn ]));
}
}
}
function bannerMessage(s) {
var headings=document.getElementsByTagName('h1');
if (headings) {
var div=document.createElement('div');
div.innerHTML='<font size=+1><b>' + s + '</b></font>';
headings[0].parentNode.insertBefore(div, headings[0]);
}
}
function getRvSummary(template, json) {
try {
var o=getJsObj(json);
var edit = anyChild(o.query.pages).revisions[0];
} catch (badness) {return false;}
var timestamp = edit.timestamp.split(/[A-Z]/g).join(' ').replace(/^ *| *$/g, '');
return simplePrintf(template, [edit.revid, timestamp, edit.user]);
}
//</NOLITE>
// ENDFILE: autoedit.js
// STARTFILE: downloader.js
/**
@fileoverview
{@link Downloader}, a xmlhttprequest wrapper, and helper functions.
*/
/**
Creates a new Downloader
@constructor
@class The Downloader class. Create a new instance of this class to download stuff.
@param {String} url The url to download. This can be omitted and supplied later.
*/
function Downloader(url) {
// Source: http://jibbering.com/2002/4/httprequest.html
/** xmlhttprequest object which we're wrapping */
this.http = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation,
// we can cope with old IE versions.
// and security blocked creation of the objects.
try {
this.http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
this.http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
// this.http = false;
}
}
@end @*/
if (! this.http && typeof XMLHttpRequest!='undefined') { this.http = new XMLHttpRequest(); }
/**
The url to download
@type String
*/
this.url = url;
/**
A universally unique ID number
@type integer
*/
this.id=null;
/**
Modification date, to be culled from the incoming headers
@type Date
@private
*/
this.lastModified = null;
/**
What to do when the download completes successfully
@type Function
@private
*/
this.callbackFunction = null;
/**
What to do on failure
@type Function
@private
*/
this.onFailure = null;
/**
Flag set on <code>abort</code>
@type boolean
*/
this.aborted = false;
/**
HTTP method. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html for possibilities.
@type String
*/
this.method='GET';
/**
Async flag.
@type boolean
*/
this.async=true;
}
new Downloader();
/** Submits the http request. */
Downloader.prototype.send = function (x) {
if (!this.http) { return null; }
return this.http.send(x);
};
/** Aborts the download, setting the <code>aborted</code> field to true. */
Downloader.prototype.abort = function () {
if (!this.http) { return null; }
this.aborted=true;
return this.http.abort();
};
/** Returns the downloaded data. */
Downloader.prototype.getData = function () {if (!this.http) { return null; } return this.http.responseText;};
/** Prepares the download. */
Downloader.prototype.setTarget = function () {
if (!this.http) { return null; }
this.http.open(this.method, this.url, this.async);
};
/** Gets the state of the download. */
Downloader.prototype.getReadyState=function () {if (!this.http) { return null; } return this.http.readyState;};
pg.misc.downloadsInProgress = { };
/** Starts the download.
Note that setTarget {@link Downloader#setTarget} must be run first
*/
Downloader.prototype.start=function () {
if (!this.http) { return; }
pg.misc.downloadsInProgress[this.id] = this;
this.http.send(null);
};
/** Gets the 'Last-Modified' date from the download headers.
Should be run after the download completes.
Returns <code>null</code> on failure.
@return {Date}
*/
Downloader.prototype.getLastModifiedDate=function () {
if(!this.http) { return null; }
var lastmod=null;
try {
lastmod=this.http.getResponseHeader('Last-Modified');
} catch (err) {}
if (lastmod) { return new Date(lastmod); }
return null;
};
/** Sets the callback function.
@param {Function} f callback function, called as <code>f(this)</code> on success
*/
Downloader.prototype.setCallback = function (f) {
if(!this.http) { return; }
this.http.onreadystatechange = f;
};
Downloader.prototype.getStatus = function() { if (!this.http) { return null; } return this.http.status; };
//////////////////////////////////////////////////
// helper functions
/** Creates a new {@link Downloader} and prepares it for action.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function newDownload(url, id, callback, onfailure) {
var d=new Downloader(url);
if (!d.http) { return 'ohdear'; }
d.id=id;
d.setTarget();
if (!onfailure) {
onfailure=2;
}
var f = function () {
if (d.getReadyState() == 4) {
delete pg.misc.downloadsInProgress[this.id];
try {
if ( d.getStatus() == 200 ) {
d.data=d.getData();
d.lastModified=d.getLastModifiedDate();
callback(d);
} else if (typeof onfailure == typeof 1) {
if (onfailure > 0) {
// retry
newDownload(url, id, callback, onfailure - 1);
}
} else if (typeof onfailure == 'function') {
onfailure(d,url,id,callback);
}
} catch (somerr) { /* ignore it */ }
}
};
d.setCallback(f);
return d;
}
/** Simulates a download from cached data.
The supplied data is put into a {@link Downloader} as if it had downloaded it.
@param {String} url The url.
@param {integer} id The ID.
@param {Function} callback The callback, which is invoked immediately as <code>callback(d)</code>,
where <code>d</code> is the new {@link Downloader}.
@param {String} data The (cached) data.
@param {Date} lastModified The (cached) last modified date.
*/
function fakeDownload(url, id, callback, data, lastModified, owner) {
var d=newDownload(url,callback);
d.owner=owner;
d.id=id; d.data=data;
d.lastModified=lastModified;
return callback(d);
}
/**
Starts a download.
@param {String} url The url to download
@param {integer} id The ID of the {@link Downloader} object
@param {Function} callback The callback function invoked on success
@return {String/Downloader} the {@link Downloader} object created, or 'ohdear' if an unsupported browser
*/
function startDownload(url, id, callback) {
var d=newDownload(url, id, callback);
if (typeof d == typeof '' ) { return d; }
d.start();
return d;
}
/**
Aborts all downloads which have been started.
*/
function abortAllDownloads() {
for ( var x in pg.misc.downloadsInProgress ) {
try {
pg.misc.downloadsInProgress[x].aborted=true;
pg.misc.downloadsInProgress[x].abort();
delete pg.misc.downloadsInProgress[x];
} catch (e) { }
}
}
// ENDFILE: downloader.js
// STARTFILE: livepreview.js
// TODO: location is often not correct (eg relative links in previews)
/**
* InstaView - a Mediawiki to HTML converter in JavaScript
* Version 0.6.1
* Copyright (C) Pedro Fayolle 2005-2006
* //en.wikipedia.org/wiki/User:Pilaf
* Distributed under the BSD license
*
* Changelog:
*
* 0.6.1
* - Fixed problem caused by \r characters
* - Improved inline formatting parser
*
* 0.6
* - Changed name to InstaView
* - Some major code reorganizations and factored out some common functions
* - Handled conversion of relative links (i.e. [[/foo]])
* - Fixed misrendering of adjacent definition list items
* - Fixed bug in table headings handling
* - Changed date format in signatures to reflect Mediawiki's
* - Fixed handling of [[:Image:...]]
* - Updated MD5 function (hopefully it will work with UTF-8)
* - Fixed bug in handling of links inside images
*
* To do:
* - Better support for <math>
* - Full support for <nowiki>
* - Parser-based (as opposed to RegExp-based) inline wikicode handling (make it one-pass and bullet-proof)
* - Support for templates (through AJAX)
* - Support for coloured links (AJAX)
*/
var Insta = {}
function setupLivePreview() {
// options
Insta.conf =
{
baseUrl: '',
user: {},
wiki: {
lang: pg.wiki.lang,
interwiki: pg.wiki.interwiki,
default_thumb_width: 180
},
paths: {
articles: pg.wiki.articlePath + '/',
// Only used for Insta previews with images. (not in popups)
math: '/math/',
images: '//upload.wikimedia.org/wikipedia/en/', // FIXME ( window.getImageUrlStart ? getImageUrlStart(pg.wiki.hostname) : ''),
images_fallback: '//upload.wikimedia.org/wikipedia/commons/',
magnify_icon: 'skins/common/images/magnify-clip.png'
},
locale: {
user: pg.ns.user,
image: pg.ns.image,
category: pg.ns.category,
// shouldn't be used in popup previews, i think
months: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
}
}
// options with default values or backreferences
with (Insta.conf) {
user.name = user.name || 'Wikipedian'
user.signature = '[['+locale.user+':'+user.name+'|'+user.name+']]'
//paths.images = '//upload.wikimedia.org/wikipedia/' + wiki.lang + '/'
}
// define constants
Insta.BLOCK_IMAGE = new RegExp('^\\[\\[(?:File|Image|'+Insta.conf.locale.image+
'):.*?\\|.*?(?:frame|thumbnail|thumb|none|right|left|center)', 'i');
}
Insta.dump = function(from, to)
{
if (typeof from == 'string') from = document.getElementById(from)
if (typeof to == 'string') to = document.getElementById(to)
to.innerHTML = this.convert(from.value)
}
Insta.convert = function(wiki)
{
var ll = (typeof wiki == 'string')? wiki.replace(/\r/g,'').split(/\n/): wiki, // lines of wikicode
o='', // output
p=0, // para flag
$r // result of passing a regexp to $()
// some shorthands
function remain() { return ll.length }
function sh() { return ll.shift() } // shift
function ps(s) { o+=s } // push
function f() // similar to C's printf, uses ? as placeholders, ?? to escape question marks
{
var i=1,a=arguments,f=a[0],o='',c,p
for (;i<a.length; i++) if ((p=f.indexOf('?'))+1) {
// allow character escaping
i -= c=f.charAt(p+1)=='?'?1:0
o += f.substring(0,p)+(c?'?':a[i])
f=f.substr(p+1+c)
} else break;
return o+f
}
function html_entities(s) { return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">") }
function max(a,b) { return (a>b)?a:b }
function min(a,b) { return (a<b)?a:b }
// return the first non matching character position between two strings
function str_imatch(a, b)
{
for (var i=0, l=min(a.length, b.length); i<l; i++) if (a.charAt(i)!=b.charAt(i)) break
return i
}
// compare current line against a string or regexp
// if passed a string it will compare only the first string.length characters
// if passed a regexp the result is stored in $r
function $(c) { return (typeof c == 'string') ? (ll[0].substr(0,c.length)==c) : ($r = ll[0].match(c)) }
function $$(c) { return ll[0]==c } // compare current line against a string
function _(p) { return ll[0].charAt(p) } // return char at pos p
function endl(s) { ps(s); sh() }
function parse_list()
{
var prev='';
while (remain() && $(/^([*#:;]+)(.*)$/)) {
var l_match = $r
sh()
var ipos = str_imatch(prev, l_match[1])
// close uncontinued lists
for (var i=prev.length-1; i >= ipos; i--) {
var pi = prev.charAt(i)
if (pi=='*') ps('</ul>')
else if (pi=='#') ps('</ol>')
// close a dl only if the new item is not a dl item (:, ; or empty)
else switch (l_match[1].charAt(i)) { case'':case'*':case'#': ps('</dl>') }
}
// open new lists
for (var i=ipos; i<l_match[1].length; i++) {
var li = l_match[1].charAt(i)
if (li=='*') ps('<ul>')
else if (li=='#') ps('<ol>')
// open a new dl only if the prev item is not a dl item (:, ; or empty)
else switch(prev.charAt(i)) { case'':case'*':case'#': ps('<dl>') }
}
switch (l_match[1].charAt(l_match[1].length-1)) {
case '*': case '#':
ps('<li>' + parse_inline_nowiki(l_match[2])); break
case ';':
ps('<dt>')
var dt_match
// handle ;dt :dd format
if (dt_match = l_match[2].match(/(.*?)(:.*?)$/)) {
ps(parse_inline_nowiki(dt_match[1]))
ll.unshift(dt_match[2])
} else ps(parse_inline_nowiki(l_match[2]))
break
case ':':
ps('<dd>' + parse_inline_nowiki(l_match[2]))
}
prev=l_match[1]
}
// close remaining lists
for (var i=prev.length-1; i>=0; i--)
ps(f('</?>', (prev.charAt(i)=='*')? 'ul': ((prev.charAt(i)=='#')? 'ol': 'dl')))
}
function parse_table()
{
endl(f('<table?>', $(/^\{\|( .*)$/)? $r[1]: ''))
for (;remain();) if ($('|')) switch (_(1)) {
case '}': endl('</table>'); return
case '-': endl(f('<tr ?>', $(/\|-*(.*)/)[1])); break
default: parse_table_data()
}
else if ($('!')) parse_table_data()
else sh()
}
function parse_table_data()
{
var td_line, match_i
// 1: "|+", '|' or '+'
// 2: ??
// 3: attributes ??
// TODO: finish commenting this regexp
var td_match = sh().match(/^(\|\+|\||!)((?:([^[|]*?)\|(?!\|))?(.*))$/)
if (td_match[1] == '|+') ps('<caption');
else ps('<t' + ((td_match[1]=='|')?'d':'h'))
if (typeof td_match[3] != 'undefined') {
ps(' ' + td_match[3])
match_i = 4
} else match_i = 2
ps('>')
if (td_match[1] != '|+') {
// use || or !! as a cell separator depending on context
// NOTE: when split() is passed a regexp make sure to use non-capturing brackets
td_line = td_match[match_i].split((td_match[1] == '|')? '||': /(?:\|\||!!)/)
ps(parse_inline_nowiki(td_line.shift()))
while (td_line.length) ll.unshift(td_match[1] + td_line.pop())
} else ps(td_match[match_i])
var tc = 0, td = []
for (;remain(); td.push(sh()))
if ($('|')) {
if (!tc) break // we're at the outer-most level (no nested tables), skip to td parse
else if (_(1)=='}') tc--
}
else if (!tc && $('!')) break
else if ($('{|')) tc++
if (td.length) ps(Insta.convert(td))
}
function parse_pre()
{
ps('<pre>')
do endl(parse_inline_nowiki(ll[0].substring(1)) + "\n"); while (remain() && $(' '))
ps('</pre>')
}
function parse_block_image()
{
ps(parse_image(sh()))
}
function parse_image(str)
{
//<NOLITE>
// get what's in between "[[Image:" and "]]"
var tag = str.substring(str.indexOf(':') + 1, str.length - 2);
var width;
var attr = [], filename, caption = '';
var thumb=0, frame=0, center=0;
var align='';
if (tag.match(/\|/)) {
// manage nested links
var nesting = 0;
var last_attr;
for (var i = tag.length-1; i > 0; i--) {
if (tag.charAt(i) == '|' && !nesting) {
last_attr = tag.substr(i+1);
tag = tag.substring(0, i);
break;
} else switch (tag.substr(i-1, 2)) {
case ']]':
nesting++;
i--;
break;
case '[[':
nesting--;
i--;
}
}
attr = tag.split(/\s*\|\s*/);
attr.push(last_attr);
filename = attr.shift();
var w_match;
for (;attr.length; attr.shift())
if (w_match = attr[0].match(/^(\d*)(?:[px]*\d*)?px$/)) width = w_match[1]
else switch(attr[0]) {
case 'thumb':
case 'thumbnail':
thumb=true;
case 'frame':
frame=true;
break;
case 'none':
case 'right':
case 'left':
center=false;
align=attr[0];
break;
case 'center':
center=true;
align='none';
break;
default:
if (attr.length == 1) caption = attr[0];
}
} else filename = tag;
var o='';
if (frame) {
if (align=='') align = 'right';
o += f("<div class='thumb t?'>", align);
if (thumb) {
if (!width) width = Insta.conf.wiki.default_thumb_width;
o += f("<div style='width:?px;'>?", 2+width*1, make_image(filename, caption, width)) +
f("<div class='thumbcaption'><div class='magnify' style='float:right'><a href='?' class='internal' title='Enlarge'><img src='?'></a></div>?</div>",
Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename,
Insta.conf.paths.magnify_icon,
parse_inline_nowiki(caption)
)
} else {
o += '<div>' + make_image(filename, caption) + f("<div class='thumbcaption'>?</div>", parse_inline_nowiki(caption))
}
o += '</div></div>';
} else if (align != '') {
o += f("<div class='float?'><span>?</span></div>", align, make_image(filename, caption, width));
} else {
return make_image(filename, caption, width);
}
return center? f("<div class='center'>?</div>", o): o;
//</NOLITE>
}
function parse_inline_nowiki(str)
{
var start, lastend=0
var substart=0, nestlev=0, open, close, subloop;
var html='';
while (-1 != (start = str.indexOf('<nowiki>', substart))) {
html += parse_inline_wiki(str.substring(lastend, start));
start += 8;
substart = start;
subloop = true;
do {
open = str.indexOf('<nowiki>', substart);
close = str.indexOf('</nowiki>', substart);
if (close<=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));
}
function make_image(filename, caption, width)
{
//<NOLITE>
// uppercase first letter in file name
filename = filename.charAt(0).toUpperCase() + filename.substr(1);
// replace spaces with underscores
filename = filename.replace(/ /g, '_');
caption = strip_inline_wiki(caption);
var md5 = hex_md5(filename);
var source = md5.charAt(0) + '/' + md5.substr(0,2) + '/' + filename;
if (width) width = "width='" + width + "px'";
var img = f("<img onerror=\"this.onerror=null;this.src='?'\" src='?' ? ?>", Insta.conf.paths.images_fallback + source, Insta.conf.paths.images + source, (caption!='')? "alt='" + caption + "'" : '', width);
return f("<a class='image' ? href='?'>?</a>", (caption!='')? "title='" + caption + "'" : '', Insta.conf.paths.articles + Insta.conf.locale.image + ':' + filename, img);
//</NOLITE>
}
function parse_inline_images(str)
{
//<NOLITE>
var start, substart=0, nestlev=0;
var loop, close, open, wiki, html;
while (-1 != (start=str.indexOf('[[', substart))) {
if(str.substr(start+2).match(RegExp('^(Image|File|' + Insta.conf.locale.image + '):','i'))) {
loop=true;
substart=start;
do {
substart+=2;
close=str.indexOf(']]',substart);
open=str.indexOf('[[',substart);
if (close<=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;
}
//</NOLITE>
return str;
}
// the output of this function doesn't respect the FILO structure of HTML
// but since most browsers can handle it I'll save myself the hassle
function parse_inline_formatting(str)
{
var em,st,i,li,o='';
while ((i=str.indexOf("''",li))+1) {
o += str.substring(li,i);
li=i+2;
if (str.charAt(i+2)=="'") {
li++;
st=!st;
o+=st?'<strong>':'</strong>';
} else {
em=!em;
o+=em?'<em>':'</em>';
}
}
return o+str.substr(li);
}
function parse_inline_wiki(str)
{
var aux_match;
str = parse_inline_images(str);
str = parse_inline_formatting(str);
// math
while (aux_match = str.match(/<(?:)math>(.*?)<\/math>/i)) {
var math_md5 = hex_md5(aux_match[1]);
str = str.replace(aux_match[0], f("<img src='?.png'>", Insta.conf.paths.math+math_md5));
}
// Build a Mediawiki-formatted date string
var date = new Date;
var minutes = date.getUTCMinutes();
if (minutes < 10) minutes = '0' + minutes;
var date = f("?:?, ? ? ? (UTC)", date.getUTCHours(), minutes, date.getUTCDate(), Insta.conf.locale.months[date.getUTCMonth()], date.getUTCFullYear());
// text formatting
return str.
// signatures
replace(/~{5}(?!~)/g, date).
replace(/~{4}(?!~)/g, Insta.conf.user.name+' '+date).
replace(/~{3}(?!~)/g, Insta.conf.user.name).
// [[:Category:...]], [[:Image:...]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|Image|File|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):[^|]*?)\\]\\](\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$1$2</a>").
// remove straight category and interwiki tags
replace(RegExp('\\[\\[(?:'+Insta.conf.locale.category+'|'+Insta.conf.wiki.interwiki+'):.*?\\]\\]','gi'),'').
// [[:Category:...|Links]], [[:Image:...|Links]], etc...
replace(RegExp('\\[\\[:((?:'+Insta.conf.locale.category+'|Image|File|'+Insta.conf.locale.image+'|'+Insta.conf.wiki.interwiki+'):.*?)\\|([^\\]]+?)\\]\\](\\w*)','gi'), "<a href='"+Insta.conf.paths.articles+"$1'>$2$3</a>").
// [[/Relative links]]
replace(/\[\[(\/[^|]*?)\]\]/g, f("<a href='?$1'>$1</a>", Insta.conf.baseUrl)).
// [[/Replaced|Relative links]]
replace(/\[\[(\/.*?)\|(.+?)\]\]/g, f("<a href='?$1'>$2</a>", Insta.conf.baseUrl)).
// [[Common links]]
replace(/\[\[([^|]*?)\]\](\w*)/g, f("<a href='?$1'>$1$2</a>", Insta.conf.paths.articles)).
// [[Replaced|Links]]
replace(/\[\[(.*?)\|([^\]]+?)\]\](\w*)/g, f("<a href='?$1'>$2$3</a>", Insta.conf.paths.articles)).
// [[Stripped:Namespace|Namespace]]
replace(/\[\[([^\]]*?:)?(.*?)( *\(.*?\))?\|\]\]/g, f("<a href='?$1$2$3'>$2</a>", Insta.conf.paths.articles)).
// External links
replace(/\[(https?|news|ftp|mailto|gopher|irc):(\/*)([^\]]*?) (.*?)\]/g, "<a class='external' href='$1:$2$3'>$4</a>").
replace(/\[http:\/\/(.*?)\]/g, "<a class='external' href='http://$1'>[#]</a>").
replace(/\[(news|ftp|mailto|gopher|irc):(\/*)(.*?)\]/g, "<a class='external' href='$1:$2$3'>$1:$2$3</a>").
replace(/(^| )(https?|news|ftp|mailto|gopher|irc):(\/*)([^ $]*[^.,!?;: $])/g, "$1<a class='external' href='$2:$3$4'>$2:$3$4</a>").
replace('__NOTOC__','').
replace('__NOEDITSECTION__','');
}
/*
*/
function strip_inline_wiki(str)
{
return str
.replace(/\[\[[^\]]*\|(.*?)\]\]/g,'$1')
.replace(/\[\[(.*?)\]\]/g,'$1')
.replace(/''(.*?)''/g,'$1');
}
// begin parsing
for (;remain();) if ($(/^(={1,6})(.*)\1(.*)$/)) {
p=0
endl(f('<h?>?</h?>?', $r[1].length, parse_inline_nowiki($r[2]), $r[1].length, $r[3]))
} else if ($(/^[*#:;]/)) {
p=0
parse_list()
} else if ($(' ')) {
p=0
parse_pre()
} else if ($('{|')) {
p=0
parse_table()
} else if ($(/^----+$/)) {
p=0
endl('<hr>')
} else if ($(Insta.BLOCK_IMAGE)) {
p=0
parse_block_image()
} else {
// handle paragraphs
if ($$('')) {
if (p = (remain()>1 && ll[1]==(''))) endl('<p><br>')
} else {
if(!p) {
ps('<p>')
p=1
}
ps(parse_inline_nowiki(ll[0]) + ' ')
}
sh();
}
return o
};
window.wiki2html=function(txt,baseurl) {
Insta.conf.baseUrl=baseurl;
return Insta.convert(txt);
};
// ENDFILE: livepreview.js
// STARTFILE: pageinfo.js
//<NOLITE>
function popupFilterPageSize(data) {
return formatBytes(data.length);
}
function popupFilterCountLinks(data) {
var num=countLinks(data);
return String(num) + ' ' + ((num!=1)?popupString('wikiLinks'):popupString('wikiLink'));
}
function popupFilterCountImages(data) {
var num=countImages(data);
return String(num) + ' ' + ((num!=1)?popupString('images'):popupString('image'));
}
function popupFilterCountCategories(data) {
var num=countCategories(data);
return String(num) + ' ' + ((num!=1)?popupString('categories'):popupString('category'));
}
function popupFilterLastModified(data,download) {
var lastmod=download.lastModified;
var now=new Date();
var age=now-lastmod;
if (lastmod && getValueOf('popupLastModified')) {
return (tprintf('%s old', [formatAge(age)])).replace(RegExp(' ','g'), ' ');
}
return '';
}
function formatAge(age) {
// coerce into a number
var a=0+age, aa=a;
var seclen = 1000;
var minlen = 60*seclen;
var hourlen = 60*minlen;
var daylen = 24*hourlen;
var weeklen = 7*daylen;
var numweeks = (a-a%weeklen)/weeklen; a = a-numweeks*weeklen; var sweeks = addunit(numweeks, 'week');
var numdays = (a-a%daylen)/daylen; a = a-numdays*daylen; var sdays = addunit(numdays, 'day');
var numhours = (a-a%hourlen)/hourlen; a = a-numhours*hourlen; var shours = addunit(numhours,'hour');
var nummins = (a-a%minlen)/minlen; a = a-nummins*minlen; var smins = addunit(nummins, 'minute');
var numsecs = (a-a%seclen)/seclen; a = a-numsecs*seclen; var ssecs = addunit(numsecs, 'second');
if (aa > 4*weeklen) { return sweeks; }
if (aa > weeklen) { return sweeks + ' ' + sdays; }
if (aa > daylen) { return sdays + ' ' + shours; }
if (aa > 6*hourlen) { return shours; }
if (aa > hourlen) { return shours + ' ' + smins; }
if (aa > 10*minlen) { return smins; }
if (aa > minlen) { return smins + ' ' + ssecs; }
return ssecs;
}
function addunit(num,str) { return '' + num + ' ' + ((num!=1) ? popupString(str+'s') : popupString(str)) ;}
function runPopupFilters(list, data, download) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i] && typeof list[i] == 'function') {
var s=list[i](data, download, download.owner.article);
if (s) { ret.push(s); }
}
}
return ret;
}
function getPageInfo(data, download) {
if (!data || data.length === 0) { return popupString('Empty page'); }
var popupFilters=getValueOf('popupFilters') || [];
var extraPopupFilters = getValueOf('extraPopupFilters') || [];
var pageInfoArray = runPopupFilters(popupFilters.concat(extraPopupFilters), data, download);
var pageInfo=pageInfoArray.join(', ');
if (pageInfo !== '' ) { pageInfo = upcaseFirst(pageInfo); }
return pageInfo;
}
// this could be improved!
function countLinks(wikiText) { return wikiText.split('[[').length - 1; }
// if N = # matches, n = # brackets, then
// String.parenSplit(regex) intersperses the N+1 split elements
// with Nn other elements. So total length is
// L= N+1 + Nn = N(n+1)+1. So N=(L-1)/(n+1).
function countImages(wikiText) {
return (wikiText.parenSplit(pg.re.image).length - 1) / (pg.re.imageBracketCount + 1);
}
function countCategories(wikiText) {
return (wikiText.parenSplit(pg.re.category).length - 1) / (pg.re.categoryBracketCount + 1);
}
function popupFilterStubDetect(data, download, article) {
var counts=stubCount(data, article);
if (counts.real) { return popupString('stub'); }
if (counts.sect) { return popupString('section stub'); }
return '';
}
function popupFilterDisambigDetect(data, download, article) {
if (getValueOf('popupOnlyArticleDabStub') && article.namespace()) { return ''; }
return (isDisambig(data, article)) ? popupString('disambig') : '';
}
function formatBytes(num) {
return (num > 949) ? (Math.round(num/100)/10+popupString('kB')) : (num +' ' + popupString('bytes')) ;
}
//</NOLITE>
// ENDFILE: pageinfo.js
// STARTFILE: titles.js
/**
@fileoverview Defines the {@link Title} class, and associated crufty functions.
<code>Title</code> deals with article titles and their various
forms. {@link Stringwrapper} is the parent class of
<code>Title</code>, which exists simply to make things a little
neater.
*/
/**
Creates a new Stringwrapper.
@constructor
@class the Stringwrapper class. This base class is not really
useful on its own; it just wraps various common string operations.
*/
function Stringwrapper() {
/**
Wrapper for this.toString().indexOf()
@param {String} x
@type integer
*/
this.indexOf=function(x){return this.toString().indexOf(x);};
/**
Returns this.value.
@type String
*/
this.toString=function(){return this.value;};
/**
Wrapper for {@link String#parenSplit} applied to this.toString()
@param {RegExp} x
@type Array
*/
this.parenSplit=function(x){return this.toString().parenSplit(x);};
/**
Wrapper for this.toString().substring()
@param {String} x
@param {String} y (optional)
@type String
*/
this.substring=function(x,y){
if (typeof y=='undefined') { return this.toString().substring(x); }
return this.toString().substring(x,y);
};
/**
Wrapper for this.toString().split()
@param {String} x
@type Array
*/
this.split=function(x){return this.toString().split(x);};
/**
Wrapper for this.toString().replace()
@param {String} x
@param {String} y
@type String
*/
this.replace=function(x,y){ return this.toString().replace(x,y); };
}
/**
Creates a new <code>Title</code>.
@constructor
@class The Title class. Holds article titles and converts them into
various forms. Also deals with anchors, by which we mean the bits
of the article URL after a # character, representing locations
within an article.
@param {String} value The initial value to assign to the
article. This must be the canonical title (see {@link
Title#value}. Omit this in the constructor and use another function
to set the title if this is unavailable.
*/
function Title(val) {
/**
The canonical article title. This must be in UTF-8 with no
entities, escaping or nasties. Also, underscores should be
replaced with spaces.
@type String
@private
*/
this.value=null;
/**
The canonical form of the anchor. This should be exactly as
it appears in the URL, i.e. with the .C3.0A bits in.
@type String
*/
this.anchor='';
this.setUtf(val);
}
Title.prototype=new Stringwrapper();
/**
Returns the canonical representation of the article title, optionally without anchor.
@param {boolean} omitAnchor
@fixme Decide specs for anchor
@return String The article title and the anchor.
*/
Title.prototype.toString=function(omitAnchor) {
return this.value + ( (!omitAnchor && this.anchor) ? '#' + this.anchorString() : '' );
};
Title.prototype.anchorString=function() {
if (!this.anchor) { return ''; }
var split=this.anchor.parenSplit(/((?:[.][0-9A-F]{2})+)/);
var len=split.length;
for (var j=1; j<len; j+=2) {
// FIXME s/decodeURI/decodeURIComponent/g ?
split[j]=decodeURIComponent(split[j].split('.').join('%')).split('_').join(' ');
}
return split.join('');
};
Title.prototype.urlAnchor=function() {
var split=this.anchor.parenSplit('/((?:[%][0-9A-F]{2})+)/');
var len=split.length;
for (var j=1; j<len; j+=2) {
split[j]=split[j].split('%').join('.');
}
return split.join('');
};
Title.prototype.anchorFromUtf=function(str) {
this.anchor=encodeURIComponent(str.split(' ').join('_'))
.split('%3A').join(':').split("'").join('%27').split('%').join('.');
};
Title.fromURL=function(h) {
return new Title().fromURL(h);
};
Title.prototype.fromURL=function(h) {
if (typeof h != 'string') {
this.value=null;
return this;
}
// NOTE : playing with decodeURI, encodeURI, escape, unescape,
// we seem to be able to replicate the IE borked encoding
// IE doesn't do this new-fangled utf-8 thing.
// and it's worse than that.
// IE seems to treat the query string differently to the rest of the url
// the query is treated as bona-fide utf8, but the first bit of the url is pissed around with
// we fix up & for all browsers, just in case.
var splitted=h.split('?');
splitted[0]=splitted[0].split('&').join('%26');
if (pg.flag.linksLikeIE6) {
splitted[0]=encodeURI(decode_utf8(splitted[0]));
}
h=splitted.join('?');
var contribs=pg.re.contribs.exec(h);
if (contribs !== null) {
if (contribs[1]=='title=') { contribs[3]=contribs[3].split('+').join(' '); }
var u=new Title(contribs[3]);
this.setUtf(this.decodeNasties(pg.ns.user + ':' + u.stripNamespace()));
return this;
}
var email=pg.re.email.exec(h);
if (email !== null) {
this.setUtf(this.decodeNasties(pg.ns.user + ':' + new Title(email[3]).stripNamespace()));
return this;
}
var backlinks=pg.re.backlinks.exec(h);
if (backlinks) {
this.setUtf(this.decodeNasties(new Title(backlinks[3])));
return this;
}
// no more special cases to check --
// hopefully it's not a disguised user-related or specially treated special page
var m=pg.re.main.exec(h);
if(m===null) { this.value=null; }
else {
var fromBotInterface = /[?](.+[&])?title=/.test(h);
if (fromBotInterface) {
m[2]=m[2].split('+').join('_');
}
var extracted = m[2] + (m[3] ? '#' + m[3] : '');
if (pg.flag.isSafari && /%25[0-9A-Fa-f]{2}/.test(extracted)) {
// Fix Safari issue
// Safari sometimes encodes % as %25 in UTF-8 encoded strings like %E5%A3 -> %25E5%25A3.
this.setUtf(decodeURIComponent(unescape(extracted)));
} else {
this.setUtf(this.decodeNasties(extracted));
}
}
return this;
};
Title.prototype.decodeNasties=function(txt) {
var ret= this.decodeEscapes(decodeURI(txt));
ret = ret.replace(/[_ ]*$/, '');
return ret;
};
Title.prototype.decodeEscapes=function(txt) {
var split=txt.parenSplit(/((?:[%][0-9A-Fa-f]{2})+)/);
var len=split.length;
for (var i=1; i<len; i=i+2) {
// FIXME is decodeURIComponent better?
split[i]=unescape(split[i]);
}
return split.join('');
};
Title.fromAnchor=function(a) {
return new Title().fromAnchor(a);
};
Title.prototype.fromAnchor=function(a) {
if (!a) { this.value=null; return this; }
return this.fromURL(a.href);
};
Title.fromWikiText=function(txt) {
return new Title().fromWikiText(txt);
};
Title.prototype.fromWikiText=function(txt) {
// FIXME - testing needed
if (!pg.flag.linksLikeIE6) { txt=myDecodeURI(txt); }
this.setUtf(txt);
return this;
};
Title.prototype.hintValue=function(){
if(!this.value) { return ''; }
return safeDecodeURI(this.value);
};
//<NOLITE>
Title.prototype.toUserName=function(withNs) {
if (this.namespace() != pg.ns.user && this.namespace() != pg.ns.usertalk) {
this.value=null;
return;
}
this.value = (withNs ? pg.ns.user + ':' : '') + this.stripNamespace().split('/')[0];
};
Title.prototype.userName=function(withNs) {
var t=(new Title(this.value));
t.toUserName(withNs);
if (t.value) { return t; }
return null;
};
Title.prototype.toTalkPage=function() {
// convert article to a talk page, or if we can't return null
// or, in other words, return null if this ALREADY IS a talk page
// and return the corresponding talk page otherwise
if (this.value===null) { return null; }
var talkRegex=namespaceListToRegex(pg.ns.talkList);
if (talkRegex.exec(this.value)) { this.value=null; return null;}
var nsReg=namespaceListToRegex(pg.ns.withTalkList);
var splitted=this.value.parenSplit(nsReg);
if (splitted.length<2) {
this.value= (pg.ns.talkList[0]+':'+this.value).split(' ').join('_');
return this.value;
}
for (var i=0; i< pg.ns.withTalkList.length; ++i) {
if (splitted[1]==pg.ns.withTalkList[i]) {
splitted[1]=pg.ns.talkList[i];
this.value=splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return null;
};
//</NOLITE>
Title.prototype.namespace=function() {
var n=this.value.indexOf(':');
if (n<0) { return ''; }
var list=pg.ns.list;
for (var i=0; i<list.length; ++i) {
if (upcaseFirst(list[i]) == this.value.substring(0,n)) { return list[i]; }
}
return '';
};
//<NOLITE>
Title.prototype.talkPage=function() {
var t=new Title(this.value);
t.toTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.isTalkPage=function() {
if (this.talkPage()===null) { return true; }
return false;
};
Title.prototype.toArticleFromTalkPage=function() {
var talkRegex=namespaceListToRegex(pg.ns.talkList);
var splitted=this.value.parenSplit(talkRegex);
if (splitted.length < 2 || splitted[0].length > 0) { this.value=null; return null; }
if (splitted[1]==pg.ns.talkList[0]) {
splitted[1]='';
this.value=splitted.join(':').substring(2).split(' ').join('_');
return this.value;
}
for (var i=1; i< pg.ns.talkList.length; ++i) {
if (splitted[1]==pg.ns.talkList[i] || splitted[1]==pg.ns.talkList[i].split(' ').join('_')) {
splitted[1]=pg.ns.withTalkList[i];
this.value= splitted.join(':').substring(1).split(' ').join('_');
return this.value;
}
}
this.value=null;
return this.value;
};
Title.prototype.articleFromTalkPage=function() {
var t=new Title(this.value);
t.toArticleFromTalkPage();
if (t.value) { return t; }
return null;
};
Title.prototype.articleFromTalkOrArticle=function() {
var t=new Title(this.value);
if ( t.toArticleFromTalkPage() ) { return t; }
return this;
};
Title.prototype.isIpUser=function() {
return pg.re.ipUser.test(this.userName());
};
//</NOLITE>
Title.prototype.stripNamespace=function(){ // returns a string, not a Title
var n=this.value.indexOf(':');
if (n<0) { return this.value; }
var list=pg.ns.list;
for (var i=0; i<list.length; ++i) {
if (upcaseFirst(list[i]) == this.value.substring(0,n)) { return this.value.substring(n+1); }
}
return this.value;
};
Title.prototype.setUtf=function(value){
if (!value) { this.value=''; return; }
var anch=value.indexOf('#');
if(anch < 0) { this.value=value.split('_').join(' '); this.anchor=''; return; }
this.value=value.substring(0,anch).split('_').join(' ');
this.anchor=value.substring(anch+1);
this.ns=null; // wait until namespace() is called
};
Title.prototype.setUrl=function(urlfrag) {
var anch=urlfrag.indexOf('#');
this.value=safeDecodeURI(urlfrag.substring(0,anch));
this.anchor=value.substring(anch+1);
};
Title.prototype.append=function(x){
this.setUtf(this.value + x);
};
Title.prototype.urlString=function(x) {
x || ( x={} );
var v=this.toString(true);
if (!x.omitAnchor && this.anchor) { v+= '#' + this.urlAnchor(); }
if (!x.keepSpaces) { v=v.split(' ').join('_'); }
return encodeURI(v).split('&').join('%26').split('?').join('%3F').split('+').join('%2B');
};
Title.prototype.removeAnchor=function() {
return new Title(this.toString(true));
};
Title.prototype.toUrl=function() {
return pg.wiki.titlebase + this.urlString();
};
function paramValue(param, url) {
var s=url.parenSplit(RegExp('[?&]' + literalizeRegex(param) + '=([^?&]*)'));
if (!url) { return null; }
return s[1] || null;
}
function parseParams(url) {
var ret={};
if (url.indexOf('?')==-1) { return ret; }
var s=url.split('?').slice(1).join();
var t=s.split('&');
for (var i=0; i<t.length; ++i) {
var z=t[i].split('=');
z.push(null);
ret[z[0]]=z[1];
}
return ret;
}
// all sorts of stuff here
// FIXME almost everything needs to be rewritten
function oldidFromAnchor(a) { return paramValue('oldid', a.href); }
//function diffFromAnchor(a) { return paramValue('diff', a.href); }
function wikiMarkupToAddressFragment (str) { // for images
var ret = safeDecodeURI(str);
ret = ret.split(' ').join('_');
ret = encodeURI(ret);
return ret;
}
// (a) myDecodeURI (first standard decodeURI, then pg.re.urlNoPopup)
// (b) change spaces to underscores
// (c) encodeURI (just the straight one, no pg.re.urlNoPopup)
function myDecodeURI (str) {
var ret;
// FIXME decodeURIComponent??
try { ret=decodeURI(str.toString()); }
catch (summat) { return str; }
for (var i=0; i<pg.misc.decodeExtras.length; ++i) {
var from=pg.misc.decodeExtras[i].from;
var to=pg.misc.decodeExtras[i].to;
ret=ret.split(from).join(to);
}
return ret;
}
function safeDecodeURI(str) { var ret=myDecodeURI(str); return ret || str; }
///////////
// TESTS //
///////////
//<NOLITE>
function isIpUser(user) {return pg.re.ipUser.test(user);}
function isDisambig(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
return ! article.isTalkPage() && pg.re.disambig.test(data);
}
function stubCount(data, article) {
if (!getValueOf('popupAllDabsStubs') && article.namespace()) { return false; }
var sectStub=0;
var realStub=0;
if (pg.re.stub.test(data)) {
var s=data.parenSplit(pg.re.stub);
for (var i=1; i<s.length; i=i+2) {
if (s[i]) { ++sectStub; }
else { ++realStub; }
}
}
return { real: realStub, sect: sectStub };
}
function isValidImageName(str){ // extend as needed...
return ( str.indexOf('{') == -1 );
}
function isInStrippableNamespace(article) {
return ( findInArray( pg.ns.nonArticleList, article.namespace() ) > -1 );
}
function isInMainNamespace(article) { return !isInStrippableNamespace(article); }
function anchorContainsImage(a) {
// iterate over children of anchor a
// see if any are images
if (a===null) { return false; }
kids=a.childNodes;
for (var i=0; i<kids.length; ++i) { if (kids[i].nodeName=='IMG') { return true; } }
return false;
}
//</NOLITE>
function isPopupLink(a) {
// NB for performance reasons, TOC links generally return true
// they should be stripped out later
if (!markNopopupSpanLinks.done) { markNopopupSpanLinks(); }
if (a.inNopopupSpan || a.className=='sortheader') { return false; }
// FIXME is this faster inline?
if (a.onmousedown || a.getAttribute('nopopup')) { return false; }
var h=a.href;
if (!pg.re.basenames.test(h)) { return false; }
if ( !pg.re.urlNoPopup.test(h) ) { return true; }
return (
(pg.re.email.test(h) || pg.re.contribs.test(h) || pg.re.backlinks.test(h)) &&
h.indexOf('&limit=') == -1 );
}
function markNopopupSpanLinks() {
if( !getValueOf('popupOnlyArticleLinks'))
fixVectorMenuPopups();
var s=getElementsByClassName(document, '*', "nopopups")
for (var i=0; i<s.length; ++i) {
var as=s[i].getElementsByTagName('a');
for (var j=0; j<as.length; ++j) {
as[j].inNopopupSpan=true;
}
}
markNopopupSpanLinks.done=true;
}
function fixVectorMenuPopups() {
var vmenus = getElementsByClassName( document, 'div', 'vectorMenu');
for( i= 0; vmenus && i< vmenus.length; i++ ) {
var h5 = vmenus[i].getElementsByTagName('h5')[0];
if( h5) var a = h5.getElementsByTagName('a')[0];
if( a ) a.inNopopupSpan=true;
}
}
// ENDFILE: titles.js
// STARTFILE: cookies.js
//<NOLITE>
//////////////////////////////////////////////////
// Cookie handling
// from http://www.quirksmode.org/js/cookies.html
var Cookie= {
create: function(name,value,days)
{
var expires;
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}
else { expires = ""; }
document.cookie = name+"="+value+expires+"; path=/";
},
read: function(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') { c = c.substring(1,c.length); }
if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length,c.length); }
}
return null;
},
erase: function(name)
{
Cookie.create(name,"",-1);
}
};
//</NOLITE>
// ENDFILE: cookies.js
// STARTFILE: getpage.js
//////////////////////////////////////////////////
// Wiki-specific downloading
//
// Schematic for a getWiki call
//
// getWiki->-getPageWithCaching
// |
// false | true
// getPage<-[findPictureInCache]->-onComplete(a fake download)
// \.
// (async)->addPageToCache(download)->-onComplete(download)
/** @todo {document}
@param {Title} article
@param {Function} onComplete
@param {integer} oldid
@param {Navapopup} owner
*/
function getWiki(article, onComplete, oldid, owner) {
// set ctype=text/css to get around opera gzip bug
var url = pg.wiki.titlebase + article.removeAnchor().urlString() +
'&action=raw&ctype=text/css';
if (oldid || oldid===0 || oldid==='0') { url += '&oldid='+oldid; }
url += '&maxage=0&smaxage=0';
getPageWithCaching(url, onComplete, owner);
}
// check cache to see if page exists
function getPageWithCaching(url, onComplete, owner) {
log('getPageWithCaching, url='+url);
var i=findInPageCache(url);
if (i > -1) {
var d=fakeDownload(url, owner.idNumber, onComplete,
pg.cache.pages[i].data, pg.cache.pages[i].lastModified,
owner);
} else {
var d=getPage(url, onComplete, owner);
if (d && owner && owner.addDownload) {
owner.addDownload(d);
d.owner=owner;
}
}
}
function getPage(url, onComplete, owner) {
log('getPage');
var callback= function (d) { if (!d.aborted) {addPageToCache(d); onComplete(d);} };
return startDownload(url, owner.idNumber, callback);
}
function findInPageCache(url) {
for (var i=0; i<pg.cache.pages.length; ++i) {
if (url==pg.cache.pages[i].url) { return i; }
}
return -1;
}
function addPageToCache(download) {
log('addPageToCache '+download.url);
var page = {url: download.url, data: download.data, lastModified: download.lastModified};
return pg.cache.pages.push(page);
}
// ENDFILE: getpage.js
// STARTFILE: md5-2.2alpha.js
//<NOLITE>
/*
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.2-alpha Copyright (C) Paul Johnston 1999 - 2005
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*
* Configurable variables. You may need to tweak these to be compatible with
* the server-side, but the defaults work in most cases.
*/
var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */
/*
* These are the functions you'll usually want to call
* They take string arguments and return either hex or base-64 encoded strings
*/
function hex_md5(s) { return rstr2hex(rstr_md5(str2rstr_utf8(s))); }
function b64_md5(s) { return rstr2b64(rstr_md5(str2rstr_utf8(s))); }
function any_md5(s, e) { return rstr2any(rstr_md5(str2rstr_utf8(s)), e); }
function hex_hmac_md5(k, d)
{ return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function b64_hmac_md5(k, d)
{ return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))); }
function any_hmac_md5(k, d, e)
{ return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e); }
/*
* Perform a simple self-test to see if the VM is working
*/
function md5_vm_test()
{
return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}
/*
* Calculate the MD5 of a raw string
*/
function rstr_md5(s)
{
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
}
/*
* Calculate the HMAC-MD5, of a key and some data (raw strings)
*/
function rstr_hmac_md5(key, data)
{
var bkey = rstr2binl(key);
if(bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
var ipad = Array(16), opad = Array(16);
for(var i = 0; i < 16; i++)
{
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
}
/*
* Convert a raw string to a hex string
*/
function rstr2hex(input)
{
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var output = "";
var x;
for(var i = 0; i < input.length; i++)
{
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F)
+ hex_tab.charAt( x & 0x0F);
}
return output;
}
/*
* Convert a raw string to a base-64 string
*/
function rstr2b64(input)
{
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var output = "";
var len = input.length;
for(var i = 0; i < len; i += 3)
{
var triplet = (input.charCodeAt(i) << 16)
| (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
| (i + 2 < len ? input.charCodeAt(i+2) : 0);
for(var j = 0; j < 4; j++)
{
if(i * 8 + j * 6 > input.length * 8) output += b64pad;
else output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
}
}
return output;
}
/*
* Convert a raw string to an arbitrary string encoding
*/
function rstr2any(input, encoding)
{
var divisor = encoding.length;
var remainders = Array();
var i, q, x, quotient;
/* Convert to an array of 16-bit big-endian values, forming the dividend */
var dividend = Array(input.length / 2);
for(i = 0; i < dividend.length; i++)
{
dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
}
/*
* Repeatedly perform a long division. The binary array forms the dividend,
* the length of the encoding is the divisor. Once computed, the quotient
* forms the dividend for the next step. We stop when the dividend is zero.
* All remainders are stored for later use.
*/
while(dividend.length > 0)
{
quotient = Array();
x = 0;
for(i = 0; i < dividend.length; i++)
{
x = (x << 16) + dividend[i];
q = Math.floor(x / divisor);
x -= q * divisor;
if(quotient.length > 0 || q > 0)
quotient[quotient.length] = q;
}
remainders[remainders.length] = x;
dividend = quotient;
}
/* Convert the remainders to the output string */
var output = "";
for(i = remainders.length - 1; i >= 0; i--)
output += encoding.charAt(remainders[i]);
return output;
}
/*
* Encode a string as utf-8.
* For efficiency, this assumes the input is valid utf-16.
*/
function str2rstr_utf8(input)
{
var output = "";
var i = -1;
var x, y;
while(++i < input.length)
{
/* Decode utf-16 surrogate pairs */
x = input.charCodeAt(i);
y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF)
{
x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
i++;
}
/* Encode output as utf-8 */
if(x <= 0x7F)
output += String.fromCharCode(x);
else if(x <= 0x7FF)
output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
0x80 | ( x & 0x3F));
else if(x <= 0xFFFF)
output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
else if(x <= 0x1FFFFF)
output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
0x80 | ((x >>> 12) & 0x3F),
0x80 | ((x >>> 6 ) & 0x3F),
0x80 | ( x & 0x3F));
}
return output;
}
/*
* Encode a string as utf-16
*/
function str2rstr_utf16le(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode( input.charCodeAt(i) & 0xFF,
(input.charCodeAt(i) >>> 8) & 0xFF);
return output;
}
function str2rstr_utf16be(input)
{
var output = "";
for(var i = 0; i < input.length; i++)
output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
input.charCodeAt(i) & 0xFF);
return output;
}
/*
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*/
function rstr2binl(input)
{
var output = Array(input.length >> 2);
for(var i = 0; i < output.length; i++)
output[i] = 0;
for(var i = 0; i < input.length * 8; i += 8)
output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
return output;
}
/*
* Convert an array of little-endian words to a string
*/
function binl2rstr(input)
{
var output = "";
for(var i = 0; i < input.length * 32; i += 8)
output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
return output;
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length.
*/
function binl_md5(x, len)
{
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for(var i = 0; i < x.length; i += 16)
{
var olda = a;
var oldb = b;
var oldc = c;
var oldd = d;
a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c = md5_gg(c, d, a, b, x[i+11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083);
c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174);
d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i+15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return Array(a, b, c, d);
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t)
{
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y)
{
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt)
{
return (num << cnt) | (num >>> (32 - cnt));
}
//</NOLITE>
// ENDFILE: md5-2.2alpha.js
// STARTFILE: parensplit.js
//////////////////////////////////////////////////
// parenSplit
// String.prototype.parenSplit should do what ECMAscript says
// String.prototype.split does, interspersing paren matches between
// the split elements
if (String('abc'.split(/(b)/))!='a,b,c') {
// broken String.split, e.g. konq, IE
String.prototype.parenSplit=function (re) {
re=nonGlobalRegex(re);
var s=this;
var m=re.exec(s);
var ret=[];
while (m && s) {
// without the following loop, we have
// 'ab'.parenSplit(/a|(b)/) != 'ab'.split(/a|(b)/)
for(var i=0; i<m.length; ++i) {
if (typeof m[i]=='undefined') m[i]='';
}
ret.push(s.substring(0,m.index));
ret = ret.concat(m.slice(1));
s=s.substring(m.index + m[0].length);
m=re.exec(s);
}
ret.push(s);
return ret;
};
} else {
String.prototype.parenSplit=function (re) { return this.split(re); };
String.prototype.parenSplit.isNative=true;
}
function nonGlobalRegex(re) {
var s=re.toString();
flags='';
for (var j=s.length; s.charAt(j) != '/'; --j) {
if (s.charAt(j) != 'g') { flags += s.charAt(j); }
}
var t=s.substring(1,j);
return RegExp(t,flags);
}
// ENDFILE: parensplit.js
// STARTFILE: tools.js
// IE madness with encoding
// ========================
//
// suppose throughout that the page is in utf8, like wikipedia
//
// if a is an anchor DOM element and a.href should consist of
//
// http://host.name.here/wiki/foo?bar=baz
//
// then IE gives foo as "latin1-encoded" utf8; we have foo = decode_utf8(decodeURI(foo_ie))
// but IE gives bar=baz correctly as plain utf8
//
// ---------------------------------
//
// IE's xmlhttp doesn't understand utf8 urls. Have to use encodeURI here.
//
// ---------------------------------
//
// summat else
// Source: http://aktuell.de.selfhtml.org/artikel/javascript/utf8b64/utf8.htm
//<NOLITE>
function encode_utf8(rohtext) {
// dient der Normalisierung des Zeilenumbruchs
rohtext = rohtext.replace(/\r\n/g,"\n");
var utftext = "";
for(var n=0; n<rohtext.length; n++)
{
// ermitteln des Unicodes des aktuellen Zeichens
var c=rohtext.charCodeAt(n);
// alle Zeichen von 0-127 => 1byte
if (c<128)
utftext += String.fromCharCode(c);
// alle Zeichen von 127 bis 2047 => 2byte
else if((c>127) && (c<2048)) {
utftext += String.fromCharCode((c>>6)|192);
utftext += String.fromCharCode((c&63)|128);}
// alle Zeichen von 2048 bis 66536 => 3byte
else {
utftext += String.fromCharCode((c>>12)|224);
utftext += String.fromCharCode(((c>>6)&63)|128);
utftext += String.fromCharCode((c&63)|128);}
}
return utftext;
}
function getJsObj(json) {
try {
var json_ret = eval('(' + json + ')');
} catch (someError) {
errlog('Something went wrong with getJsobj, json='+json);
return 1;
}
if( json_ret['warnings'] ) {
for( var w=0; w < json_ret['warnings'].length; w++ ) {
log( json_ret['warnings'][w]['*'] );
}
} else if ( json_ret['error'] ) {
errlog( json_ret['error'].code + ': ' + json_ret['error'].info );
}
return json_ret;
}
function anyChild(obj) {
for (var p in obj) {
return obj[p];
}
return null;
}
//</NOLITE>
function decode_utf8(utftext) {
var plaintext = ""; var i=0, c=0, c1=0, c2=0;
// while-Schleife, weil einige Zeichen uebersprungen werden
while(i<utftext.length)
{
c = utftext.charCodeAt(i);
if (c<128) {
plaintext += String.fromCharCode(c);
i++;}
else if((c>191) && (c<224)) {
c2 = utftext.charCodeAt(i+1);
plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
i+=2;}
else {
c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
i+=3;}
}
return plaintext;
}
function upcaseFirst(str) {
if (typeof str != typeof '' || str=='') return '';
return str.charAt(0).toUpperCase() + str.substring(1);
}
function findInArray(arr, foo) {
if (!arr || !arr.length) { return -1; }
var len=arr.length;
for (var i=0; i<len; ++i) { if (arr[i]==foo) { return i; } }
return -1;
}
function nextOne (array, value) {
// NB if the array has two consecutive entries equal
// then this will loop on successive calls
var i=findInArray(array, value);
if (i<0) { return null; }
return array[i+1];
}
function literalizeRegex(str){
return str.replace(RegExp('([-.|()\\+?*^${}\\[\\]])', 'g'), '\\$1');
}
String.prototype.entify=function() {
//var shy='­';
return this.split('&').join('&').split('<').join('<').split('>').join('>'/*+shy*/).split('"').join('"');
};
function findThis(array, value) {
if (typeof array.length == 'undefined') { return null; }
for (var i=0; i<array.length; ++i) {
if (array[i]==value) { return i; }
}
return null;
}
function removeNulls(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (list[i]) {
ret.push(list[i]);
}
}
return ret;
}
function joinPath(list) {
return removeNulls(list).join('/');
}
function simplePrintf(str, subs) {
if (!str || !subs) { return str; }
var ret=[];
var s=str.parenSplit(/(%s|\$[0-9]+)/);
var i=0;
do {
ret.push(s.shift());
if ( !s.length ) { break; }
var cmd=s.shift();
if (cmd == '%s') {
if ( i < subs.length ) { ret.push(subs[i]); } else { ret.push(cmd); }
++i;
} else {
var j=parseInt( cmd.replace('$', ''), 10 ) - 1;
if ( j > -1 && j < subs.length ) { ret.push(subs[j]); } else { ret.push(cmd); }
}
} while (s.length > 0);
return ret.join('');
}
function max(a,b){return a<b ? b : a;}
function min(a,b){return a>b ? b : a;}
function isString(x) { return (typeof x === 'string' || x instanceof String); }
//function isNumber(x) { return (typeof x === 'number' || x instanceof Number); }
function isRegExp(x) { return x instanceof RegExp; }
function isArray (x) { return x instanceof Array; }
function isObject(x) { return x instanceof Object; }
function isFunction(x) {
return !isRegExp(x) && (typeof x === 'function' || x instanceof Function);
}
function repeatString(s,mult) {
var ret='';
for (var i=0; i<mult; ++i) { ret += s; }
return ret;
}
function zeroFill(s, min) {
min = min || 2;
var t=s.toString();
return repeatString('0', min - t.length) + t;
}
function map(f, o) {
if (isArray(o)) { return map_array(f,o); }
return map_object(f,o);
}
function map_array(f,o) {
var ret=[];
for (var i=0; i<o.length; ++i) {
ret.push(f(o[i]));
}
return ret;
}
function map_object(f,o) {
var ret={};
for (var i in o) { ret[o]=f(o[i]); }
return ret;
}
// ENDFILE: tools.js
// STARTFILE: dab.js
//<NOLITE>
//////////////////////////////////////////////////
// Dab-fixing code
//
function retargetDab(newTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) {
log('retargetDab: newTarget='+newTarget + ' oldTarget=' + oldTarget);
return changeLinkTargetLink(
{newTarget: newTarget,
text: newTarget.split(' ').join(' '),
hint: tprintf('disambigHint', [newTarget]),
summary: simplePrintf(
getValueOf('popupFixDabsSummary'), [friendlyCurrentArticleName, newTarget ]),
clickButton: 'wpDiff', minor: true, oldTarget: oldTarget,
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit});
}
function listLinks(wikitext, oldTarget, titleToEdit) {
// mediawiki strips trailing spaces, so we do the same
// testcase: //en.wikipedia.org/w/index.php?title=Radial&oldid=97365633
var reg=RegExp('\\[\\[([^|]*?) *(\\||\\]\\])', 'gi');
var ret=[];
var splitted=wikitext.parenSplit(reg);
// ^[a-z]+ should match interwiki links, hopefully (case-insensitive)
// and ^[a-z]* should match those and [[:Category...]] style links too
var omitRegex=RegExp('^[a-z]*:|^[Ss]pecial:|^[Ii]mage|^[Cc]ategory');
var friendlyCurrentArticleName= oldTarget.toString();
var wikPos = getValueOf('popupDabWiktionary');
for (var i=1; i<splitted.length; i=i+3) {
if (typeof splitted[i] == typeof 'string' && splitted[i].length>0 && !omitRegex.test(splitted[i])) {
ret.push( retargetDab(splitted[i], oldTarget, friendlyCurrentArticleName, titleToEdit) );
} /* if */
} /* for loop */
ret = rmDupesFromSortedList(ret.sort());
if (wikPos) {
var wikTarget='wiktionary:' +
friendlyCurrentArticleName.replace( RegExp('^(.+)\\s+[(][^)]+[)]\\s*$'), '$1' );
var meth;
if (wikPos.toLowerCase() == 'first') { meth = 'unshift'; }
else { meth = 'push'; }
ret[meth]( retargetDab(wikTarget, oldTarget, friendlyCurrentArticleName, titleToEdit) );
}
ret.push(changeLinkTargetLink(
{ newTarget: null,
text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this disambig page from this article"),
clickButton: "wpDiff", oldTarget: oldTarget,
summary: simplePrintf(getValueOf('popupRmDabLinkSummary'), [friendlyCurrentArticleName]),
watch: getValueOf('popupWatchDisambiggedPages'),
title: titleToEdit
}));
return ret;
}
function rmDupesFromSortedList(list) {
var ret=[];
for (var i=0; i<list.length; ++i) {
if (ret.length===0 || list[i]!=ret[ret.length-1]) { ret.push(list[i]); }
}
return ret;
}
function makeFixDab(data, navpop) {
// grab title from parent popup if there is one; default exists in changeLinkTargetLink
var titleToEdit=(navpop.parentPopup && navpop.parentPopup.article.toString());
var list=listLinks(data, navpop.originalArticle, titleToEdit);
if (list.length===0) { log('listLinks returned empty list'); return null; }
var html='<hr>' + popupString('Click to disambiguate this link to:') + '<br>';
html+=list.join(', ');
return html;
}
function makeFixDabs(wikiText, navpop) {
if (getValueOf('popupFixDabs') && isDisambig(wikiText, navpop.article) &&
Title.fromURL(location.href).namespace() != pg.ns.special &&
navpop.article.talkPage() ) {
setPopupHTML(makeFixDab(wikiText, navpop), 'popupFixDab', navpop.idNumber);
}
}
function popupRedlinkHTML(article) {
return changeLinkTargetLink(
{ newTarget: null, text: popupString('remove this link').split(' ').join(' '),
hint: popupString("remove all links to this page from this article"),
clickButton: "wpDiff",
oldTarget: article.toString(),
summary: simplePrintf(getValueOf('popupRedlinkSummary'), [article.toString()])});
}
//</NOLITE>
// ENDFILE: dab.js
// STARTFILE: htmloutput.js
function appendPopupContent(obj, elementId, popupId, onSuccess) {
return setPopupHTML(obj, elementId, popupId, onSuccess, true);
}
// this has to use a timer loop as we don't know if the DOM element exists when we want to set the text
function setPopupHTML (str, elementId, popupId, onSuccess, append) {
if (elementId=='popupPreview') {
}
if (typeof popupId === 'undefined') {
//console.error('popupId is not defined in setPopupHTML, html='+str.substring(0,100));
popupId = pg.idNumber;
}
var popupElement=document.getElementById(elementId+popupId);
if (popupElement) {
if (!append) { popupElement.innerHTML=''; }
if (isString(str)) {
popupElement.innerHTML+=str;
} else {
popupElement.appendChild(str);
}
if (onSuccess) { onSuccess(); }
setTimeout(checkPopupPosition, 100);
return true;
} else {
// call this function again in a little while...
setTimeout(function(){
setPopupHTML(str,elementId,popupId,onSuccess);
}, 600);
}
return null;
}
//<NOLITE>
function setPopupTrailer(str,id) {return setPopupHTML(str, 'popupData', id);}
//</NOLITE>
function fillEmptySpans(args) { return fillEmptySpans2(args); }
// args.navpopup is mandatory
// optional: args.redir, args.redirTarget
// FIXME: ye gods, this is ugly stuff
function fillEmptySpans2(args) { // if redir is present and true then redirTarget is mandatory
var redir=true;
if (typeof args != 'object' || typeof args.redir == 'undefined' || !args.redir) { redir=false; }
var a=args.navpopup.parentAnchor;
var article, hint=null, oldid=null, params={};
if (redir && typeof args.redirTarget == typeof {}) {
article=args.redirTarget;
//hint=article.hintValue();
} else {
article=(new Title()).fromAnchor(a);
hint=a.originalTitle || article.hintValue();
params=parseParams(a.href);
oldid=(getValueOf('popupHistoricalLinks')) ? params.oldid : null;
rcid=params.rcid;
}
var x={ article:article, hint: hint, oldid: oldid, rcid: rcid, navpop:args.navpopup, params:params };
var structure=pg.structures[getValueOf('popupStructure')];
if (typeof structure != 'object') {
setPopupHTML('popupError', 'Unknown structure (this should never happen): '+
pg.option.popupStructure, args.navpopup.idNumber);
return;
}
var spans=flatten(pg.misc.layout);
var numspans = spans.length;
var redirs=pg.misc.redirSpans;
for (var i=0; i<numspans; ++i) {
var f=findThis(redirs, spans[i]);
//log('redir='+redir+', f='+f+', spans[i]='+spans[i]);
if ( (f!==null && !redir) || (f===null && redir) ) {
//log('skipping this set of the loop');
continue;
}
var structurefn=structure[spans[i]];
var setfn = setPopupHTML;
if (getValueOf('popupActiveNavlinks') &&
(spans[i].indexOf('popupTopLinks')==0 || spans[i].indexOf('popupRedirTopLinks')==0)
) {
setfn = setPopupTipsAndHTML;
}
switch (typeof structurefn) {
case 'function':
//log('running '+spans[i]+'({article:'+x.article+', hint:'+x.hint+', oldid: '+x.oldid+'})');
setfn(structurefn(x), spans[i], args.navpopup.idNumber);
break;
case 'string':
setfn(structurefn, spans[i], args.navpopup.idNumber);
break;
default:
errlog('unknown thing with label '+spans[i]);
break;
}
}
}
// flatten an array
function flatten(list, start) {
var ret=[];
if (typeof start == 'undefined') { start=0; }
for (var i=start; i<list.length; ++i) {
if (typeof list[i] == typeof []) {
return ret.concat(flatten(list[i])).concat(flatten(list, i+1));
}
else { ret.push(list[i]); }
}
return ret;
}
// Generate html for whole popup
function popupHTML (a) {
getValueOf('popupStructure');
var structure=pg.structures[pg.option.popupStructure];
if (typeof structure != 'object') {
//return 'Unknown structure: '+pg.option.popupStructure;
// override user choice
pg.option.popupStructure=pg.optionDefault.popupStructure;
return popupHTML(a);
}
if (typeof structure.popupLayout != 'function') { return 'Bad layout'; }
pg.misc.layout=structure.popupLayout();
if (typeof structure.popupRedirSpans == 'function') { pg.misc.redirSpans=structure.popupRedirSpans(); }
else { pg.misc.redirSpans=[]; }
return makeEmptySpans(pg.misc.layout, a.navpopup);
}
function makeEmptySpans (list, navpop) {
var ret='';
for (var i=0; i<list.length; ++i) {
if (typeof list[i] == typeof '') {
ret += emptySpanHTML(list[i], navpop.idNumber, 'div');
} else if (typeof list[i] == typeof [] && list[i].length > 0 ) {
ret = ret.parenSplit(RegExp('(</[^>]*?>$)')).join(makeEmptySpans(list[i], navpop));
} else if (typeof list[i] == typeof {} && list[i].nodeType ) {
ret += emptySpanHTML(list[i].name, navpop.idNumber, list[i].nodeType);
}
}
return ret;
}
function emptySpanHTML(name, id, tag, classname) {
tag = tag || 'span';
if (!classname) { classname = emptySpanHTML.classAliases[name]; }
classname = classname || name;
if (name == getValueOf('popupDragHandle')) { classname += ' popupDragHandle'; }
return simplePrintf('<%s id="%s" class="%s"></%s>', [tag, name + id, classname, tag]);
}
emptySpanHTML.classAliases={ 'popupSecondPreview': 'popupPreview' };
// generate html for popup image
// <a id="popupImageLinkn"><img id="popupImagen">
// where n=idNumber
function imageHTML(article, idNumber) {
return simplePrintf('<a id="popupImageLink$1">' +
'<img align="right" valign="top" id="popupImg$1" style="display: none;"></img>' +
'</a>', [ idNumber ]);
}
function popTipsSoonFn(id, when, popData) {
when || ( when=250 );
var popTips=function(){ setupTooltips(document.getElementById(id), false, true, popData); };
return function() { setTimeout( popTips, when, popData ); };
}
function setPopupTipsAndHTML(html, divname, idnumber, popData) {
setPopupHTML(html, divname, idnumber,
getValueOf('popupSubpopups') ?
popTipsSoonFn(divname + idnumber, null, popData) :
null);
}
// ENDFILE: htmloutput.js
// STARTFILE: mouseout.js
//////////////////////////////////////////////////
// fuzzy checks
function fuzzyCursorOffMenus(x,y, fuzz, parent) {
if (!parent) { return null; }
var uls=parent.getElementsByTagName('ul');
for (var i=0; i<uls.length; ++i) {
if (uls[i].className=='popup_menu') {
if (uls[i].offsetWidth > 0) return false;
} // else {document.title+='.';}
}
return true;
}
function checkPopupPosition () { // stop the popup running off the right of the screen
// FIXME avoid pg.current.link
pg.current.link && pg.current.link.navpopup &&
pg.current.link.navpopup.limitHorizontalPosition();
}
function mouseOutWikiLink () {
if (!window.popupsReady || !window.popupsReady()) { return; }
//console ('mouseOutWikiLink');
var a=this;
if (a.navpopup==null) return;
if ( ! a.navpopup.isVisible() ) {
a.navpopup.banish();
return;
}
Navpopup.tracker.addHook(posCheckerHook(a.navpopup));
}
function posCheckerHook(navpop) {
return function() {
if (!navpop.isVisible()) { return true; /* remove this hook */ }
if (Navpopup.tracker.dirty) {
return false;
}
var x=Navpopup.tracker.x, y=Navpopup.tracker.y;
var mouseOverNavpop = navpop.isWithin(x,y,navpop.fuzz, navpop.mainDiv) ||
!fuzzyCursorOffMenus(x,y,navpop.fuzz, navpop.mainDiv);
// FIXME it'd be prettier to do this internal to the Navpopup objects
var t=getValueOf('popupHideDelay');
if (t) { t = t * 1000; }
if (!t) {
if(!mouseOverNavpop) {
navpop.banish();
return true; /* remove this hook */
}
return false;
}
// we have a hide delay set
var d=+(new Date());
if ( !navpop.mouseLeavingTime ) {
navpop.mouseLeavingTime = d;
return false;
}
if ( mouseOverNavpop ) {
navpop.mouseLeavingTime=null;
return false;
}
if (d - navpop.mouseLeavingTime > t) {
navpop.mouseLeavingTime=null;
navpop.banish(); return true; /* remove this hook */
}
return false;
};
}
function runStopPopupTimer(navpop) {
// at this point, we should have left the link but remain within the popup
// so we call this function again until we leave the popup.
if (!navpop.stopPopupTimer) {
navpop.stopPopupTimer=setInterval(posCheckerHook(navpop), 500);
navpop.addHook(function(){clearInterval(navpop.stopPopupTimer);},
'hide', 'before');
}
}
// ENDFILE: mouseout.js
// STARTFILE: previewmaker.js
/**
@fileoverview
Defines the {@link Previewmaker} object, which generates short previews from wiki markup.
*/
/**
Creates a new Previewmaker
@constructor
@class The Previewmaker class. Use an instance of this to generate short previews from Wikitext.
@param {String} wikiText The Wikitext source of the page we wish to preview.
@param {String} baseUrl The url we should prepend when creating relative urls.
@param {Navpopup} owner The navpop associated to this preview generator
*/
function Previewmaker(wikiText, baseUrl, owner) {
/** The wikitext which is manipulated to generate the preview. */
this.originalData=wikiText;
this.setData();
this.baseUrl=baseUrl;
this.owner=owner;
this.maxCharacters=getValueOf('popupMaxPreviewCharacters');
this.maxSentences=getValueOf('popupMaxPreviewSentences');
}
Previewmaker.prototype.setData=function() {
var maxSize=max(10000, 2*this.maxCharacters);
this.data=this.originalData.substring(0,maxSize);
};
/** Remove HTML comments
@private
*/
Previewmaker.prototype.killComments = function () {
// this also kills trailing spaces and one trailing newline, eg [[diamyo]]
this.data=this.data.replace(RegExp('<!--[\\s\\S]*?--> *\\n?', 'g'), '');
};
/**
@private
*/
Previewmaker.prototype.killDivs = function () {
// say goodbye, divs (can be nested, so use * not *?)
this.data=this.data.replace(RegExp('< *div[^>]* *>[\\s\\S]*?< */ *div *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killGalleries = function () {
this.data=this.data.replace(RegExp('< *gallery[^>]* *>[\\s\\S]*?< */ *gallery *>',
'gi'), '');
};
/**
@private
*/
Previewmaker.prototype.kill = function(opening, closing, subopening, subclosing, repl) {
var oldk=this.data;
var k=this.killStuff(this.data, opening, closing, subopening, subclosing, repl);
while (k.length < oldk.length) {
oldk=k;
k=this.killStuff(k, opening, closing, subopening, subclosing, repl);
}
this.data=k;
};
/**
@private
*/
Previewmaker.prototype.killStuff = function (txt, opening, closing, subopening, subclosing, repl) {
var op=this.makeRegexp(opening);
var cl=this.makeRegexp(closing, '^');
var sb=subopening ? this.makeRegexp(subopening, '^') : null;
var sc=subclosing ? this.makeRegexp(subclosing, '^') : cl;
if (!op || !cl) {
alert('Navigation Popups error: op or cl is null! something is wrong.');
return;
}
if (!op.test(txt)) { return txt; }
var ret='';
var opResult = op.exec(txt);
ret = txt.substring(0,opResult.index);
txt=txt.substring(opResult.index+opResult[0].length);
var depth = 1;
while (txt.length > 0) {
var removal=0;
if (depth==1 && cl.test(txt)) {
depth--;
removal=cl.exec(txt)[0].length;
} else if (depth > 1 && sc.test(txt)) {
depth--;
removal=sc.exec(txt)[0].length;
}else if (sb && sb.test(txt)) {
depth++;
removal=sb.exec(txt)[0].length;
}
if ( !removal ) { removal = 1; }
txt=txt.substring(removal);
if (depth==0) { break; }
}
return ret + (repl || '') + txt;
};
/**
@private
*/
Previewmaker.prototype.makeRegexp = function (x, prefix, suffix) {
prefix = prefix || '';
suffix = suffix || '';
var reStr='';
var flags='';
if (isString(x)) {
reStr=prefix + literalizeRegex(x) + suffix;
} else if (isRegExp(x)) {
var s=x.toString().substring(1);
var sp=s.split('/');
flags=sp[sp.length-1];
sp[sp.length-1]='';
s=sp.join('/');
s=s.substring(0,s.length-1);
reStr= prefix + s + suffix;
} else {
log ('makeRegexp failed');
}
log ('makeRegexp: got reStr=' + reStr + ', flags=' + flags);
return RegExp(reStr, flags);
};
/**
@private
*/
Previewmaker.prototype.killBoxTemplates = function () {
// taxobox removal... in fact, there's a saudiprincebox_begin, so let's be more general
// also, have float_begin, ... float_end
this.kill(RegExp('[{][{][^{}\\s|]*?(float|box)[_ ](begin|start)', 'i'), /[}][}]\s*/, '{{');
// infoboxes etc
// from [[User:Zyxw/popups.js]]: kill frames too
this.kill(RegExp('[{][{][^{}\\s|]*?(infobox|elementbox|frame)[_ ]', 'i'), /[}][}]\s*/, '{{');
};
/**
@private
*/
Previewmaker.prototype.killTemplates = function () {
this.kill('{{', '}}', '{', '}', ' ');
};
/**
@private
*/
Previewmaker.prototype.killTables = function () {
// tables are bad, too
// this can be slow, but it's an inprovement over a browser hang
// torture test: [[Comparison_of_Intel_Central_Processing_Units]]
this.kill('{|', /[|]}\s*/, '{|');
this.kill(/<table.*?>/i, /<\/table.*?>/i, /<table.*?>/i);
// remove lines starting with a pipe for the hell of it (?)
this.data=this.data.replace(RegExp('^[|].*$', 'mg'), '');
};
/**
@private
*/
Previewmaker.prototype.killImages = function () {
// images and categories are a nono
this.kill(RegExp('[[][[]\\s*(Image|File|' + pg.ns.image + '|' + pg.ns.category + ')\\s*:', 'i'),
/\]\]\s*/, '[', ']');
};
/**
@private
*/
Previewmaker.prototype.killHTML = function () {
// kill <ref ...>...</ref>
this.kill(/<ref\b[^/>]*?>/i, /<\/ref>/i);
// let's also delete entire lines starting with <. it's worth a try.
this.data=this.data.replace(RegExp('(^|\\n) *<.*', 'g'), '\n');
// and those pesky html tags, but not <nowiki> or <blockquote>
var splitted=this.data.parenSplit(/(<.*?>)/);
var len=splitted.length;
for (var i=1; i<len; i=i+2) {
switch (splitted[i]) {
case '<nowiki>':
case '</nowiki>':
break;
default:
if (! /^< *\/? *blockquote\b/i.test(splitted[i])) {
splitted[i]='';
}
}
}
this.data=splitted.join('');
};
/**
@private
*/
Previewmaker.prototype.killChunks = function() { // heuristics alert
// chunks of italic text? you crazy, man?
var italicChunkRegex=new RegExp
("((^|\\n)\\s*:*\\s*''[^']([^']|'''|'[^']){20}(.|\\n[^\\n])*''[.!?\\s]*\\n)+", 'g');
// keep stuff separated, though, so stick in \n (fixes [[Union Jack]]?
this.data=this.data.replace(italicChunkRegex, '\n');
};
/**
@private
*/
Previewmaker.prototype.mopup = function () {
// we simply *can't* be doing with horizontal rules right now
this.data=this.data.replace(RegExp('^-{4,}','mg'),'');
// no indented lines
this.data=this.data.replace(RegExp('(^|\\n) *:[^\\n]*','g'), '');
// replace __TOC__, __NOTOC__ and whatever else there is
// this'll probably do
this.data=this.data.replace(RegExp('^__[A-Z_]*__ *$', 'gmi'),'');
};
/**
@private
*/
Previewmaker.prototype.firstBit = function () {
// dont't be givin' me no subsequent paragraphs, you hear me?
/// first we "normalize" section headings, removing whitespace after, adding before
var d=this.data;
if (getValueOf('popupPreviewCutHeadings')) {
this.data=this.data.replace(RegExp('\\s*(==+[^=]*==+)\\s*', 'g'), '\n\n$1 ');
/// then we want to get rid of paragraph breaks whose text ends badly
this.data=this.data.replace(RegExp('([:;]) *\\n{2,}', 'g'), '$1\n');
this.data=this.data.replace(RegExp('^[\\s\\n]*'), '');
stuff=(RegExp('^([^\\n]|\\n[^\\n\\s])*')).exec(this.data);
if (stuff) { d = stuff[0]; }
if (!getValueOf('popupPreviewFirstParOnly')) { d = this.data; }
/// now put \n\n after sections so that bullets and numbered lists work
d=d.replace(RegExp('(==+[^=]*==+)\\s*', 'g'), '$1\n\n');
}
// superfluous sentences are RIGHT OUT.
// note: exactly 1 set of parens here needed to make the slice work
d = d.parenSplit(RegExp('([!?.]+["'+"'"+']*\\s)','g'));
// leading space is bad, mmkay?
d[0]=d[0].replace(RegExp('^\\s*'), '');
var notSentenceEnds=RegExp('([^.][a-z][.] *[a-z]|etc|sic|Dr|Mr|Mrs|Ms|St|no|op|cit|\\[[^\\]]*|\\s[A-Zvclm])$', 'i');
d = this.fixSentenceEnds(d, notSentenceEnds);
this.fullLength=d.join('').length;
var maxChars=getValueOf('popupMaxPreviewCharacters') + this.extraCharacters;
var n=this.maxSentences;
var dd=this.firstSentences(d,n);
do {
dd=this.firstSentences(d,n); --n;
} while ( dd.length > this.maxCharacters && n != 0 );
this.data = dd;
};
/**
@private
*/
Previewmaker.prototype.fixSentenceEnds = function(strs, reg) {
// take an array of strings, strs
// join strs[i] to strs[i+1] & strs[i+2] if strs[i] matches regex reg
var abbrevRe=/\b[a-z][^a-z]*$/i;
for (var i=0; i<strs.length-2; ++i) {
if (reg.test(strs[i])) {
a=[];
for (var j=0; j<strs.length; ++j) {
if (j<i) a[j]=strs[j];
if (j==i) a[i]=strs[i]+strs[i+1]+strs[i+2];
if (j>i+2) a[j-2]=strs[j];
}
return this.fixSentenceEnds(a,reg);
}
// BUGGY STUFF - trying to fix up [[S. C. Johnson & Son]] preview
if (false && abbrevRe.test(strs[i])) {
var j=i, buf='';
do {
buf=buf+strs[i]+strs[i+1];
i=i+2;
} while (i<strs.length-2 && abbrevRe.test(strs[i]));
strs[i]=buf+strs[i];
var a=(j?strs.slice(0,j-1):[]).concat(strs.slice(i));
return this.fixSentenceEnds(a,reg);
}
}
return strs;
};
/**
@private
*/
Previewmaker.prototype.firstSentences = function(strs, howmany) {
var t=strs.slice(0, 2*howmany);
return t.join('');
};
/**
@private
*/
Previewmaker.prototype.killBadWhitespace = function() {
// also cleans up isolated '''', eg [[Suntory Sungoliath]]
this.data=this.data.replace(RegExp('^ *\'+ *$', 'gm'), '');
};
/**
Runs the various methods to generate the preview.
The preview is stored in the <code>html</html> field.
@private
*/
Previewmaker.prototype.makePreview = function() {
if (this.owner.article.namespace()!=pg.ns.template &&
this.owner.article.namespace()!=pg.ns.image ) {
this.killComments();
this.killDivs();
this.killGalleries();
this.killBoxTemplates();
if (getValueOf('popupPreviewKillTemplates')) {
this.killTemplates();
} else {
this.killMultilineTemplates();
}
this.killTables();
this.killImages();
this.killHTML();
this.killChunks();
this.mopup();
this.firstBit();
this.killBadWhitespace();
}
else
{
this.killHTML();
}
this.html=wiki2html(this.data, this.baseUrl); // needs livepreview
this.fixHTML();
this.stripLongTemplates();
};
/**
@private
*/
Previewmaker.prototype.esWiki2HtmlPart = function(data) {
var reLinks = /(?:\[\[([^|\]]*)(?:\|([^|\]]*))*]]([a-z]*))/gi; //match a wikilink
reLinks.lastIndex = 0; //reset regex
var match;
var result = "";
var postfixIndex = 0;
while ((match = reLinks.exec(data)) != null) //match all wikilinks
{
//FIXME: the way that link is built here isn't perfect. It is clickable, but popups preview won't recognize it in some cases.
result += escapeQuotesHTML(data.substring(postfixIndex, match.index)) +
'<a href="'+Insta.conf.paths.articles+escapeQuotesHTML(match[1])+'">'+escapeQuotesHTML((match[2]?match[2]:match[1])+match[3])+"</a>";
postfixIndex = reLinks.lastIndex;
}
//append the rest
result += escapeQuotesHTML(data.substring(postfixIndex));
return result;
};
Previewmaker.prototype.editSummaryPreview=function() {
var reAes = /\/\* *(.*?) *\*\//g; //match the first section marker
reAes.lastIndex = 0; //reset regex
var match;
match = reAes.exec(this.data);
if (match)
{
//we have a section link. Split it, process it, combine it.
var prefix = this.data.substring(0,match.index-1);
var section = match[1];
var postfix = this.data.substring(reAes.lastIndex);
var start = "<span class='autocomment'>";
var end = "</span>";
if (prefix.length>0) start = this.esWiki2HtmlPart(prefix) + " " + start + "- ";
if (postfix.length>0) end = ": " + end + this.esWiki2HtmlPart(postfix);
var t=new Title().fromURL(this.baseUrl);
t.anchorFromUtf(section);
var sectionLink = Insta.conf.paths.articles + escapeQuotesHTML(t.toString(true)) + '#' + escapeQuotesHTML(t.anchor);
return start + '<a href="'+sectionLink+'">→</a> '+escapeQuotesHTML(section) + end;
}
//else there's no section link, htmlify the whole thing.
return this.esWiki2HtmlPart(this.data);
};
//<NOLITE>
/** Test function for debugging preview problems one step at a time.
*/
function previewSteps(txt) {
try {
txt=txt || document.editform.wpTextbox1.value;
} catch (err) {
if (pg.cache.pages.length > 0) {
txt=pg.cache.pages[pg.cache.pages.length-1].data;
} else {
alert('provide text or use an edit page');
}
}
txt=txt.substring(0,10000);
var base=pg.wiki.articlebase + Title.fromURL(document.location.href).urlString();
var p=new Previewmaker(txt, base, pg.current.link.navpopup);
if (this.owner.article.namespace() != pg.ns.template) {
p.killComments(); if (!confirm('done killComments(). Continue?\n---\n' + p.data)) { return; }
p.killDivs(); if (!confirm('done killDivs(). Continue?\n---\n' + p.data)) { return; }
p.killGalleries(); if (!confirm('done killGalleries(). Continue?\n---\n' + p.data)) { return; }
p.killBoxTemplates(); if (!confirm('done killBoxTemplates(). Continue?\n---\n' + p.data)) { return; }
if (getValueOf('popupPreviewKillTemplates')) {
p.killTemplates(); if (!confirm('done killTemplates(). Continue?\n---\n' + p.data)) { return; }
} else {
p.killMultilineTemplates(); if (!confirm('done killMultilineTemplates(). Continue?\n---\n' + p.data)) { return; }
}
p.killTables(); if (!confirm('done killTables(). Continue?\n---\n' + p.data)) { return; }
p.killImages(); if (!confirm('done killImages(). Continue?\n---\n' + p.data)) { return; }
p.killHTML(); if (!confirm('done killHTML(). Continue?\n---\n' + p.data)) { return; }
p.killChunks(); if (!confirm('done killChunks(). Continue?\n---\n' + p.data)) { return; }
p.mopup(); if (!confirm('done mopup(). Continue?\n---\n' + p.data)) { return; }
p.firstBit(); if (!confirm('done firstBit(). Continue?\n---\n' + p.data)) { return; }
p.killBadWhitespace(); if (!confirm('done killBadWhitespace(). Continue?\n---\n' + p.data)) { return; }
}
p.html=wiki2html(p.data, base); // needs livepreview
p.fixHTML(); if (!confirm('done fixHTML(). Continue?\n---\n' + p.html)) { return; }
p.stripLongTemplates(); if (!confirm('done stripLongTemplates(). Continue?\n---\n' + p.html)) { return; }
alert('finished preview - end result follows.\n---\n' + p.html);
}
//</NOLITE>
/**
Works around a quoting bug in livepreview.
<code>wiki2html('[[Foo\'s "bar"]]')</code> gives @literal{<a href='Foo's "bar"'>}
which doesn't do very well. We change this into @literal{<a href="Foo's %22bar%22">}
@private
*/
Previewmaker.prototype.fixHTML = function() {
if(!this.html) return;
// all links seem to have potential issues with quotation marks
var splitted=this.html.parenSplit(/href='([^>]*)'/g);
var ret='';
for (var i=0; i<splitted.length; ++i) {
if(i%2==0) { ret += splitted[i]; continue; }
if(i%2==1) { ret += 'href="' + splitted[i].split('"').join('%22') + '"'; }
}
// fix question marks in wiki links
// maybe this'll break some stuff :-(
ret=ret.replace(RegExp('\(<a href="' + pg.wiki.articlePath + '/[^"]*\)[?]\(.*?"\)', 'g'), '$1%3F$2');
// FIXME fix up % too
this.html=ret;
};
/**
Generates the preview and displays it in the current popup.
Does nothing if the generated preview is invalid or consists of whitespace only.
Also activates wikilinks in the preview for subpopups if the popupSubpopups option is true.
*/
Previewmaker.prototype.showPreview = function () {
this.makePreview();
if (typeof this.html != typeof '') return;
if (RegExp('^\\s*$').test(this.html)) return;
setPopupHTML('<hr>', 'popupPrePreviewSep', this.owner.idNumber);
setPopupTipsAndHTML(this.html, 'popupPreview', this.owner.idNumber, { owner: this.owner });
var more = (this.fullLength > this.data.length) ? this.moreLink() : '';
setPopupHTML(more, 'popupPreviewMore', this.owner.idNumber);
};
/**
@private
*/
Previewmaker.prototype.moreLink=function() {
var a=document.createElement('a');
a.className='popupMoreLink';
a.innerHTML=popupString('more...');
var savedThis=this;
a.onclick=function() {
savedThis.maxCharacters+=2000;
savedThis.maxSentences+=20;
savedThis.setData();
savedThis.showPreview();
}
return a;
}
/**
@private
*/
Previewmaker.prototype.stripLongTemplates = function() {
// operates on the HTML!
this.html=this.html.replace(RegExp('^.{0,1000}[{][{][^}]*?(<(p|br)( /)?>\\s*){2,}([^{}]*?[}][}])?', 'gi'), '');
this.html=this.html.split('\n').join(' '); // workaround for <pre> templates
this.html=this.html.replace(RegExp('[{][{][^}]*<pre>[^}]*[}][}]','gi'), '');
};
/**
@private
*/
Previewmaker.prototype.killMultilineTemplates = function() {
this.kill('{{{', '}}}');
this.kill(RegExp('\\s*[{][{][^{}]*\\n'), '}}', '{{');
};
// ENDFILE: previewmaker.js
// STARTFILE: querypreview.js
function loadAPIPreview(queryType, article, navpop) {
var art=new Title(article).urlString();
var url=pg.wiki.apiwikibase + '?format=json&action=query&';
var htmlGenerator=function(a,d){alert('invalid html generator');};
switch (queryType) {
case 'history':
url += 'meta=userinfo&uiprop=options&titles=' + art + '&prop=revisions&rvlimit=' +
getValueOf('popupHistoryPreviewLimit');
htmlGenerator=APIhistoryPreviewHTML;
break;
case 'category':
url += 'list=categorymembers&cmtitle=' + art;
htmlGenerator=APIcategoryPreviewHTML;
break;
case 'userinfo':
var usernameart = encodeURIComponent( new Title( article ).userName() );
url += 'list=users&usprop=blockinfo|groups|editcount|registration&ususers=' + usernameart;
htmlGenerator=APIuserInfoPreviewHTML;
break;
case 'contribs':
var usernameart = encodeURIComponent( new Title( article ).userName() );
url += 'list=usercontribs&meta=userinfo&uiprop=options&ucuser=' + usernameart +
'&uclimit=' + getValueOf('popupContribsPreviewLimit');
htmlGenerator=APIcontribsPreviewHTML;
break;
case 'imagepagepreview':
var trail='';
if (getValueOf('popupImageLinks')) { trail = '&list=imageusage&iutitle=' + art; }
url += 'titles=' + art + '&prop=revisions|imageinfo&rvprop=content' + trail;
htmlGenerator=APIimagepagePreviewHTML;
break;
case 'backlinks':
url += 'list=backlinks&bltitle=' + art;
htmlGenerator=APIbacklinksPreviewHTML;
break;
}
pendingNavpopTask(navpop);
if( !window.wgEnableAPI || !wgEnableAPI ) {
/* The API is not available */
htmlGenerator=function(a,d){
return 'This function of navigation popups now requires a MediaWiki ' +
'installation with the <a href="//www.mediawiki.org/wiki/API">API</a> enabled.'; };
}
var callback=function(d){
log( "callback of API functions was hit" );
showAPIPreview(queryType, htmlGenerator(article,d,navpop), navpop.idNumber, navpop, d);
};
var go = function(){
getPageWithCaching(url, callback, navpop);
return true;
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_'+queryType+'_QUERY_DATA'); }
}
function linkList(list) {
list.sort(function(x,y) { return (x==y ? 0 : (x<y ? -1 : 1)); });
var buf=[];
for (var i=0; i<list.length; ++i) {
buf.push(wikiLink({article: new Title(list[i]),
text: list[i].split(' ').join(' '),
action: 'view'}));
}
return buf.join(', ');
}
function getTimeOffset(tz) {
if( tz ) {
if( tz.indexOf('|') > -1 ) {
// New format
return parseInt(tz.split('|')[1],10);
} else if ( tz.indexOf(':') > -1 ) {
// Old format
return( parseInt(tz,10)*60 + parseInt(tz.split(':')[1],10) );
}
}
return 0;
}
function editPreviewTable(article, h, reallyContribs, timeOffset) {
var html=['<table>'];
var day=null;
var curart=article;
for (var i=0; i<h.length; ++i) {
if (reallyContribs) {
var page=h[i]['title']; curart = new Title(page);
}
var minor=typeof h[i]['minor']=='undefined' ? '' : '<b>m </b>';
var editDate=adjustDate(getDateFromTimestamp(h[i].timestamp), timeOffset);
var thisDay = dayFormat(editDate);
var thisTime = timeFormat(editDate);
if (thisDay==day) { thisDay=''; }
else { day=thisDay; }
if (thisDay) {
html.push( '<tr><td colspan=3><span class="popup_history_date">' +
thisDay+'</span></td></tr>' );
}
html.push('<tr class="popup_history_row_' + ( (i%2) ? 'odd' : 'even') + '">');
html.push('<td>(<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&diff=prev&oldid=' + h[i]['revid'] + '">' + popupString('last') + '</a>)</td>');
html.push('<td>' +
'<a href="' + pg.wiki.titlebase + new Title(curart).urlString() +
'&oldid=' + h[i]['revid'] + '">' + thisTime + '</a></td>');
var col3url='', col3txt='';
if (!reallyContribs) {
var user=h[i]['user'];
col3url=pg.wiki.titlebase + pg.ns.user + ':' + new Title(user).urlString();
col3txt=escapeQuotesHTML(user);
} else {
col3url=pg.wiki.titlebase + curart.urlString();
col3txt=escapeQuotesHTML(page);
}
html.push('<td>' + (reallyContribs ? minor : '') +
'<a href="' + col3url + '">' + col3txt + '</a></td>');
var comment='';
var c=h[i].comment || h[i]['*'];
if (c) {
comment=new Previewmaker(c, new Title(curart).toUrl()).editSummaryPreview();
}
html.push('<td>' + (!reallyContribs ? minor : '') + comment + '</td>');
html.push('</tr>');
html=[html.join('')];
}
html.push('</table>');
return html.join('');
}
function getDateFromTimestamp(t) {
var s=t.split(/[^0-9]/);
switch(s.length) {
case 0: return null;
case 1: return new Date(s[0]);
case 2: return new Date(s[0], s[1]-1);
case 3: return new Date(s[0], s[1]-1, s[2]);
case 4: return new Date(s[0], s[1]-1, s[2], s[3]);
case 5: return new Date(s[0], s[1]-1, s[2], s[3], s[4]);
case 6: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]);
default: return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5], s[6]);
}
}
function adjustDate(d, offset) {
// offset is in minutes
var o=offset * 60 * 1000;
return new Date( +d + o);
}
function dayFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCFullYear(), editDate.getUTCMonth()+1, editDate.getUTCDate()]).join('-'); }
return map(zeroFill, [editDate.getFullYear(), editDate.getMonth()+1, editDate.getDate()]).join('-');
}
function timeFormat(editDate, utc) {
if (utc) { return map(zeroFill, [editDate.getUTCHours(), editDate.getUTCMinutes(), editDate.getUTCSeconds()]).join(':'); }
return map(zeroFill, [editDate.getHours(), editDate.getMinutes(), editDate.getSeconds()]).join(':');
}
function showAPIPreview(queryType, html, id, navpop, download) {
// DJ: done
var target='popupPreview';
switch (queryType) {
case 'imagelinks':
case 'category':
case 'userinfo':
target='popupPostPreview'; break;
}
setPopupTipsAndHTML(html, target, id);
completedNavpopTask(navpop);
}
function APIbacklinksPreviewHTML(article, download, navpop) {
try {
var jsObj=getJsObj(download.data);
var list=jsObj.query.backlinks;
} catch (someError) { return 'backlinksPreviewHTML went wonky'; }
var html=[];
if (!list) { return popupString('No backlinks found'); }
for ( i in list ) {
var t=new Title(list[i]['title']);
html.push('<a href="' + pg.wiki.titlebase + t.urlString() + '">' + t + '</a>');
}
html=html.join(', ');
if (jsObj['query-continue'] && jsObj['query-continue'].backlinks && jsObj['query-continue'].backlinks.blcontinue) {
html += popupString(' and more');
}
return html;
}
function APIsharedImagePagePreviewHTML(obj) {
log( "APIsharedImagePagePreviewHTML" );
var popupid = obj['requestid'];
if( obj['query'] && obj['query']['pages'] )
{
var page=anyChild(obj['query']['pages']);
var content=(page && page.revisions ) ? page.revisions[0]['*'] : null;
if( content )
{
/* Not entirely safe, but the best we can do */
var p=new Previewmaker(content, pg.current.link.navpopup.article, pg.current.link.navpopup);
p.makePreview();
setPopupHTML( p.html, "popupSecondPreview", popupid );
}
}
}
function APIimagepagePreviewHTML(article, download, navpop) {
try {
var jsObj=getJsObj(download.data);
var page=anyChild(jsObj.query.pages);
var content=(page && page.revisions ) ? page.revisions[0]['*'] : null;
} catch (someError) {
return 'API imagepage preview failed :(';
}
var ret='';
if (content) {
var p=prepPreviewmaker(content, article, navpop);
p.makePreview();
if (p.html) { ret += '<hr>' + p.html; }
}
if (content!==null && getValueOf('popupSummaryData')) {
var info=getPageInfo(content, download);
log(info);
setPopupTrailer(info, navpop.idNumber);
}
if (page && page.imagerepository == "shared" ) {
var art=new Title(article).urlString();
var encart = encodeURIComponent( "File:" + art.stripNamespace() );
var shared_url = pg.wiki.apicommonsbase + '?format=json&callback=APIsharedImagePagePreviewHTML' +
'&requestid=' + navpop.idNumber +
'&action=query&prop=revisions&rvprop=content&titles=' + encart;
ret = ret +'<hr>' + popupString( 'Image from Commons') +
': <a href="' + pg.wiki.commonsbase + '?title=' + encart + '">' +
popupString( 'Description page') + '</a>';
importScriptURI( shared_url );
}
showAPIPreview('imagelinks', APIimagelinksPreviewHTML(article,download), navpop.idNumber, download);
return ret;
}
function APIimagelinksPreviewHTML(article, download) {
try {
var jsobj=getJsObj(download.data);
var list=jsobj.query.imageusage;
if (!list) { return popupString('No image links found'); }
} catch(someError) { return 'Image links preview generation failed :('; }
var ret=[];
for (var i=0; i < list.length; i++) {
ret.push(list[i]['title']);
}
if (ret.length === 0) { return popupString('No image links found'); }
return '<h2>' + popupString('File links') + '</h2>' + linkList(ret);
}
function APIcategoryPreviewHTML(article, download) {
try{
var jsobj=getJsObj(download.data);
var list=jsobj.query.categorymembers;
} catch(someError) { return 'Category preview failed :('; }
var ret=[];
for (var p=0; p < list.length; p++) {
ret.push(list[p]['title']);
}
if (ret.length === 0) { return popupString('Empty category'); }
ret = '<h2>' + tprintf('Category members (%s shown)', [ret.length]) + '</h2>' +linkList(ret);
if (jsobj['query-continue'] && jsobj['query-continue'].categorymembers && jsobj['query-continue'].categorymembers.cmcontinue) {
ret += popupString(' and more');
}
return ret;
}
function APIuserInfoPreviewHTML(article, download) {
try{
var jsobj=getJsObj(download.data);
var user=anyChild(jsobj.query.users);
} catch(someError) { return 'Userinfo preview failed :('; }
if (!user || user.invalid == '') {
return '<hr>' + popupString( 'Invalid or IP user');
} else if (user.missing == '') {
return '<hr>' + popupString( 'Not a registered username');
}
var ret=[];
if( user.blockedby )
ret.push('<b>' + popupString('BLOCKED') + '</b>');
for( var i=0; (user.groups && i < user.groups.length); i++)
{
ret.push( user.groups[i] );
}
if( user.editcount || user.registration )
ret.push( (user.editcount?user.editcount:'') + popupString(' edits since: ') + (user.registration?dayFormat(getDateFromTimestamp(user.registration)):'') );
ret = '<hr>' + ret.join( ', ' );
return ret;
}
function APIcontribsPreviewHTML(article, download, navpop) {
return APIhistoryPreviewHTML(article, download, navpop, true);
}
function APIhistoryPreviewHTML(article, download, navpop, reallyContribs) {
try {
var jsobj=getJsObj(download.data);
var tz=jsobj.query.userinfo.options.timecorrection;
if( reallyContribs )
var edits=jsobj.query.usercontribs;
else
var edits=anyChild(jsobj.query.pages)['revisions'];
} catch (someError) {
return 'History preview failed :-(';
}
var timeOffset = getTimeOffset(tz);
Cookie.create('popTz', timeOffset, 1);
var ret=editPreviewTable(article, edits, reallyContribs, timeOffset);
return ret;
}
//</NOLITE>
// ENDFILE: querypreview.js
// STARTFILE: debug.js
////////////////////////////////////////////////////////////////////
// Debugging functions
////////////////////////////////////////////////////////////////////
function log(){}; // dummy to stop errors
function setupDebugging() {
//<NOLITE>
if (window.popupDebug) { // popupDebug is set from .version
window.log=function(x) { //if(gMsg!='')gMsg += '\n'; gMsg+=time() + ' ' + x; };
window.console.log(x);
}
window.errlog=function(x) {
window.console.error(x);
}
log('Initializing logger');
} else {
//</NOLITE>
window.log = function(x) {};
window.errlog = function(x) {};
//<NOLITE>
}
//</NOLITE>
}
// ENDFILE: debug.js
// STARTFILE: images.js
// load image of type Title.
function loadImage(image, navpop) {
if (typeof image.stripNamespace != 'function') { alert('loadImages bad'); }
// API call to retrieve image info.
if (!getValueOf('popupImages') || !window.wgEnableAPI || !wgEnableAPI) return;
if (!isValidImageName(image)) return false;
var art=image.urlString();
var url=pg.wiki.apiwikibase + '?format=json&action=query';
url += '&prop=imageinfo&iiprop=url|mime&iiurlwidth=' + getValueOf('popupImageSizeLarge');;
url += '&titles=' + art;
pendingNavpopTask(navpop);
var callback=function(d){
popupsInsertImage(navpop.idNumber, navpop, d);
};
var go = function(){
getPageWithCaching(url, callback, navpop);
return true;
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'after', 'DOWNLOAD_IMAGE_QUERY_DATA'); }
}
function popupsInsertImage(id, navpop, download) {
log( "popupsInsertImage");
try {
var jsObj=getJsObj(download.data);
var imagepage=anyChild(jsObj.query.pages);
var imageinfo = imagepage.imageinfo[0];
} catch (someError) {
log( "popupsInsertImage failed :(" );
return;
}
var popupImage = document.getElementById("popupImg"+id);
if (!popupImage) {
log( "could not find insertion point for image");
return;
}
popupImage.width=getValueOf('popupImageSize');
popupImage.style.display='inline';
// Set the source for the image.
if( imageinfo.thumburl )
popupImage.src=imageinfo.thumburl;
else if( imageinfo.mime.indexOf("image") == 0 ){
popupImage.src=imageinfo.url;
log( "a thumb could not be found, using original image" );
} else log( "fullsize imagethumb, but not sure if it's an image");
var a=document.getElementById("popupImageLink"+id);
if (a === null) { return null; }
// Determine the action of the surrouding imagelink.
switch (getValueOf('popupThumbAction')) {
case 'imagepage':
if (pg.current.article.namespace()!=pg.ns.image) {
a.href=imageinfo.descriptionurl;
// FIXME: unreliable pg.idNumber
popTipsSoonFn('popupImage' + id)();
break;
} // else fall through
case 'sizetoggle':
a.onclick=toggleSize;
a.title=popupString('Toggle image size');
return;
case 'linkfull':
a.href = imageinfo.url;
a.title=popupString('Open full-size image');
return;
}
}
// Toggles the image between inline small and navpop fullwidth.
// It's the same image, no actual sizechange occurs, only display width.
function toggleSize() {
var imgContainer=this;
if (!imgContainer) { alert('imgContainer is null :/'); return;}
img=imgContainer.firstChild;
if (!img) { alert('img is null :/'); return;}
if (!img.style.width || img.style.width=='') { img.style.width='100%'; }
else { img.style.width=''; }
}
// Returns one title of an image from wikiText.
function getValidImageFromWikiText(wikiText) {
// nb in pg.re.image we're interested in the second bracketed expression
// this may change if the regex changes :-(
//var match=pg.re.image.exec(wikiText);
var matched=null;
var match;
// strip html comments, used by evil bots :-(
var t = removeMatchesUnless(wikiText, RegExp('(<!--[\\s\\S]*?-->)'), 1,
RegExp('^<!--[^[]*popup', 'i'));
while ( match = pg.re.image.exec(t) ) {
// now find a sane image name - exclude templates by seeking {
var m = match[2] || match[6];
if ( isValidImageName(m) ) {
matched=m;
break;
}
}
pg.re.image.lastIndex=0;
if (!matched) { return null; }
return pg.ns.image+':'+upcaseFirst(matched);
}
function removeMatchesUnless(str, re1, parencount, re2) {
var split=str.parenSplit(re1);
var c=parencount + 1;
for (var i=0; i<split.length; ++i) {
if ( i%c === 0 || re2.test(split[i]) ) { continue; }
split[i]='';
}
return split.join('');
}
//</NOLITE>
// ENDFILE: images.js
// STARTFILE: namespaces.js
// Set up namespaces and other non-strings.js localization
// (currently that means redirs too)
// Put the right namespace list into pg.ns.list, based on pg.wiki.lang
// Default to english if nothing seems to fit
function setNamespaceList() {
var m="Media";
var list = [m, "Special", "Talk", "User", "User talk", "Wikipedia", "Wikipedia talk", "File", "File talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk", "Portal", "Portal talk"];
var nsIndex = { '': 0, 'Special': 1,
'Talk': 2, 'User': 3, 'User talk': 4, 'Wikipedia': 5,
'Wikipedia talk': 6, 'Image': 7, 'File': 7, 'Image talk': 8, 'File talk' : 8, 'MediaWiki': 9,
'MediaWiki talk': 10, 'Template': 11, 'Template talk': 12,
'Help': 13, 'Help talk': 14, 'Category': 15, 'Category talk':16,
'Portal': 17, 'Portal talk': 18};
var nsLists = {
//<NOLITE>
"af": [m, "Spesiaal", "Bespreking", "Gebruiker", "Gebruikerbespreking", "Wikipedia", "Wikipediabespreking", "Beeld", "Beeldbespreking", "MediaWiki", "MediaWikibespreking", "Sjabloon", "Sjabloonbespreking", "Hulp", "Hulpbespreking", "Kategorie", "Kategoriebespreking"],
"als": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion"],
"ar": ["ملف", "خاص", "نقاش", "مستخدم", "نقاش المستخدم", "ويكيبيديا", "نقاش ويكيبيديا", "صورة", "نقاش الصورة", "ميدياويكي", "نقاش ميدياويكي", "Template", "نقاش Template", "مساعدة", "نقاش المساعدة", "تصنيف", "نقاش التصنيف"],
"ast": [m, "Especial", "Discusión", "Usuariu", "Usuariu discusión", "Uiquipedia", "Uiquipedia discusión", "Imaxen", "Imaxen discusión", "MediaWiki", "MediaWiki discusión", "Plantilla", "Plantilla discusión", "Ayuda", "Ayuda discusión", "Categoría", "Categoría discusión"],
"be": ["Мэдыя", "Спэцыяльныя", "Абмеркаваньне", "Удзельнік", "Гутаркі ўдзельніка", "Вікіпэдыя", "Абмеркаваньне Вікіпэдыя", "Выява", "Абмеркаваньне выявы", "MediaWiki", "Абмеркаваньне MediaWiki", "Шаблён", "Абмеркаваньне шаблёну", "Дапамога", "Абмеркаваньне дапамогі", "Катэгорыя", "Абмеркаваньне катэгорыі"],
"bg": ["Медия", "Специални", "Беседа", "Потребител", "Потребител беседа", "Уикипедия", "Уикипедия беседа", "Картинка", "Картинка беседа", "МедияУики", "МедияУики беседа", "Шаблон", "Шаблон беседа", "Помощ", "Помощ беседа", "Категория", "Категория беседа"],
"bm": [m, "Special", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipedia", "Discussion Wikipedia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie"],
"bn": ["বিশেষ", "আলাপ", "ব্যবহারকারী", "ব্যবহারকারী আলাপ", "উইকিপেডিয়া", "উইকিপেডিয়া আলাপ", "চিত্র", "চিত্র আলাপ", "MediaWik i আলাপ", m, "MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"br": [m, "Dibar", "Kaozeal", "Implijer", "Kaozeadenn Implijer", "Wikipedia", "Kaozeadenn Wikipedia", "Skeudenn", "Kaozeadenn Skeudenn", "MediaWiki", "Kaozeadenn MediaWiki", "Patrom", "Kaozeadenn Patrom", "Skoazell", "Kaozeadenn Skoazell", "Rummad", "Kaozeadenn Rummad"],
"ca": [m, "Especial", "Discussió", "Usuari", "Usuari Discussió", "Viquipèdia", "Viquipèdia Discussió", "Imatge", "Imatge Discussió", "MediaWiki", "MediaWiki Discussió", "Template", "Template Discussió", "Ajuda", "Ajuda Discussió", "Categoria", "Categoria Discussió"],
"cs": ["Média", "Speciální", "Diskuse", "Wikipedista", "Wikipedista diskuse", "Wikipedie", "Wikipedie diskuse", "Soubor", "Soubor diskuse", "MediaWiki", "MediaWiki diskuse", "Šablona", "Šablona diskuse", "Nápověda", "Nápověda diskuse", "Kategorie", "Kategorie diskuse"],
"csb": [m, "Specjalnô", "Diskùsëjô", "Brëkòwnik", "Diskùsëjô brëkòwnika", "Wiki", "Diskùsëjô Wiki", "Òbrôzk", "Diskùsëjô òbrôzków", "MediaWiki", "Diskùsëjô MediaWiki", "Szablóna", "Diskùsëjô Szablónë", "Pòmòc", "Diskùsëjô Pòmòcë", "Kategòrëjô", "Diskùsëjô Kategòrëji"],
"cv": ["Медиа", "Ятарлă", "Сӳтсе явасси", "Хутшăнакан", "Хутшăнаканăн канашлу страници", "Wikipedia", "0", "Ӳкерчĕк", "Ӳкерчĕке сӳтсе явмалли", "MediaWiki", "MediaWiki сӳтсе явмалли", "Шаблон", "Шаблона сӳтсе явмалли", "Пулăшу", "Пулăшăва сӳтсе явмалли", "Категори", "Категорине сӳтсе явмалли"],
"cy": [m, "Arbennig", "Sgwrs", "Defnyddiwr", "Sgwrs Defnyddiwr", "Wicipedia", "Sgwrs Wicipedia", "Delwedd", "Sgwrs Delwedd", "MediaWiki", "Sgwrs MediaWiki", "Nodyn", "Sgwrs Nodyn", "Help", "Help talk", "Category", "Category talk"],
"da": [m, "Speciel", "Diskussion", "Bruger", "Brugerdiskussion", "Wikipedia", "Wikipedia-diskussion", "Billede", "Billeddiskussion", "MediaWiki", "MediaWiki-diskussion", "Skabelon", "Skabelondiskussion", "Hjælp", "Hjælpdiskussion", "Kategori", "Kategoridiskussion", "Portal", "Portaldiskussion"],
"de": [m, "Spezial", "Diskussion", "Benutzer", "Benutzer Diskussion", "Wikipedia", "Wikipedia Diskussion", "Bild", "Bild Diskussion", "MediaWiki", "MediaWiki Diskussion", "Vorlage", "Vorlage Diskussion", "Hilfe", "Hilfe Diskussion", "Kategorie", "Kategorie Diskussion", "Portal", "Portal Diskussion"],
"el": ["Μέσον", "Ειδικό", "Συζήτηση", "Χρήστης", "Συζήτηση χρήστη", "Βικιπαίδεια", "Βικιπαίδεια συζήτηση", "Εικόνα", "Συζήτηση εικόνας", "MediaWiki", "MediaWiki talk", "Πρότυπο", "Συζήτηση προτύπου", "Βοήθεια", "Συζήτηση βοήθειας", "Κατηγορία", "Συζήτηση κατηγορίας"],
"eo": [m, "Speciala", "Diskuto", "Uzanto", "Uzanta diskuto", "Vikipedio", "Vikipedio diskuto", "Dosiero", "Dosiera diskuto", "MediaWiki", "MediaWiki diskuto", "Ŝablono", "Ŝablona diskuto", "Helpo", "Helpa diskuto", "Kategorio", "Kategoria diskuto"],
"es": [m, "Especial", "Discusión", "Usuario", "Usuario Discusión", "Wikipedia", "Wikipedia Discusión", "Imagen", "Imagen Discusión", "MediaWiki", "MediaWiki Discusión", "Plantilla", "Plantilla Discusión", "Ayuda", "Ayuda Discusión", "Categoría", "Categoría Discusión"],
"et": ["Meedia", "Eri", "Arutelu", "Kasutaja", "Kasutaja arutelu", "Vikipeedia", "Vikipeedia arutelu", "Pilt", "Pildi arutelu", "MediaWiki", "MediaWiki arutelu", "Mall", "Malli arutelu", "Juhend", "Juhendi arutelu", "Kategooria", "Kategooria arutelu"],
"eu": [m, "Aparteko", "Eztabaida", "Lankide", "Lankide eztabaida", "Wikipedia", "Wikipedia eztabaida", "Irudi", "Irudi eztabaida", "MediaWiki", "MediaWiki eztabaida", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"fa": ["مدیا", "ویژه", "بحث", "کاربر", "بحث کاربر", "ویکیپدیا", "بحث ویکیپدیا", "تصویر", "بحث تصویر", "مدیاویکی", "بحث مدیاویکی", "الگو", "بحث الگو", "راهنما", "بحث راهنما", "رده", "بحث رده"],
"fi": [m, "Toiminnot", "Keskustelu", "Käyttäjä", "Keskustelu käyttäjästä", "Wikipedia", "Keskustelu Wikipediasta", "Kuva", "Keskustelu kuvasta", "MediaWiki", "MediaWiki talk", "Malline", "Keskustelu mallineesta", "Ohje", "Keskustelu ohjeesta", "Luokka", "Keskustelu luokasta"],
"fo": ["Miðil", "Serstakur", "Kjak", "Brúkari", "Brúkari kjak", "Wikipedia", "Wikipedia kjak", "Mynd", "Mynd kjak", "MidiaWiki", "MidiaWiki kjak", "Fyrimynd", "Fyrimynd kjak", "Hjálp", "Hjálp kjak", "Bólkur", "Bólkur kjak"],
"fr": [m, "Spécial", "Discuter", "Utilisateur", "Discussion Utilisateur", "Wikipédia", "Discussion Wikipédia", "Image", "Discussion Image", "MediaWiki", "Discussion MediaWiki", "Modèle", "Discussion Modèle", "Aide", "Discussion Aide", "Catégorie", "Discussion Catégorie", "Portail", "Discussion Portail"],
"fur": [m, "Speciâl", "Discussion", "Utent", "Discussion utent", "Vichipedie", "Discussion Vichipedie", "Figure", "Discussion figure", "MediaWiki", "Discussion MediaWiki", "Model", "Discussion model", "Jutori", "Discussion jutori", "Categorie", "Discussion categorie"],
"fy": [m, "Wiki", "Oerlis", "Meidogger", "Meidogger oerlis", "Wikipedy", "Wikipedy oerlis", "Ofbyld", "Ofbyld oerlis", "MediaWiki", "MediaWiki oerlis", "Berjocht", "Berjocht oerlis", "Hulp", "Hulp oerlis", "Kategory", "Kategory oerlis"],
"ga": ["Meán", "Speisialta", "Plé", "Úsáideoir", "Plé úsáideora", "Vicipéid", "Plé Vicipéide", "Íomhá", "Plé íomhá", "MediaWiki", "Plé MediaWiki", "Teimpléad", "Plé teimpléid", "Cabhair", "Plé cabhrach", "Catagóir", "Plé catagóire"],
"gl": [m, "Especial", "Conversa", "Usuario", "Conversa usuario", "Wikipedia", "Conversa Wikipedia", "Ficheiro", "Conversa ficheiro", "MediaWiki", "Conversa MediaWiki", "Modelo", "Conversa modelo", "Axuda", "Conversa axuda", "Categoría", "Conversa categoría", "Portal", "Portal talk"],
"gu": [m, "Special", "Talk", "User", "User talk", "વિકિપીડિયા", "વિકિપીડિયા talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"he": [m, "מיוחד", "שיחה", "משתמש", "שיחת משתמש", "ויקיפדיה", "שיחת ויקיפדיה", "תמונה", "שיחת תמונה", "MediaWiki", "שיחת MediaWiki", "תבנית", "שיחת תבנית", "עזרה", "שיחת עזרה", "קטגוריה", "שיחת קטגוריה"],
"hi": [m, "विशेष", "वार्ता", "सदस्य", "सदस्य वार्ता", "विकिपीडिया", "विकिपीडिया वार्ता", "चित्र", "चित्र वार्ता", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "श्रेणी", "श्रेणी वार्ता", "Help", "Help talk"],
"hr": ["Mediji", "Posebno", "Razgovor", "Suradnik", "Razgovor sa suradnikom", "Wikipedia", "Razgovor Wikipedia", "Slika", "Razgovor o slici", "MediaWiki", "MediaWiki razgovor", "Predložak", "Razgovor o predlošku", "Pomoć", "Razgovor o pomoći", "Kategorija", "Razgovor o kategoriji"],
"hu": [ "Média", "Speciális", "Vita", "Szerkesztő", "Szerkesztővita", "Wikipédia", "Wikipédia-vita", "Kép", "Képvita", "MediaWiki", "MediaWiki-vita", "Sablon", "Sablonvita", "Segítség", "Segítségvita", "Kategória", "Kategóriavita", "Portál", "Portálvita"],
"ia": [m, "Special", "Discussion", "Usator", "Discussion Usator", "Wikipedia", "Discussion Wikipedia", "Imagine", "Discussion Imagine", "MediaWiki", "Discussion MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"id": [m, "Istimewa", "Bicara", "Pengguna", "Bicara Pengguna", "Wikipedia", "Pembicaraan Wikipedia", "Gambar", "Pembicaraan Gambar", "MediaWiki", "Pembicaraan MediaWiki", "Templat", "Pembicaraan Templat", "Bantuan", "Pembicaraan Bantuan", "Kategori", "Pembicaraan Kategori"],
"is": ["Miðill", "Kerfissíða", "Spjall", "Notandi", "Notandaspjall", "Wikipedia", "Wikipediaspjall", "Mynd", "Myndaspjall", "Melding", "Meldingarspjall", "Snið", "Sniðaspjall", "Hjálp", "Hjálparspjall", "Flokkur", "Flokkaspjall"],
"it": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "File", "Discussioni file", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria", "Portale", "Discussioni portale", "Progetto", "Discussioni progetto"],
"ja": [m, "特別", "ノート", "利用者", "利用者‐会話", "Wikipedia", "Wikipedia‐ノート", "画像", "画像‐ノート", "MediaWiki", "MediaWiki‐ノート", "Template", "Template‐ノート", "Help", "Help‐ノート", "Category", "Category‐ノート"],
"ka": ["მედია", "სპეციალური", "განხილვა", "მომხმარებელი", "მომხმარებელი განხილვა", "ვიკიპედია", "ვიკიპედია განხილვა", "სურათი", "სურათი განხილვა", "მედიავიკი", "მედიავიკი განხილვა", "თარგი", "თარგი განხილვა", "დახმარება", "დახმარება განხილვა", "კატეგორია", "კატეგორია განხილვა"],
"ko": [m, "특수기능", "토론", "사용자", "사용자토론", "위키백과", "위키백과토론", "그림", "그림토론", "분류", "분류토론", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk"],
"ku": ["Medya", "Taybet", "Nîqaş", "Bikarhêner", "Bikarhêner nîqaş", "Wîkîpediya", "Wîkîpediya nîqaş", "Wêne", "Wêne nîqaş", "MediaWiki", "MediaWiki nîqaş", "Şablon", "Şablon nîqaş", "Alîkarî", "Alîkarî nîqaş", "Kategorî", "Kategorî nîqaş"],
"la": ["Specialis", "Disputatio", "Usor", "Disputatio Usoris", "Vicipaedia", "Disputatio Vicipaediae", "Imago", "Disputatio Imaginis", "MediaWiki", "Disputatio MediaWiki", "Formula", "Disputatio Formulae", "Auxilium", "Disputatio Auxilii", "Categoria", "Disputatio Categoriae", m],
"li": [m, "Speciaal", "Euverlik", "Gebroeker", "Euverlik gebroeker", "Wikipedia", "Euverlik Wikipedia", "Aafbeilding", "Euverlik afbeelding", "MediaWiki", "Euverlik MediaWiki", "Sjabloon", "Euverlik sjabloon", "Help", "Euverlik help", "Kategorie", "Euverlik kategorie"],
"lt": ["Medija", "Specialus", "Aptarimas", "Naudotojas", "Naudotojo aptarimas", "Wikipedia", "Wikipedia aptarimas", "Vaizdas", "Vaizdo aptarimas", "MediaWiki", "MediaWiki aptarimas", "Šablonas", "Šablono aptarimas", "Pagalba", "Pagalbos aptarimas", "Kategorija", "Kategorijos aptarimas"],
"mk": ["Медија", "Специјални", "Разговор", "Корисник", "Корисник разговор", "Wikipedia", "Wikipedia разговор", "Слика", "Слика разговор", "МедијаВики", "МедијаВики разговор", "Шаблон", "Шаблон разговор", "Помош", "Помош разговор", "Категорија", "Категорија разговор"],
"ms": [m, "Istimewa", "Perbualan", "Pengguna", "Perbualan Pengguna", "Wikipedia", "Perbualan Wikipedia", "Imej", "Imej Perbualan", "MediaWiki", "MediaWiki Perbualan", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"mt": [m, "Special", "Talk", "User", "User talk", "Wikipedija", "Wikipedija talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"nap": [m, "Speciale", "Discussione", "Utente", "Discussioni utente", "Wikipedia", "Discussioni Wikipedia", "Immagine", "Discussioni immagine", "MediaWiki", "Discussioni MediaWiki", "Template", "Discussioni template", "Aiuto", "Discussioni aiuto", "Categoria", "Discussioni categoria"],
"nds": [m, "Spezial", "Diskuschoon", "Bruker", "Bruker Diskuschoon", "Wikipedia", "Wikipedia Diskuschoon", "Bild", "Bild Diskuschoon", "MediaWiki", "MediaWiki Diskuschoon", "Vörlaag", "Vörlaag Diskuschoon", "Hülp", "Hülp Diskuschoon", "Kategorie", "Kategorie Diskuschoon"],
"nl": [m, "Speciaal", "Overleg", "Gebruiker", "Overleg gebruiker", "Wikipedia", "Overleg Wikipedia", "Bestand", "Overleg bestand", "MediaWiki", "Overleg MediaWiki", "Sjabloon", "Overleg sjabloon", "Help", "Overleg help", "Categorie", "Overleg categorie"],
"nn": ["Filpeikar", "Spesial", "Diskusjon", "Brukar", "Brukardiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Fil", "Fildiskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"no": ["Medium", "Spesial", "Diskusjon", "Bruker", "Brukerdiskusjon", "Wikipedia", "Wikipedia-diskusjon", "Bilde", "Bildediskusjon", "MediaWiki", "MediaWiki-diskusjon", "Mal", "Maldiskusjon", "Hjelp", "Hjelpdiskusjon", "Kategori", "Kategoridiskusjon"],
"nv": [m, "Special", "Naaltsoos baa yinísht'į́", "Choinish'įįhí", "Choinish'įįhí baa yinísht'į́", "Wikiibíídiiya", "Wikiibíídiiya baa yinísht'į́", "E'elyaaígíí", "E'elyaaígíí baa yinísht'į́", "MediaWiki", "MediaWiki baa yinísht'į́", "Template", "Template talk", "Aná'álwo'", "Aná'álwo' baa yinísht'į́", "T'ááłáhági át'éego", "T'ááłáhági át'éego baa yinísht'į́"],
"oc": ["Especial", "Discutir", "Utilisator", "Discutida Utilisator", "Oiquipedià", "Discutida Oiquipedià", "Image", "Discutida Image", "MediaWiki", "MediaWiki talk", "Template", "Template talk", m, "Help", "Help talk", "Category", "Category talk"],
"os": [m, "Сæрмагонд", "Дискусси", "Архайæг", "Архайæджы дискусси", "Wikipedia", "0", "Ныв", "Нывы тыххæй дискусси", "MediaWiki", "Дискусси MediaWiki", "Шаблон", "Шаблоны тыххæй дискусси", "Æххуыс", "Æххуысы тыххæй дискусси", "Категори", "Категорийы тыххæй дискусси"],
"pa": ["ਮੀਡੀਆ", "ਖਾਸ", "ਚਰਚਾ", "ਮੈਂਬਰ", "ਮੈਂਬਰ ਚਰਚਾ", "Wikipedia", "Wikipedia ਚਰਚਾ", "ਤਸਵੀਰ", "ਤਸਵੀਰ ਚਰਚਾ", "ਮੀਡੀਆਵਿਕਿ", "ਮੀਡੀਆਵਿਕਿ ਚਰਚਾ", "ਨਮੂਨਾ", "ਨਮੂਨਾ ਚਰਚਾ", "ਮਦਦ", "ਮਦਦ ਚਰਚਾ", "ਸ਼੍ਰੇਣੀ", "ਸ਼੍ਰੇਣੀ ਚਰਚਾ"],
"pl": [m, "Specjalna", "Dyskusja", "Wikipedysta", "Dyskusja wikipedysty", "Wikipedia", "Dyskusja Wikipedii", "Plik", "Dyskusja pliku", "MediaWiki", "Dyskusja MediaWiki", "Szablon", "Dyskusja szablonu", "Pomoc", "Dyskusja pomocy", "Kategoria", "Dyskusja kategorii", "Portal", "Dyskusja portalu","Wikiprojekt","Dyskusja Wikiprojektu"],
"pt": [m, "Especial", "Discussão", "Usuário", "Usuário Discussão", "Wikipedia", "Wikipedia Discussão", "Imagem", "Imagem Discussão", "MediaWiki", "MediaWiki Discussão", "Predefinição", "Predefinição Discussão", "Ajuda", "Ajuda Discussão", "Categoria", "Categoria Discussão"],
"ro": [m, "Special", "Discuţie", "Utilizator", "Discuţie Utilizator", "Wikipedia", "Discuţie Wikipedia", "Imagine", "Discuţie Imagine", "MediaWiki", "Discuţie MediaWiki", "Format", "Discuţie Format", "Ajutor", "Discuţie Ajutor", "Categorie", "Discuţie Categorie"],
"ru": ["Медиа", "Служебная", "Обсуждение", "Участник", "Обсуждение участника", "Википедия", "Обсуждение Википедии", "Изображение", "Обсуждение изображения", "MediaWiki", "Обсуждение MediaWiki", "Шаблон", "Обсуждение шаблона", "Справка", "Обсуждение справки", "Категория", "Обсуждение категории"],
"sc": ["Speciale", "Contièndha", "Utente", "Utente discussioni", "Wikipedia", "Wikipedia discussioni", "Immàgini", "Immàgini contièndha", m, "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sk": ["Médiá", "Špeciálne", "Diskusia", "Redaktor", "Diskusia s redaktorom", "Wikipédia", "Diskusia k Wikipédii", "Obrázok", "Diskusia k obrázku", "MediaWiki", "Diskusia k MediaWiki", "Šablóna", "Diskusia k šablóne", "Pomoc", "Diskusia k pomoci", "Kategória", "Diskusia ku kategórii"],
"sl": [m, "Posebno", "Pogovor", "Uporabnik", "Uporabniški pogovor", "Wikipedija", "Pogovor k Wikipediji", "Slika", "Pogovor k sliki", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"sq": [m, "Speciale", "Diskutim", "Përdoruesi", "Përdoruesi diskutim", "Wikipedia", "Wikipedia diskutim", "Figura", "Figura diskutim", "MediaWiki", "MediaWiki diskutim", "Stampa", "Stampa diskutim", "Ndihmë", "Ndihmë diskutim", "Category", "Category talk"],
"sr": [m, "Посебно", "Разговор", "Корисник", "Разговор са корисником", "Википедија", "Разговор о Википедији", "Слика", "Разговор о слици", "МедијаВики", "Разговор о МедијаВикију", "Шаблон", "Разговор о шаблону", "Помоћ", "Разговор о помоћи", "Категорија", "Разговор о категорији", "Портал", "Разговор о порталу"],
"sv": [m, "Special", "Diskussion", "Användare", "Användardiskussion", "Wikipedia", "Wikipediadiskussion", "Bild", "Bilddiskussion", "MediaWiki", "MediaWiki diskussion", "Mall", "Malldiskussion", "Hjälp", "Hjälp diskussion", "Kategori", "Kategoridiskussion"],
"ta": ["ஊடகம்", "சிறப்பு", "பேச்சு", "பயனர்", "பயனர் பேச்சு", "Wikipedia", "Wikipedia பேச்சு", "படிமம்", "படிமப் பேச்சு", "மீடியாவிக்கி", "மீடியாவிக்கி பேச்சு", "வார்ப்புரு", "வார்ப்புரு பேச்சு", "உதவி", "உதவி பேச்சு", "பகுப்பு", "பகுப்பு பேச்சு"],
"th": [m, "พิเศษ", "พูดคุย", "ผู้ใช้", "คุยเกี่ยวกับผู้ใช้", "Wikipedia", "Wikipedia talk", "ภาพ", "คุยเกี่ยวกับภาพ", "MediaWiki", "คุยเกี่ยวกับ MediaWiki", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk"],
"tlh": ["Doch", "le'", "ja'chuq", "lo'wI'", "lo'wI' ja'chuq", "wIqIpe'DIya", "wIqIpe'DIya ja'chuq", "nagh beQ", "nagh beQ ja'chuq", "MediaWiki", "MediaWiki ja'chuq", "chen'ay'", "chen'ay' ja'chuq", "QaH", "QaH ja'chuq", "Segh", "Segh ja'chuq"],
"tr": [m, "Özel", "Tartışma", "Kullanıcı", "Kullanıcı mesaj", "Vikipedi", "Vikipedi tartışma", "Resim", "Resim tartışma", "MedyaViki", "MedyaViki tartışma", "Şablon", "Şablon tartışma", "Yardım", "Yardım tartışma", "Kategori", "Kategori tartışma"],
"tt": [m, "Maxsus", "Bäxäs", "Äğzä", "Äğzä bäxäse", "Wikipedia", "Wikipedia bäxäse", "Räsem", "Räsem bäxäse", "MediaWiki", "MediaWiki bäxäse", "Ürnäk", "Ürnäk bäxäse", "Yärdäm", "Yärdäm bäxäse", "Törkem", "Törkem bäxäse"],
"uk": ["Медіа", "Спеціальні", "Обговорення", "Користувач", "Обговорення користувача", "Wikipedia", "Обговорення Wikipedia", "Зображення", "Обговорення зображення", "MediaWiki", "Обговорення MediaWiki", "Шаблон", "Обговорення шаблону", "Довідка", "Обговорення довідки", "Категорія", "Обговорення категорії"],
"vi": ["Phương tiện", "Đặc biệt", "Thảo luận", "Thành viên", "Thảo luận Thành viên", "Wikipedia", "Thảo luận Wikipedia", "Hình", "Thảo luận Hình", "MediaWiki", "Thảo luận MediaWiki", "Tiêu bản", "Thảo luận Tiêu bản", "Trợ giúp", "Thảo luận Trợ giúp", "Thể loại", "Thảo luận Thể loại"],
"wa": [m, "Sipeciås", "Copene", "Uzeu", "Uzeu copene", "Wikipedia", "Wikipedia copene", "Imådje", "Imådje copene", "MediaWiki", "MediaWiki copene", "Modele", "Modele copene", "Aidance", "Aidance copene", "Categoreye", "Categoreye copene"]
//</NOLITE>
};
pg.ns.list = nsLists[pg.wiki.lang] || list;
pg.ns.index = nsIndex;
}
function namespaceListToRegex(list) {return RegExp('^('+list.join('|').split(' ').join('[ _]')+'):');};
// function setNamespaceList is ugly as sin, moved to later in the code
function setNamespaces() {
setNamespaceList();
pg.ns.withTalkList=[null]; // NB root (article) corresponds with this entry, null
pg.ns.talkList=[pg.ns.list[2]];
// if the number of namespaces changes then this will have to be changed
// maybe the easiest way is to specify the arrays by hand as in the comments following the loop
for (var i=3; i+1<pg.ns.list.length; i=i+2) {
pg.ns.withTalkList.push(pg.ns.list[i]);
pg.ns.talkList.push(pg.ns.list[i+1]);
}
// ALERT! SILLY HARDCODED VALUES FOLLOW!
pg.ns.special = pg.ns.list[pg.ns.index.Special];
pg.ns.image = pg.ns.list[pg.ns.index.File];
pg.ns.user = pg.ns.list[pg.ns.index.User];
pg.ns.usertalk = pg.ns.list[pg.ns.index['User talk']];
pg.ns.category = pg.ns.list[pg.ns.index.Category];
pg.ns.template = pg.ns.list[pg.ns.index.Template];
pg.ns.nonArticleList=pg.ns.list.slice(0,2).concat(pg.ns.list.slice(2));
}
function setRedirs() {
var r='redirect';
var R='REDIRECT';
var redirLists={
//<NOLITE>
'ar': [ R, 'تحويل' ],
'be': [ r, 'перанакіраваньне' ],
'bg': [ r, 'пренасочване', 'виж' ],
'bs': [ r, 'Preusmjeri', 'preusmjeri', 'PREUSMJERI' ],
'cs': [ R, 'PŘESMĚRUJ' ],
'cy': [ r, 'ail-cyfeirio' ],
'de': [ R, 'WEITERLEITUNG' ],
'eo': [ R, 'ALIDIREKTU', 'ALIDIREKTI' ],
'et': [ r, 'suuna' ],
'ga': [ r, 'athsheoladh' ],
'gl': [ r, 'REDIRECCIÓN', 'REDIRECIONAMENTO'],
'he': [ R, 'הפניה' ],
'hu': [ R, 'ÁTIRÁNYÍTÁS' ],
'is': [ r, 'tilvísun', 'TILVÍSUN' ],
'it': [ R, 'RINVIA', 'Rinvia'],
'mk': [ r, 'пренасочување', 'види' ],
'nds': [ r, 'wiederleiden' ],
'nl': [ R, 'DOORVERWIJZING' ],
'nn': [ r, 'omdiriger' ],
'pl': [ R, 'PATRZ', 'PRZEKIERUJ', 'TAM' ],
'pt': [ R, 'redir' ],
'ru': [ R, 'ПЕРЕНАПРАВЛЕНИЕ', 'ПЕРЕНАПР' ],
'sk': [ r, 'presmeruj' ],
'sr': [ r, 'Преусмери', 'преусмери', 'ПРЕУСМЕРИ', 'Preusmeri', 'preusmeri', 'PREUSMERI' ],
'tt': [ R, 'yünältü', 'перенаправление', 'перенапр' ],
'vi': [ r, 'đổi' ] // no comma
//</NOLITE>
};
var redirList=redirLists[ pg.wiki.lang ] || [r, R];
// Mediawiki is very tolerant about what comes after the #redirect at the start
pg.re.redirect=RegExp('^\\s*[#](' + redirList.join('|') + ').*?\\[{2}([^\\|\\]]*)(|[^\\]]*)?\\]{2}\\s*(.*)', 'i');
}
function setInterwiki() {
if (pg.wiki.wikimedia) {
pg.wiki.interwiki='aa|ab|af|ak|als|am|an|ang|ar|arc|arz|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|dsb|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|hsb|ht|hu|hy|hz|ia|id|ie|ig|ii|ik|ilo|io|is|it|iu|ja|jbo|jv|ka|kg|ki|kj|kk|kl|km|kn|ko|kr|ks|ksh|ku|kv|kw|ky|la|lad|lan|lb|lg|li|ln|lmo|lo|lt|lu|lv|map-bms|mg|mh|mi|mk|ml|mn|mo|mr|ms|mt|stq|mus|my|na|nah|nap|nb|nd|nds|nds-nl|ne|new|ng|nl|nn|no|nr|nv|ny|oc|oj|om|or|os|pa|pam|pi|pl|pms|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|stq|su|sv|sw|szl|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|zh-yue|zu';
pg.re.interwiki=RegExp('^'+pg.wiki.interwiki+':');
} else {
pg.wiki.interwiki=null;
pg.re.interwiki=RegExp('^$');
}
}
function nsRe(label) {
var l=upcaseFirst(label);
return nsRegexString(pg.ns.list[pg.ns.index[l]], l);
}
function nsReImage() {
var str = pg.ns.list[pg.ns.index["File"]];
return '(?:' + str + '|' + encodeURI(str) + '|' + upcaseFirst(str) + '|Image|' + upcaseFirst('Image') + ')';
}
function nsRegexString(str, extra) {
return '(?:' + str + '|' + encodeURI(str) + (extra ? '|' + extra : '') + ')';
}
function nsRegex(str, extra) {
return RegExp(nsRegexString(str, extra));
}
// ENDFILE: namespaces.js
// STARTFILE: selpop.js
//<NOLITE>
function getEditboxSelection() {
// see http://www.webgurusforum.com/8/12/0
try {
var editbox=document.editform.wpTextbox1;
} catch (dang) { return; }
// IE, Opera
if (document.selection) { return document.selection.createRange().text; }
// Mozilla
var selStart = editbox.selectionStart;
var selEnd = editbox.selectionEnd;
return (editbox.value).substring(selStart, selEnd);
}
function doSelectionPopup() {
// popup if the selection looks like [[foo|anything afterwards at all
// or [[foo|bar]]text without ']]'
// or [[foo|bar]]
var sel=getEditboxSelection();
var open=sel.indexOf('[[');
var pipe=sel.indexOf('|');
var close=sel.indexOf(']]');
if (open == -1 || ( pipe == -1 && close == -1) ) { return; }
if (pipe != -1 && open > pipe || close != -1 && open > close) { return; }
if (getValueOf('popupOnEditSelection')=='boxpreview') {
return doSeparateSelectionPopup(sel);
}
var article=new Title(sel.substring(open+2, (pipe < 0) ? close : pipe)).urlString();
if (close > 0 && sel.substring(close+2).indexOf('[[') >= 0) {
return;
}
var a=document.createElement('a');
a.href=pg.wiki.titlebase + article;
mouseOverWikiLink2(a);
if (a.navpopup) {
a.navpopup.addHook(function(){runStopPopupTimer(a.navpopup);}, 'unhide', 'after');
}
}
function doSeparateSelectionPopup(str) {
var div=document.getElementById('selectionPreview');
if (!div) {
div = document.createElement('div');
div.id='selectionPreview';
try { var box=document.editform.wpTextbox1; }
catch (oopsie) { return; }
box.parentNode.insertBefore(div, box);
}
div.innerHTML=wiki2html(str);
div.ranSetupTooltipsAlready = false;
popTipsSoonFn('selectionPreview')();
}
//</NOLITE>
// ENDFILE: selpop.js
// STARTFILE: navpopup.js
/**
@fileoverview Defines two classes: {@link Navpopup} and {@link Mousetracker}.
<code>Navpopup</code> describes popups: when they appear, where, what
they look like and so on.
<code>Mousetracker</code> "captures" the mouse using
<code>document.onmousemove</code>.
*/
/**
Creates a new Mousetracker.
@constructor
@class The Mousetracker class. This monitors mouse movements and manages associated hooks.
*/
function Mousetracker() {
/**
Interval to regularly run the hooks anyway, in milliseconds.
@type Integer
*/
this.loopDelay=400;
/**
Timer for the loop.
@type Timer
*/
this.timer=null;
/**
Flag - are we switched on?
@type Boolean
*/
this.active=false;
/**
Flag - are we probably inaccurate, i.e. not reflecting the actual mouse position?
*/
this.dirty=true;
/**
Array of hook functions.
@private
@type Array
*/
this.hooks=[];
}
/**
Adds a hook, to be called when we get events.
@param {Function} f A function which is called as
<code>f(x,y)</code>. It should return <code>true</code> when it
wants to be removed, and <code>false</code> otherwise.
*/
Mousetracker.prototype.addHook = function (f) {
this.hooks.push(f);
};
/**
Runs hooks, passing them the x
and y coords of the mouse. Hook functions that return true are
passed to {@link Mousetracker#removeHooks} for removal.
@private
*/
Mousetracker.prototype.runHooks = function () {
if (!this.hooks || !this.hooks.length) { return; }
//log('Mousetracker.runHooks; we got some hooks to run');
var remove=false;
var removeObj={};
// this method gets called a LOT -
// pre-cache some variables
var x=this.x, y=this.y, len = this.hooks.length;
for (var i=0; i<len; ++i) {
//~ run the hook function, and remove it if it returns true
if (this.hooks[i](x, y)===true) {
remove=true;
removeObj[i]=true;
}
}
if (remove) { this.removeHooks(removeObj); }
};
/**
Removes hooks.
@private
@param {Object} removeObj An object whose keys are the index
numbers of functions for removal, with values that evaluate to true
*/
Mousetracker.prototype.removeHooks = function(removeObj) {
var newHooks=[];
var len = this.hooks.length;
for (var i=0; i<len; ++i) {
if (! removeObj[i]) { newHooks.push(this.hooks[i]); }
}
this.hooks=newHooks;
};
/**
Event handler for mouse wiggles.
We simply grab the event, set x and y and run the hooks.
This makes the cpu all hot and bothered :-(
@private
@param {Event} e Mousemove event
*/
Mousetracker.prototype.track=function (e) {
//~ Apparently this is needed in IE.
e = e || window.event;
var x, y;
if (e) {
if (e.pageX) { x=e.pageX; y=e.pageY; }
else if (typeof e.clientX!='undefined') {
var left, top, docElt = window.document.documentElement;
if (docElt) { left=docElt.scrollLeft; }
left = left || window.document.body.scrollLeft || window.document.scrollLeft || 0;
if (docElt) { top=docElt.scrollTop; }
top = top || window.document.body.scrollTop || window.document.scrollTop || 0;
x=e.clientX + left;
y=e.clientY + top;
} else { return; }
this.setPosition(x,y);
}
};
/**
Sets the x and y coordinates stored and takes appropriate action,
running hooks as appropriate.
@param {Integer} x, y Screen coordinates to set
*/
Mousetracker.prototype.setPosition=function(x,y) {
this.x = x;
this.y = y;
if (this.dirty || this.hooks.length === 0) { this.dirty=false; return; }
if (typeof this.lastHook_x != 'number') { this.lastHook_x = -100; this.lastHook_y=-100; }
var diff = (this.lastHook_x - x)*(this.lastHook_y - y);
diff = (diff >= 0) ? diff : -diff;
if ( diff > 1 ) {
this.lastHook_x=x;
this.lastHook_y=y;
if (this.dirty) { this.dirty = false; }
else { this.runHooks(); }
}
}
/**
Sets things in motion, unless they are already that is, registering an event handler on <code>document.onmousemove</code>.
A half-hearted attempt is made to preserve the old event handler if there is one.
*/
Mousetracker.prototype.enable = function () {
if (this.active) { return; }
this.active=true;
//~ Save the current handler for mousemove events. This isn't too
//~ robust, of course.
this.savedHandler=document.onmousemove;
//~ Gotta save @tt{this} again for the closure, and use apply for
//~ the member function.
var savedThis=this;
document.onmousemove=function (e) {savedThis.track.apply(savedThis, [e]);};
if (this.loopDelay) { this.timer = setInterval(function() { //log('loop delay in mousetracker is working');
savedThis.runHooks();}, this.loopDelay); }
};
/**
Disables the tracker, removing the event handler.
*/
Mousetracker.prototype.disable = function () {
if (!this.active) { return; }
if (typeof this.savedHandler=='function') {
document.onmousemove=this.savedHandler;
} else { delete document.onmousemove; }
if (this.timer) { clearInterval(this.timer); }
this.active=false;
};
/**
Creates a new Navpopup.
Gets a UID for the popup and
@param init Contructor object. If <code>init.draggable</code> is true or absent, the popup becomes draggable.
@constructor
@class The Navpopup class. This generates popup hints, and does some management of them.
*/
function Navpopup(init) {
//alert('new Navpopup(init)');
/** UID for each Navpopup instance.
Read-only.
@type integer
*/
this.uid=Navpopup.uid++;
/**
Read-only flag for current visibility of the popup.
@type boolean
@private
*/
this.visible=false;
/** Flag to be set when we want to cancel a previous request to
show the popup in a little while.
@private
@type boolean
*/
this.noshow=false;
/** Categorised list of hooks.
@see #runHooks
@see #addHook
@private
@type Object
*/
this.hooks={
'create': [],
'unhide': [],
'hide': []
};
/** list of unique IDs of hook functions, to avoid duplicates
@private
*/
this.hookIds={};
/** List of downloads associated with the popup.
@private
@type Array
*/
this.downloads=[];
/** Number of uncompleted downloads.
@type integer
*/
this.pending=null;
/** Tolerance in pixels when detecting whether the mouse has left the popup.
@type integer
*/
this.fuzz=5;
/** Flag to toggle running {@link #limitHorizontalPosition} to regulate the popup's position.
@type boolean
*/
this.constrained=true;
/** The popup width in pixels.
@private
@type integer
*/
this.width=0;
/** The popup width in pixels.
@private
@type integer
*/
this.height=0;
/** The main content DIV element.
@type HTMLDivElement
*/
this.mainDiv=null;
this.createMainDiv();
// if (!init || typeof init.popups_draggable=='undefined' || init.popups_draggable) {
// this.makeDraggable(true);
// }
}
/**
A UID for each Navpopup. This constructor property is just a counter.
@type integer
@private
*/
Navpopup.uid=0;
/**
Retrieves the {@link #visible} attribute, indicating whether the popup is currently visible.
@type boolean
*/
Navpopup.prototype.isVisible=function() {
return this.visible;
};
/**
Repositions popup using CSS style.
@private
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@param {boolean} noLimitHor Don't call {@link #limitHorizontalPosition}
*/
Navpopup.prototype.reposition= function (x,y, noLimitHor) {
log ('reposition('+x+','+y+','+noLimitHor+')');
if (typeof x != 'undefined' && x!==null) { this.left=x; }
if (typeof y != 'undefined' && y!==null) { this.top=y; }
if (typeof this.left != 'undefined' && typeof this.top != 'undefined') {
this.mainDiv.style.left=this.left + 'px';
this.mainDiv.style.top=this.top + 'px';
}
if (!noLimitHor) { this.limitHorizontalPosition(); }
//console.log('navpop'+this.uid+' - (left,top)=(' + this.left + ',' + this.top + '), css=('
//+ this.mainDiv.style.left + ',' + this.mainDiv.style.top + ')');
};
/**
Prevents popups from being in silly locations. Hopefully.
Should not be run if {@link #constrained} is true.
@private
*/
Navpopup.prototype.limitHorizontalPosition=function() {
if (!this.constrained || this.tooWide) { return; }
this.updateDimensions();
var x=this.left;
var w=this.width;
var cWidth=document.body.clientWidth;
// log('limitHorizontalPosition: x='+x+
// ', this.left=' + this.left +
// ', this.width=' + this.width +
// ', cWidth=' + cWidth);
if ( (x+w) >= cWidth ||
( x > 0 && this.maxWidth && this.width < this.maxWidth && this.height > this.width
&& x > cWidth - this.maxWidth ) ) {
// This is a very nasty hack. There has to be a better way!
// We find the "natural" width of the div by positioning it at the far left
// then reset it so that it should be flush right (well, nearly)
this.mainDiv.style.left='-10000px';
this.mainDiv.style.width = this.maxWidth + 'px';
var naturalWidth=parseInt(this.mainDiv.offsetWidth, 10);
var newLeft=cWidth - naturalWidth - 1;
if (newLeft < 0) { newLeft = 0; this.tooWide=true; } // still unstable for really wide popups?
log ('limitHorizontalPosition: moving to ('+newLeft + ','+ this.top+');' + ' naturalWidth=' + naturalWidth + ', clientWidth=' + cWidth);
this.reposition(newLeft, null, true);
}
};
/**
Counter indicating the z-order of the "highest" popup.
We start the z-index at 1000 so that popups are above everything
else on the screen.
@private
@type integer
*/
Navpopup.highest=1000;
/**
Brings popup to the top of the z-order.
We increment the {@link #highest} property of the contructor here.
@private
*/
Navpopup.prototype.raise = function () {
this.mainDiv.style.zIndex=Navpopup.highest + 1;
++Navpopup.highest;
};
/**
Shows the popup provided {@link #noshow} is not true.
Updates the position, brings the popup to the top of the z-order and unhides it.
*/
Navpopup.prototype.show = function () {
//document.title+='s';
if (this.noshow) { return; }
//document.title+='t';
this.reposition();
this.raise();
this.unhide();
};
/**
Runs the {@link #show} method in a little while, unless we're
already visible.
@param {integer} time Delay in milliseconds
@see #showSoonIfStable
*/
Navpopup.prototype.showSoon = function (time) {
if (this.visible) { return; }
this.noshow=false;
//~ We have to save the value of @tt{this} so that the closure below
//~ works.
var savedThis=this;
//this.start_x = Navpopup.tracker.x;
//this.start_y = Navpopup.tracker.y;
setTimeout(function () {
if (Navpopup.tracker.active) {
savedThis.reposition.apply(savedThis, [Navpopup.tracker.x + 2, Navpopup.tracker.y + 2]);
}
//~ Have to use apply to invoke his member function here
savedThis.show.apply(savedThis, []);
}, time);
};
/**
Checks to see if the mouse pointer has
stabilised (checking every <code>time</code>/2 milliseconds) and runs the
{@link #show} method if it has. This method makes {@link #showSoon} redundant.
@param {integer} time The minimum time (ms) before the popup may be shown.
*/
Navpopup.prototype.showSoonIfStable = function (time) {
log ('showSoonIfStable, time='+time);
if (this.visible) { return; }
this.noshow = false;
//~ initialize these variables so that we never run @tt{show} after
//~ just half the time
this.stable_x = -10000; this.stable_y = -10000;
var stableShow = function() {
log('stableShow called');
var new_x = Navpopup.tracker.x, new_y = Navpopup.tracker.y;
var dx = savedThis.stable_x - new_x, dy = savedThis.stable_y - new_y;
var fuzz2 = 0; // savedThis.fuzz * savedThis.fuzz;
//document.title += '[' + [savedThis.stable_x,new_x, savedThis.stable_y,new_y, dx, dy, fuzz2].join(',') + '] ';
if ( dx * dx <= fuzz2 && dy * dy <= fuzz2 ) {
log ('mouse is stable');
clearInterval(savedThis.showSoonStableTimer);
savedThis.reposition.apply(savedThis, [new_x + 2, new_y + 2]);
savedThis.show.apply(savedThis, []);
return;
}
savedThis.stable_x = new_x; savedThis.stable_y = new_y;
};
var savedThis = this;
this.showSoonStableTimer = setInterval(stableShow, time/2);
};
/**
Makes the popup unhidable until we call {@link #unstick}.
*/
Navpopup.prototype.stick=function() {
this.noshow=false;
this.sticky=true;
};
/**
Allows the popup to be hidden.
*/
Navpopup.prototype.unstick=function() {
this.sticky=false;
};
/**
Sets the {@link #noshow} flag and hides the popup. This should be called
when the mouse leaves the link before
(or after) it's actually been displayed.
*/
Navpopup.prototype.banish = function () {
log ('banish called');
// hide and prevent showing with showSoon in the future
this.noshow=true;
if (this.showSoonStableTimer) {
log('clearing showSoonStableTimer');
clearInterval(this.showSoonStableTimer);
}
this.hide();
};
/**
Runs hooks added with {@link #addHook}.
@private
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
*/
Navpopup.prototype.runHooks = function (key, when) {
if (!this.hooks[key]) { return; }
var keyHooks=this.hooks[key];
var len=keyHooks.length;
for (var i=0; i< len; ++i) {
if (keyHooks[i] && keyHooks[i].when == when) {
if (keyHooks[i].hook.apply(this, [])) {
// remove the hook
if (keyHooks[i].hookId) {
delete this.hookIds[keyHooks[i].hookId];
}
keyHooks[i]=null;
}
}
}
};
/**
Adds a hook to the popup. Hook functions are run with <code>this</code> set to refer to the Navpopup instance, and no arguments.
@param {Function} hook The hook function. Functions that return true are deleted.
@param {String} key Key name of the {@link #hooks} array - one of 'create', 'unhide', 'hide'
@param {String} when Controls exactly when the hook is run: either 'before' or 'after'
@param {String} uid A truthy string identifying the hook function; if it matches another hook in this position, it won't be added again.
*/
Navpopup.prototype.addHook = function ( hook, key, when, uid ) {
when = when || 'after';
if (!this.hooks[key]) { return; }
// if uid is specified, don't add duplicates
var hookId=null;
if (uid) {
hookId=[key,when,uid].join('|');
if (this.hookIds[hookId]) {
return;
}
this.hookIds[hookId]=true;
}
this.hooks[key].push( {hook: hook, when: when, hookId: hookId} );
};
/**
Creates the main DIV element, which contains all the actual popup content.
Runs hooks with key 'create'.
@private
*/
Navpopup.prototype.createMainDiv = function () {
if (this.mainDiv) { return; }
this.runHooks('create', 'before');
var mainDiv=document.createElement('div');
var savedThis=this;
mainDiv.onclick=function(e) {savedThis.onclickHandler(e);};
mainDiv.className=(this.className) ? this.className : 'navpopup_maindiv';
mainDiv.id=mainDiv.className + this.uid;
mainDiv.style.position='absolute';
mainDiv.style.display='none';
mainDiv.className='navpopup';
// easy access to javascript object through DOM functions
mainDiv.navpopup=this;
this.mainDiv=mainDiv;
document.body.appendChild(mainDiv);
this.runHooks('create', 'after');
};
/**
Calls the {@link #raise} method.
@private
*/
Navpopup.prototype.onclickHandler=function(e) {
this.raise();
};
/**
Makes the popup draggable, using a {@link Drag} object.
@private
*/
Navpopup.prototype.makeDraggable=function(handleName) {
if (!this.mainDiv) { this.createMainDiv(); }
var drag=new Drag();
if (!handleName) {
drag.startCondition=function(e) {
try { if (!e.shiftKey) { return false; } } catch (err) { return false; }
return true;
};
}
var dragHandle = document.getElementById(handleName) || this.mainDiv;
var np=this;
drag.endHook=function(x,y) {
Navpopup.tracker.dirty=true;
np.reposition(x,y);
};
drag.init(dragHandle,this.mainDiv);
};
/** Hides the popup using CSS. Runs hooks with key 'hide'.
Sets {@link #visible} appropriately. {@link #banish} should be called externally instead of this method.
@private
*/
Navpopup.prototype.hide = function () {
this.runHooks('hide', 'before');
this.abortDownloads();
if (this.sticky) { return; }
if (typeof this.visible != 'undefined' && this.visible) {
this.mainDiv.style.display='none';
this.visible=false;
}
this.runHooks('hide', 'after');
};
/** Shows the popup using CSS. Runs hooks with key 'unhide'.
Sets {@link #visible} appropriately. {@link #show} should be called externally instead of this method.
@private
*/
Navpopup.prototype.unhide = function () {
this.runHooks('unhide', 'before');
if (typeof this.visible != 'undefined' && !this.visible) {
this.mainDiv.style.display='inline';
this.visible=true;
}
this.runHooks('unhide', 'after');
};
/**
Sets the <code>innerHTML</code> attribute of the main div containing the popup content.
@param {String} html The HTML to set.
*/
Navpopup.prototype.setInnerHTML = function (html) {
this.mainDiv.innerHTML = html;
};
/**
Updates the {@link #width} and {@link #height} attributes with the CSS properties.
@private
*/
Navpopup.prototype.updateDimensions = function () {
this.width=parseInt(this.mainDiv.offsetWidth, 10);
this.height=parseInt(this.mainDiv.offsetHeight, 10);
};
/**
Checks if the point (x,y) is within {@link #fuzz} of the
{@link #mainDiv}.
@param {integer} x x-coordinate (px)
@param {integer} y y-coordinate (px)
@type boolean
*/
Navpopup.prototype.isWithin = function(x,y) {
//~ If we're not even visible, no point should be considered as
//~ being within the popup.
if (!this.visible) { return false; }
this.updateDimensions();
var fuzz=this.fuzz || 0;
//~ Use a simple box metric here.
return (x+fuzz >= this.left && x-fuzz <= this.left + this.width &&
y+fuzz >= this.top && y-fuzz <= this.top + this.height);
};
/**
Adds a download to {@link #downloads}.
@param {Downloader} download
*/
Navpopup.prototype.addDownload=function(download) {
if (!download) { return; }
this.downloads.push(download);
};
/**
Aborts the downloads listed in {@link #downloads}.
@see Downloader#abort
*/
Navpopup.prototype.abortDownloads=function() {
for(var i=0; i<this.downloads.length; ++i) {
var d=this.downloads[i];
if (d && d.abort) { d.abort(); }
}
this.downloads=[];
};
/**
A {@link Mousetracker} instance which is a property of the constructor (pseudo-global).
*/
Navpopup.tracker=new Mousetracker();
// ENDFILE: navpopup.js
// STARTFILE: diff.js
//<NOLITE>
/*
* Javascript Diff Algorithm
* By John Resig (http://ejohn.org/) and [[:en:User:Lupin]]
*
* More Info:
* http://ejohn.org/projects/javascript-diff-algorithm/
*/
function delFmt(x) {
if (!x.length) { return ''; }
return "<del class='popupDiff'>" + x.join('') +"</del>";
}
function insFmt(x) {
if (!x.length) { return ''; }
return "<ins class='popupDiff'>" + x.join('') +"</ins>";
}
function countCrossings(a, b, i, eject) {
// count the crossings on the edge starting at b[i]
if (!b[i].row && b[i].row !== 0) { return -1; }
var count=0;
for (var j=0; j<a.length; ++j) {
if (!a[j].row && a[j].row !== 0) { continue; }
if ( (j-b[i].row)*(i-a[j].row) > 0) {
if(eject) { return true; }
count++;
}
}
return count;
}
function shortenDiffString(str, context) {
var re=RegExp('(<del[\\s\\S]*?</del>|<ins[\\s\\S]*?</ins>)');
var splitted=str.parenSplit(re);
var ret=[''];
for (var i=0; i<splitted.length; i+=2) {
if (splitted[i].length < 2*context) {
ret[ret.length-1] += splitted[i];
if (i+1<splitted.length) { ret[ret.length-1] += splitted[i+1]; }
continue;
}
else {
if (i > 0) { ret[ret.length-1] += splitted[i].substring(0,context); }
if (i+1 < splitted.length) {
ret.push(splitted[i].substring(splitted[i].length-context) +
splitted[i+1]);
}
}
}
while (ret.length > 0 && !ret[0]) { ret = ret.slice(1); }
return ret;
}
function diffString( o, n, simpleSplit ) {
var splitRe=RegExp('([[]{2}|[\]]{2}|[{]{2,3}|[}]{2,3}|[|]|=|[*:]+|\\s|\\b)');
o=o.entify(); n=n.entify();
var out, i;
if (simpleSplit) { out = diff( o.split(/\b/), n.split(/\b/) ); }
else { out = diff( o.parenSplit(splitRe), n.parenSplit(splitRe) ); }
var str = "";
var acc=[]; // accumulator for prettier output
// crossing pairings -- eg 'A B' vs 'B A' -- cause problems, so let's iron them out
// this doesn't always do things optimally but it should be fast enough
var maxOutputPair=0;
for (i=0; i<out.n.length; ++i) {
if ( out.n[i].paired ) {
if( maxOutputPair > out.n[i].row ) {
// tangle - delete pairing
out.o[ out.n[i].row ]=out.o[ out.n[i].row ].text;
out.n[i]=out.n[i].text;
}
if (maxOutputPair < out.n[i].row) { maxOutputPair = out.n[i].row; }
}
}
// output the stuff preceding the first paired old line
for (i=0; i<out.o.length && !out.o[i].paired; ++i) { acc.push( out.o[i] ); }
str += delFmt(acc); acc=[];
// main loop
for ( i = 0; i < out.n.length; ++i ) {
// output unpaired new "lines"
while ( i < out.n.length && !out.n[i].paired ) { acc.push( out.n[i++] ); }
str += insFmt(acc); acc=[];
if ( i < out.n.length ) { // this new "line" is paired with the (out.n[i].row)th old "line"
str += out.n[i].text;
// output unpaired old rows starting after this new line's partner
var m = out.n[i].row + 1;
while ( m < out.o.length && !out.o[m].paired ) { acc.push ( out.o[m++] ); }
str += delFmt(acc); acc=[];
}
}
return str;
}
// see http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object
// FIXME: use obj.hasOwnProperty instead of this kludge!
window.jsReservedProperties=RegExp('^(constructor|prototype|__((define|lookup)[GS]etter)__' +
'|eval|hasOwnProperty|propertyIsEnumerable' +
'|to(Source|String|LocaleString)|(un)?watch|valueOf)$');
function diffBugAlert(word) {
if (!diffBugAlert.list[word]) {
diffBugAlert.list[word]=1;
alert('Bad word: '+word+'\n\nPlease report this bug.');
}
}
diffBugAlert.list={};
function makeDiffHashtable(src) {
var ret={};
for ( var i = 0; i < src.length; i++ ) {
if ( jsReservedProperties.test(src[i]) ) { src[i] += '<!-- -->'; }
if ( !ret[ src[i] ] ) { ret[ src[i] ] = []; }
try { ret[ src[i] ].push( i ); } catch (err) { diffBugAlert(src[i]); }
}
return ret;
}
function diff( o, n ) {
// pass 1: make hashtable ns with new rows as keys
var ns = makeDiffHashtable(n);
// pass 2: make hashtable os with old rows as keys
var os = makeDiffHashtable(o);
// pass 3: pair unique new rows and matching unique old rows
var i;
for ( i in ns ) {
if ( ns[i].length == 1 && os[i] && os[i].length == 1 ) {
n[ ns[i][0] ] = { text: n[ ns[i][0] ], row: os[i][0], paired: true };
o[ os[i][0] ] = { text: o[ os[i][0] ], row: ns[i][0], paired: true };
}
}
// pass 4: pair matching rows immediately following paired rows (not necessarily unique)
for ( i = 0; i < n.length - 1; i++ ) {
if ( n[i].paired && ! n[i+1].paired && n[i].row + 1 < o.length && ! o[ n[i].row + 1 ].paired &&
n[i+1] == o[ n[i].row + 1 ] ) {
n[i+1] = { text: n[i+1], row: n[i].row + 1, paired: true };
o[n[i].row+1] = { text: o[n[i].row+1], row: i + 1, paired: true };
}
}
// pass 5: pair matching rows immediately preceding paired rows (not necessarily unique)
for ( i = n.length - 1; i > 0; i-- ) {
if ( n[i].paired && ! n[i-1].paired && n[i].row > 0 && ! o[ n[i].row - 1 ].paired &&
n[i-1] == o[ n[i].row - 1 ] ) {
n[i-1] = { text: n[i-1], row: n[i].row - 1, paired: true };
o[n[i].row-1] = { text: o[n[i].row-1], row: i - 1, paired: true };
}
}
return { o: o, n: n };
}
//</NOLITE>
// ENDFILE: diff.js
// STARTFILE: init.js
function setSiteInfo() {
if (window.popupLocalDebug) {
pg.wiki.hostname = 'en.wikipedia.org';
} else {
pg.wiki.hostname = location.hostname; // use in preference to location.hostname for flexibility (?)
}
pg.wiki.wikimedia=RegExp('(wiki([pm]edia|source|books|news|quote|versity)|wiktionary|mediawiki)[.]org').test(pg.wiki.hostname);
pg.wiki.wikia=RegExp('[.]wikia[.]com$', 'i').test(pg.wiki.hostname);
pg.wiki.isLocal=RegExp('^localhost').test(pg.wiki.hostname);
pg.wiki.commons=( pg.wiki.wikimedia && pg.wiki.hostname != 'commons.wikimedia.org') ? 'commons.wikimedia.org' : null;
pg.wiki.lang = wgContentLanguage;
var port = location.port ? ':' + location.port : '';
pg.wiki.sitebase = pg.wiki.hostname + port;
}
function setTitleBase() {
var protocol = ( window.popupLocalDebug ? 'http:' : location.protocol );
pg.wiki.articlePath = wgArticlePath.replace(/\/\$1/, ""); // as in http://some.thing.com/wiki/Article
pg.wiki.botInterfacePath = wgScript;
pg.wiki.APIPath = wgScriptPath +"/api.php";
// default mediawiki setting is paths like http://some.thing.com/articlePath/index.php?title=foo
var titletail = pg.wiki.botInterfacePath + '?title=';
//var titletail2 = joinPath([pg.wiki.botInterfacePath, 'wiki.phtml?title=']);
// other sites may need to add code here to set titletail depending on how their urls work
pg.wiki.titlebase = protocol + '//' + pg.wiki.sitebase + titletail;
//pg.wiki.titlebase2 = protocol + '//' + joinPath([pg.wiki.sitebase, titletail2]);
pg.wiki.wikibase = protocol + '//' + pg.wiki.sitebase + pg.wiki.botInterfacePath;
pg.wiki.apiwikibase = protocol + '//' + pg.wiki.sitebase + pg.wiki.APIPath;
pg.wiki.articlebase = protocol + '//' + pg.wiki.sitebase + pg.wiki.articlePath;
pg.wiki.commonsbase = protocol + '//' + pg.wiki.commons + pg.wiki.botInterfacePath;
pg.wiki.apicommonsbase = protocol + '//' + pg.wiki.commons + pg.wiki.APIPath;
pg.re.basenames = RegExp( '^(' +
map( literalizeRegex, [ pg.wiki.titlebase, //pg.wiki.titlebase2,
pg.wiki.articlebase ]).join('|') + ')' );
}
//////////////////////////////////////////////////
// Global regexps
function setMainRegex() {
var reStart='[^:]*://';
var preTitles = literalizeRegex(wgScriptPath) + '/(?:index[.]php|wiki[.]phtml)[?]title=';
// slightly ugly hack when pg.wiki.articlePath is empty
preTitles += '|' + literalizeRegex( ( pg.wiki.articlePath ? pg.wiki.articlePath + '/': ''));
var reEnd='(' + preTitles + ')([^&?#]*)[^#]*(?:#(.+))?';
pg.re.main = RegExp(reStart + literalizeRegex(pg.wiki.sitebase) + reEnd);
}
function setRegexps() {
setMainRegex();
var sp=nsRe('Special');
pg.re.urlNoPopup=RegExp('((title=|/)' + sp + '(?:%3A|:)|section=[0-9])') ;
pg.re.contribs =RegExp('(title=|/)' + sp + '(?:%3A|:)Contributions' + '(&target=|/|/' + pg.ns.user+':)(.*)') ;
pg.re.email =RegExp('(title=|/)' + sp + '(?:%3A|:)Emailuser' + '(&target=|/|/(?:' + pg.ns.user+':)?)(.*)') ;
pg.re.backlinks =RegExp('(title=|/)' + sp + '(?:%3A|:)Whatlinkshere' + '(&target=|/)([^&]*)');
//<NOLITE>
var im=nsReImage();
// note: tries to get images in infobox templates too, e.g. movie pages, album pages etc
// (^|\[\[)image: *([^|\]]*[^|\] ]) *
// (^|\[\[)image: *([^|\]]*[^|\] ])([^0-9\]]*([0-9]+) *px)?
// $4 = 120 as in 120px
pg.re.image = RegExp('(^|\\[\\[)' + im + ': *([^|\\]]*[^|\\] ])' +
'([^0-9\\]]*([0-9]+) *px)?|(?:\\n *[|]?|[|]) *' +
'(' + getValueOf('popupImageVarsRegexp') + ')' +
' *= *(?:\\[\\[ *)?(?:' + im + ':)?' +
'([^|]*?)(?:\\]\\])? *[|]? *\\n', 'img') ;
pg.re.imageBracketCount = 6;
pg.re.category = RegExp('\\[\\[' +nsRe('Category') +
': *([^|\\]]*[^|\\] ]) *', 'i');
pg.re.categoryBracketCount = 1;
pg.re.ipUser=RegExp('('+nsRe('User')+':)?' +
'((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}' +
'(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])');
pg.re.stub= RegExp(getValueOf('popupStubRegexp'), 'im');
pg.re.disambig=RegExp(getValueOf('popupDabRegexp'), 'im');
//</NOLITE>
// FIXME replace with general parameter parsing function, this is daft
pg.re.oldid=RegExp('[?&]oldid=([^&]*)');
pg.re.diff=RegExp('[?&]diff=([^&]*)');
}
//////////////////////////////////////////////////
// miscellany
function setupCache() {
// page caching
pg.cache.pages = [];
}
function setMisc() {
pg.current.link=null;
pg.current.links=[];
pg.current.linksHash={};
setupCache();
pg.timer.checkPopupPosition=null;
pg.counter.loop=0;
// ids change with each popup: popupImage0, popupImage1 etc
pg.idNumber=0;
// for myDecodeURI
pg.misc.decodeExtras = [
{from: '%2C', to: ',' },
{from: '_', to: ' ' },
{from: '%24', to: '$'},
{from: '%26', to: '&' } // no ,
];
}
function leadingInteger(s){
var n=s.match(/^(\d*)/)[1];
if (n) { return +n; }
return null;
}
function setBrowserHacks() {
var useOriginal=false;
// browser-specific hacks
if (typeof window.opera != 'undefined') {
//if (leadingInteger(opera.version()) < 9)
{ useOriginal=true; } // v9 beta still seems to have buggy css
setDefault('popupNavLinkSeparator', ' · ');
} else if (navigator.appName=='Konqueror') {
setDefault('popupNavLinkSeparator', ' • ');
pg.flag.isKonq=true;
} else if ( navigator.vendor && navigator.vendor.toLowerCase().indexOf('apple computer')===0) {
pg.flag.isSafari=true;
var webkit=+navigator.userAgent.replace(RegExp('^.*AppleWebKit[/](\\d+).*', 'i'), '$1');
if (webkit < 420) { useOriginal=true; }
} else if (navigator.appName.indexOf("Microsoft")!=-1) {
setDefault('popupNavLinkSeparator', ' · ');
useOriginal=true;
var ver=+navigator.userAgent.replace(RegExp('^.*MSIE (\\d+).*'), '$1');
pg.flag.isIE=true;
pg.flag.IEVersion=ver;
}
if ((pg.flag.isIE && pg.flag.IEVersion < 7) || pg.flag.isKonq || (pg.flag.isSafari && webkit < 420)) {
pg.flag.linksLikeIE6=true;
}
if (useOriginal && pg.structures.original) {
setDefault('popupStructure','original');
}
}
function setupPopups() {
// NB translatable strings should be set up first (strings.js)
// basics
setupDebugging();
setSiteInfo();
setTitleBase();
setOptions(); // see options.js
// namespaces etc
setNamespaces();
setInterwiki();
// regexps
setRegexps();
setRedirs();
// other stuff
setBrowserHacks();
setMisc();
setupLivePreview();
// main deal here
setupTooltips();
Navpopup.tracker.enable();
setupPopups.completed = true;
}
// ENDFILE: init.js
// STARTFILE: navlinks.js
//<NOLITE>
//////////////////////////////////////////////////
// navlinks... let the fun begin
//
function defaultNavlinkSpec() {
var str='';
str += '<b><<mainlink|shortcut= >></b>';
if (getValueOf('popupLastEditLink')) {
str += '*<<lastEdit|shortcut=/>>|<<lastContrib>>|<<sinceMe>>if(oldid){|<<oldEdit>>|<<diffCur>>}';
}
// user links
// contribs - log - count - email - block
// count only if applicable; block only if popupAdminLinks
str += 'if(user){<br><<contribs|shortcut=c>>*<<userlog|shortcut=L|log>>';
str+='if(ipuser){*<<arin>>}if(wikimedia){*<<count|shortcut=#>>}';
str+='if(ipuser){}else{*<<email|shortcut=E>>}if(admin){*<<block|shortcut=b>>|<<blocklog|log>>}}';
// editing links
// talkpage -> edit|new - history - un|watch - article|edit
// other page -> edit - history - un|watch - talk|edit|new
var editstr='<<edit|shortcut=e>>';
var editOldidStr='if(oldid){<<editOld|shortcut=e>>|<<revert|shortcut=v|rv>>|<<edit|cur>>}else{' + editstr + '}'
var historystr='<<history|shortcut=h>>if(mainspace_en){|<<editors|shortcut=E|>>}';
var watchstr='<<unwatch|unwatchShort>>|<<watch|shortcut=w|watchThingy>>';
str+='<br>if(talk){' +
editOldidStr+'|<<new|shortcut=+>>' + '*' + historystr+'*'+watchstr + '*' +
'<b><<article|shortcut=a>></b>|<<editArticle|edit>>' +
'}else{' + // not a talk page
editOldidStr + '*' + historystr + '*' + watchstr + '*' +
'<b><<talk|shortcut=t>></b>|<<editTalk|edit>>|<<newTalk|shortcut=+|new>>'
+ '}';
// misc links
str += '<br><<whatLinksHere|shortcut=l>>*<<relatedChanges|shortcut=r>>*<<move|shortcut=m>>';
// admin links
str += 'if(admin){<br><<unprotect|unprotectShort>>|<<protect|shortcut=p>>|<<protectlog|log>>*' +
'<<undelete|undeleteShort>>|<<delete|shortcut=d>>|<<deletelog|log>>}';
return str;
}
function navLinksHTML (article, hint, params) { //oldid, rcid) {
var str = '<span class="popupNavLinks">' + defaultNavlinkSpec() + '</span>';
// BAM
return navlinkStringToHTML(str, article, params);
}
function expandConditionalNavlinkString(s,article,z,recursionCount) {
var oldid=z.oldid, rcid=z.rcid, diff=z.diff;
// nested conditionals (up to 10 deep) are ok, hopefully! (work from the inside out)
if (typeof recursionCount!=typeof 0) { recursionCount=0; }
var conditionalSplitRegex=RegExp(
//(1 if \\( (2 2) \\) {(3 3)} (4 else {(5 5)} 4)1)
'(;?\\s*if\\s*\\(\\s*([\\w]*)\\s*\\)\\s*\\{([^{}]*)\\}(\\s*else\\s*\\{([^{}]*?)\\}|))', 'i');
var splitted=s.parenSplit(conditionalSplitRegex);
// $1: whole conditional
// $2: test condition
// $3: true expansion
// $4: else clause (possibly empty)
// $5: false expansion (possibly null)
var numParens=5;
var ret = splitted[0];
for (var i=1; i<splitted.length; i=i+numParens+1) {
var testString=splitted[i+2-1];
var trueString=splitted[i+3-1];
var falseString=splitted[i+5-1];
if (typeof falseString=='undefined' || !falseString) { falseString=''; }
var testResult=null;
switch (testString) {
case 'user':
testResult=(article.userName())?true:false;
break;
case 'talk':
testResult=(article.talkPage())?false:true; // talkPage converts _articles_ to talkPages
break;
case 'admin':
testResult=getValueOf('popupAdminLinks')?true:false;
break;
case 'oldid':
testResult=(typeof oldid != 'undefined' && oldid)?true:false;
break;
case 'rcid':
testResult=(typeof rcid != 'undefined' && rcid)?true:false;
break;
case 'ipuser':
testResult=(article.isIpUser())?true:false;
break;
case 'mainspace_en':
testResult=isInMainNamespace(article) &&
pg.wiki.hostname=='en.wikipedia.org';
break;
case 'wikimedia':
testResult=(pg.wiki.wikimedia) ? true : false;
break;
case 'diff':
testResult=(typeof diff != 'undefined' && diff)?true:false;
break;
}
switch(testResult) {
case null: ret+=splitted[i]; break;
case true: ret+=trueString; break;
case false: ret+=falseString; break;
}
// append non-conditional string
ret += splitted[i+numParens];
}
if (conditionalSplitRegex.test(ret) && recursionCount < 10) {
return expandConditionalNavlinkString(ret,article,z,recursionCount+1);
}
return ret;
}
function navlinkStringToArray(s, article, params) {
s=expandConditionalNavlinkString(s,article,params);
var splitted=s.parenSplit(RegExp('<<(.*?)>>'));
var ret=[];
for (var i=0; i<splitted.length; ++i) {
if (i%2) { // i odd, so s is a tag
var t=new navlinkTag();
var ss=splitted[i].split('|');
t.id=ss[0];
for (var j=1; j<ss.length; ++j) {
var sss=ss[j].split('=');
if (sss.length>1) {
t[sss[0]]=sss[1];
}
else { // no assignment (no "="), so treat this as a title (overwriting the last one)
t.text=popupString(sss[0]);
}
}
t.article=article;
var oldid=params.oldid, rcid=params.rcid, diff=params.diff;
if (typeof oldid != 'undefined' && oldid != null) { t.oldid=oldid; }
if (typeof rcid != 'undefined' && rcid != null) { t.rcid=rcid; }
if (typeof diff != 'undefined' && diff != null) { t.diff=diff; }
if (!t.text && t.id != 'mainlink') { t.text=popupString(t.id); }
ret.push(t);
}
else { // plain HTML
ret.push(splitted[i]);
}
}
return ret;
}
function navlinkSubstituteHTML(s) {
return s.split('*').join(getValueOf('popupNavLinkSeparator'))
.split('<menurow>').join('<li class="popup_menu_row">')
.split('</menurow>').join('</li>')
.split('<menu>').join('<ul class="popup_menu">')
.split('</menu>').join('</ul>');
}
function navlinkDepth(magic,s) {
return s.split('<' + magic + '>').length - s.split('</' + magic + '>').length;
}
// navlinkString: * becomes the separator
// <<foo|bar=baz|fubar>> becomes a foo-link with attribute bar='baz'
// and visible text 'fubar'
// if(test){...} and if(test){...}else{...} work too (nested ok)
function navlinkStringToHTML(s,article,params) {
//limitAlert(navlinkStringToHTML, 5, 'navlinkStringToHTML\n' + article + '\n' + (typeof article));
var p=navlinkStringToArray(s,article,params);
var html='';
var menudepth = 0; // nested menus not currently allowed, but doesn't do any harm to code for it
var menurowdepth = 0;
var wrapping = null;
for (var i=0; i<p.length; ++i) {
if (typeof p[i] == typeof '') {
html+=navlinkSubstituteHTML(p[i]);
menudepth += navlinkDepth('menu', p[i]);
menurowdepth += navlinkDepth('menurow', p[i]);
// if (menudepth === 0) {
// tagType='span';
// } else if (menurowdepth === 0) {
// tagType='li';
// } else {
// tagType = null;
// }
} else if (typeof p[i].type != 'undefined' && p[i].type=='navlinkTag') {
if (menudepth > 0 && menurowdepth === 0) {
html += '<li class="popup_menu_item">' + p[i].html() + '</li>';
} else {
html+=p[i].html();
}
}
}
return html;
}
function navlinkTag() {
this.type='navlinkTag';
}
navlinkTag.prototype.html=function () {
this.getNewWin();
this.getPrintFunction();
var html='';
var opening, closing;
var tagType='span';
if (!tagType) {
opening = ''; closing = '';
} else {
opening = '<' + tagType + ' class="popup_' + this.id + '">';
closing = '</' + tagType + '>';
}
if (typeof this.print!='function') {
errlog ('Oh dear - invalid print function for a navlinkTag, id='+this.id);
} else {
html=this.print(this);
if (typeof html != typeof '') {html='';}
else if (typeof this.shortcut!='undefined') html=addPopupShortcut(html, this.shortcut);
}
return opening + html + closing;
};
navlinkTag.prototype.getNewWin=function() {
getValueOf('popupLinksNewWindow');
if (typeof pg.option.popupLinksNewWindow[this.id] === 'undefined') { this.newWin=null; }
this.newWin=pg.option.popupLinksNewWindow[this.id];
}
navlinkTag.prototype.getPrintFunction=function() { //think about this some more
// this.id and this.article should already be defined
if (typeof this.id!=typeof '' || typeof this.article!=typeof {} ) { return; }
var html='';
var a,t;
this.noPopup=1;
switch (this.id) {
case 'contribs': case 'history': case 'whatLinksHere':
case 'userPage': case 'monobook': case 'userTalk':
case 'talk': case 'article': case 'lastEdit':
this.noPopup=null;
}
switch (this.id) {
case 'email': case 'contribs': case 'block': case 'unblock':
case 'userlog': case 'userSpace': case 'deletedContribs':
this.article=this.article.userName();
}
switch (this.id) {
case 'userTalk': case 'newUserTalk': case 'editUserTalk':
case 'userPage': case 'monobook': case 'editMonobook': case 'blocklog':
this.article=this.article.userName(true);
// fall through; no break
case 'pagelog': case 'deletelog': case 'protectlog':
delete this.oldid;
}
if (this.id=='editMonobook' || this.id=='monobook') { this.article.append('/monobook.js'); }
if (this.id != 'mainlink') {
// FIXME anchor handling should be done differently with Title object
this.article=this.article.removeAnchor();
// if (typeof this.text=='undefined') this.text=popupString(this.id);
}
switch (this.id) {
case 'undelete': this.print=specialLink; this.specialpage='Undelete'; this.sep='/'; break;
case 'whatLinksHere': this.print=specialLink; this.specialpage='Whatlinkshere'; break;
case 'relatedChanges': this.print=specialLink; this.specialpage='Recentchangeslinked'; break;
case 'move': this.print=specialLink; this.specialpage='Movepage'; break;
case 'contribs': this.print=specialLink; this.specialpage='Contributions'; break;
case 'deletedContribs':this.print=specialLink; this.specialpage='Deletedcontributions'; break;
case 'email': this.print=specialLink; this.specialpage='Emailuser'; break;
case 'block': this.print=specialLink; this.specialpage='Blockip'; this.sep='&ip='; break;
case 'unblock': this.print=specialLink; this.specialpage='Ipblocklist'; this.sep='&action=unblock&ip='; break;
case 'userlog': this.print=specialLink; this.specialpage='Log'; this.sep='&user='; break;
case 'blocklog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=block&page='; break;
case 'pagelog': this.print=specialLink; this.specialpage='Log'; this.sep='&page='; break;
case 'protectlog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=protect&page='; break;
case 'deletelog': this.print=specialLink; this.specialpage='Log'; this.sep='&type=delete&page='; break;
case 'userSpace': this.print=specialLink; this.specialpage='PrefixIndex'; this.sep='&namespace=2&prefix='; break;
case 'search': this.print=specialLink; this.specialpage='Search'; this.sep='&fulltext=Search&search='; break;
case 'history': case 'historyfeed': case 'unwatch': case 'watch':
case 'unprotect': case 'protect':
this.print=wikiLink; this.action=this.id; break;
case 'delete':
this.print=wikiLink; this.action='delete';
if (this.article.namespace()==pg.ns.image) {
var img=this.article.stripNamespace();
this.action+='&image='+img;
}
break;
case 'markpatrolled':
case 'edit': // editOld should keep the oldid, but edit should not.
delete this.oldid; // fall through
case 'view': case 'purge': case 'render':
this.print=wikiLink;
this.action=this.id; break;
case 'raw':
this.print=wikiLink; this.action='raw&ctype=text/css'; break;
case 'new':
this.print=wikiLink; this.action='edit§ion=new'; break;
case 'mainlink':
if (typeof this.text=='undefined') { this.text=this.article.toString().entify(); }
if (getValueOf('popupSimplifyMainLink') && isInStrippableNamespace(this.article)) {
var s=this.text.split('/'); this.text=s[s.length-1];
if (this.text=='' && s.length > 1) { this.text=s[s.length-2]; }
}
this.print=titledWikiLink;
if (typeof this.title=='undefined' && pg.current.link && typeof pg.current.link.href != 'undefined') {
this.title=safeDecodeURI((pg.current.link.originalTitle)?pg.current.link.originalTitle:this.article);
if (typeof this.oldid != 'undefined' && this.oldid) {
this.title=tprintf('Revision %s of %s', [this.oldid, this.title]);
}
}
this.action='view'; break;
case 'userPage':
case 'article':
case 'monobook':
case 'editMonobook':
case 'editArticle':
delete this.oldid;
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.article=this.article.articleFromTalkOrArticle();
//alert(this.id+'\n'+this.article + '\n'+ typeof this.article);
this.print=wikiLink;
if (this.id.indexOf('edit')==0) {
this.action='edit';
} else { this.action='view';}
break;
case 'userTalk':
case 'talk':
this.article=this.article.talkPage();
delete this.oldid;
this.print=wikiLink;
this.action='view'; break;
case 'arin':
this.print=arinLink; break;
case 'count':
this.print=editCounterLink; break;
case 'google':
this.print=googleLink; break;
case 'editors':
this.print=editorListLink; break;
case 'globalsearch':
this.print=globalSearchLink; break;
case 'lastEdit':
this.print=titledDiffLink;
this.title=popupString('Show the last edit');
this.from='prev'; this.to='cur'; break;
case 'oldEdit':
this.print=titledDiffLink;
this.title=popupString('Show the edit made to get revision') + ' ' + this.oldid;
this.from='prev'; this.to=this.oldid; break;
case 'editOld':
this.print=wikiLink; this.action='edit'; break;
case 'undo':
this.print=wikiLink; this.action='edit&undo='; break;
case 'markpatrolled':
this.print=wikiLink; this.action='markpatrolled';
case 'revert':
this.print=wikiLink; this.action='revert'; break;
case 'nullEdit':
this.print=wikiLink; this.action='nullEdit'; break;
case 'diffCur':
this.print=titledDiffLink;
this.title=tprintf('Show changes since revision %s', [this.oldid]);
this.from=this.oldid; this.to='cur'; break;
case 'editUserTalk':
case 'editTalk':
delete this.oldid;
this.article=this.article.talkPage();
this.action='edit'; this.print=wikiLink; break;
case 'newUserTalk':
case 'newTalk':
this.article=this.article.talkPage();
this.action='edit§ion=new'; this.print=wikiLink; break;
case 'lastContrib':
case 'sinceMe':
this.print=magicHistoryLink;
break;
case 'togglePreviews':
this.text=popupString(pg.option.simplePopups ? 'enable previews' : 'disable previews');
case 'disablePopups': case 'purgePopups':
this.print=popupMenuLink;
break;
default:
this.print=function () {return 'Unknown navlink type: '+this.id+''};
}
};
//
// end navlinks
//////////////////////////////////////////////////
//</NOLITE>
// ENDFILE: navlinks.js
// STARTFILE: shortcutkeys.js
//<NOLITE>
function popupHandleKeypress(evt) {
var keyCode = window.event ? window.event.keyCode : ( evt.keyCode ? evt.keyCode : evt.which);
if (!keyCode || !pg.current.link || !pg.current.link.navpopup) { return; }
if (keyCode==27) { // escape
killPopup();
return false; // swallow keypress
}
var letter=String.fromCharCode(keyCode);
var links=pg.current.link.navpopup.mainDiv.getElementsByTagName('A');
var startLink=0;
var i,j;
if (popupHandleKeypress.lastPopupLinkSelected) {
for (i=0; i<links.length; ++i) {
if (links[i]==popupHandleKeypress.lastPopupLinkSelected) { startLink=i; }
}
}
for (j=0; j<links.length; ++j) {
i=(startLink + j + 1) % links.length;
if (links[i].getAttribute('popupkey')==letter) {
if (evt && evt.preventDefault) evt.preventDefault();
links[i].focus();
popupHandleKeypress.lastPopupLinkSelected=links[i];
return false; // swallow keypress
}
}
// pass keypress on
if (document.oldPopupOnkeypress) { return document.oldPopupOnkeypress(evt); }
return true;
}
function addPopupShortcuts() {
if (document.onkeypress!=popupHandleKeypress) {
document.oldPopupOnkeypress=document.onkeypress;
}
document.onkeypress=popupHandleKeypress;
}
function rmPopupShortcuts() {
popupHandleKeypress.lastPopupLinkSelected=null;
try {
if (document.oldPopupOnkeypress && document.oldPopupOnkeypress==popupHandleKeypress) {
// panic
document.onkeypress=null; //function () {};
return;
}
document.onkeypress=document.oldPopupOnkeypress;
} catch (nasties) { /* IE goes here */ }
}
function addLinkProperty(html, property) {
// take "<a href=...>...</a> and add a property
// not sophisticated at all, easily broken
var i=html.indexOf('>');
if (i<0) { return html; }
return html.substring(0,i) + ' ' + property + html.substring(i);
}
function addPopupShortcut(html, key) {
if (!getValueOf('popupShortcutKeys')) { return html; }
var ret= addLinkProperty(html, 'popupkey="'+key+'"');
if (key==' ') { key=popupString('spacebar'); }
return ret.replace(RegExp('^(.*?)(title=")(.*?)(".*)$', 'i'),'$1$2$3 ['+key+']$4');
}
//</NOLITE>
// ENDFILE: shortcutkeys.js
// STARTFILE: diffpreview.js
//<NOLITE>
function loadDiff(article, oldid, diff, navpop) {
navpop.diffData={};
var oldRev, newRev;
switch (diff) {
case 'cur':
switch ( oldid ) {
case null:
case '':
case 'prev':
// eg newmessages diff link
oldRev='0&direction=prev';
newRev=0;
break;
default:
oldRev = oldid;
newRev = 0;
}
break;
case 'prev':
oldRev = ( oldid || 0 ) + '&direction=prev'; newRev = oldid; break;
case 'next':
oldRev = oldid; newRev = oldid + '&direction=next';
break;
default:
oldRev = oldid || 0; newRev = diff || 0; break;
}
oldRev = oldRev || 0;
newRev = newRev || 0;
var go = function() {
pendingNavpopTask(navpop);
getWiki(article, doneDiffNew, newRev, navpop);
pendingNavpopTask(navpop);
getWiki(article, doneDiffOld, oldRev, navpop);
var tz = Cookie.read('popTz');
if ( (window.wgEnableAPI || wgEnableAPI) && getValueOf('popupAdjustDiffDates') && tz===null) {
pendingNavpopTask(navpop);
getPageWithCaching(pg.wiki.apiwikibase + '?format=json&action=query&meta=userinfo&uiprop=options',
function(d) {
completedNavpopTask(navpop);
setTimecorrectionCookie(d);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}, navpop);
}
return true; // remove hook once run
}
if (navpop.visible || !getValueOf('popupLazyDownloads')) { go(); }
else { navpop.addHook(go, 'unhide', 'before', 'DOWNLOAD_DIFFS'); }
}
function setTimecorrectionCookie(d) {
try {
var jsobj=getJsObj(d.data);
var tz=jsobj.query.userinfo.options.timecorrection;
} catch (someError) {
logerr( 'setTimecorretion failed' );
return;
}
Cookie.create( 'popTz', getTimeOffset(tz), 1);
}
function doneDiff(download, isOld) {
if (!download.owner || !download.owner.diffData) { return; }
var navpop=download.owner;
var label= (isOld) ? 'Old' : 'New';
var otherLabel=(isOld) ? 'New' : 'Old';
navpop.diffData[label]=download;
completedNavpopTask(download.owner);
if (diffDownloadsComplete(navpop)) { insertDiff(navpop); }
}
function diffDownloadsComplete(navpop) {
if ( Cookie.read('popTz')===null) { return false; }
return navpop.diffData.Old && navpop.diffData.New;
}
function doneDiffNew(download) { doneDiff(download, false); }
function doneDiffOld(download) { doneDiff(download, true); }
function rmBoringLines(a,b,context) {
if (typeof context == 'undefined') { context=2; }
// this is fairly slow... i think it's quicker than doing a word-based diff from the off, though
var aa=[], aaa=[];
var bb=[], bbb=[];
var i, j;
// first, gather all disconnected nodes in a and all crossing nodes in a and b
for (i=0; i<a.length; ++i ) {
if(!a[i].paired) { aa[i]=1; }
else if (countCrossings(b,a,i, true)) {
aa[i]=1;
bb[ a[i].row ] = 1;
}
}
// pick up remaining disconnected nodes in b
for (i=0; i<b.length; ++i ) {
if (bb[i]==1) { continue; }
if(!b[i].paired) { bb[i]=1; }
}
// another pass to gather context: we want the neighbours of included nodes which are not yet included
// we have to add in partners of these nodes, but we don't want to add context for *those* nodes in the next pass
for (i=0; i<b.length; ++i) {
if ( bb[i] == 1 ) {
for (j=max(0,i-context); j < min(b.length, i+context); ++j) {
if ( !bb[j] ) { bb[j] = 1; aa[ b[j].row ] = 0.5; }
}
}
}
for (i=0; i<a.length; ++i) {
if ( aa[i] == 1 ) {
for (j=max(0,i-context); j < min(a.length, i+context); ++j) {
if ( !aa[j] ) { aa[j] = 1; bb[ a[j].row ] = 0.5; }
}
}
}
for (i=0; i<bb.length; ++i) {
if (bb[i] > 0) { // it's a row we need
if (b[i].paired) { bbb.push(b[i].text); } // joined; partner should be in aa
else {
bbb.push(b[i]);
}
}
}
for (i=0; i<aa.length; ++i) {
if (aa[i] > 0) { // it's a row we need
if (a[i].paired) { aaa.push(a[i].text); } // joined; partner should be in aa
else {
aaa.push(a[i]);
}
}
}
return { a: aaa, b: bbb};
}
function stripOuterCommonLines(a,b,context) {
var i=0;
while (i<a.length && i < b.length && a[i]==b[i]) { ++i; }
var j=a.length-1; var k=b.length-1;
while ( j>=0 && k>=0 && a[j]==b[k] ) { --j; --k; }
return { a: a.slice(max(0,i - 1 - context), min(a.length+1, j + context+1)),
b: b.slice(max(0,i - 1 - context), min(b.length+1, k + context+1)) };
}
function insertDiff(navpop) {
// for speed reasons, we first do a line-based diff, discard stuff that seems boring, then do a word-based diff
// FIXME: sometimes this gives misleading diffs as distant chunks are squashed together
var oldlines=navpop.diffData.Old.data.split('\n');
var newlines=navpop.diffData.New.data.split('\n');
var inner=stripOuterCommonLines(oldlines,newlines,getValueOf('popupDiffContextLines'));
oldlines=inner.a; newlines=inner.b;
var truncated=false;
getValueOf('popupDiffMaxLines');
if (oldlines.length > pg.option.popupDiffMaxLines || newlines.length > pg.option.popupDiffMaxLines) {
// truncate
truncated=true;
inner=stripOuterCommonLines(oldlines.slice(0,pg.option.popupDiffMaxLines),
newlines.slice(0,pg.option.popupDiffMaxLines),
pg.option.popupDiffContextLines);
oldlines=inner.a; newlines=inner.b;
}
var lineDiff=diff(oldlines, newlines);
var lines2=rmBoringLines(lineDiff.o, lineDiff.n);
var oldlines2=lines2.a; var newlines2=lines2.b;
var simpleSplit = !String.prototype.parenSplit.isNative;
var html='<hr>';
if (getValueOf('popupDiffDates')) {
html += diffDatesTable(navpop.diffData.Old, navpop.diffData.New);
html += '<hr>';
}
html += shortenDiffString(
diffString(oldlines2.join('\n'), newlines2.join('\n'), simpleSplit),
getValueOf('popupDiffContextCharacters') ).join('<hr>');
setPopupTipsAndHTML(html.split('\n').join('<br>') +
(truncated ? '<hr><b>'+popupString('Diff truncated for performance reasons')+'</b>' : '') ,
'popupPreview', navpop.idNumber);
}
function diffDatesTable( oldDl, newDl ) {
var html='<table class="popup_diff_dates">';
html += diffDatesTableRow( newDl, tprintf('New revision'));
html += diffDatesTableRow( oldDl, tprintf('Old revision'));
html += '</table>';
return html;
}
function diffDatesTableRow( dl, label ) {
var txt='';
if (!dl) {
txt=popupString('Something went wrong :-(');
} else if (!dl.lastModified) {
txt= (/^\s*$/.test(dl.data)) ?
popupString('Empty revision, maybe non-existent') : popupString('Unknown date');
} else {
var datePrint=getValueOf('popupDiffDatePrinter');
if (typeof dl.lastModified[datePrint] == 'function') {
if (getValueOf('popupAdjustDiffDates')) {
var off;
if (off=Cookie.read('popTz')) {
var d2=adjustDate(dl.lastModified, off);
txt = dayFormat(d2, true) + ' ' + timeFormat(d2, true);
}
} else {
txt = dl.lastModified[datePrint]();
}
} else {
txt = tprintf('Invalid %s %s', ['popupDiffDatePrinter', datePrint]);
}
}
var revlink = generalLink({url: dl.url.replace(/&.*?(oldid=[0-9]+(?:&direction=[^&]*)?).*/, '&$1'),
text: label, title: label});
return simplePrintf('<tr><td>%s</td><td>%s</td></tr>', [ revlink, txt ]);
}
//</NOLITE>
// ENDFILE: diffpreview.js
// STARTFILE: links.js
//<NOLITE>
/////////////////////
// LINK GENERATION //
/////////////////////
// titledDiffLink --> titledWikiLink --> generalLink
// wikiLink --> titledWikiLink --> generalLink
// editCounterLink --> generalLink
function titledDiffLink(l) { // article, text, title, from, to) {
return titledWikiLink({article: l.article, action: l.to + '&oldid=' + l.from,
newWin: l.newWin,
noPopup: l.noPopup,
text: l.text, title: l.title,
/* hack: no oldid here */
actionName: 'diff'});
}
function wikiLink(l) {
//{article:article, action:action, text:text, oldid, newid}) {
if (! (typeof l.article == typeof {}
&& typeof l.action == typeof '' && typeof l.text==typeof '')) return null;
if (typeof l.oldid == 'undefined') { l.oldid=null; }
var savedOldid = l.oldid;
if (!/^(edit|view|revert|render)$|^raw/.test(l.action)) { l.oldid=null; }
var hint=popupString(l.action + 'Hint'); // revertHint etc etc etc
var oldidData=[l.oldid, safeDecodeURI(l.article)];
var revisionString = tprintf('revision %s of %s', oldidData);
log('revisionString='+revisionString);
switch (l.action) {
case 'edit§ion=new': hint = popupString('newSectionHint'); break;
case 'edit&undo=':
if (l.diff && l.diff != 'prev' && savedOldid ) {
l.action += l.diff + '&undoafter=' + savedOldid;
} else if (savedOldid) {
l.action += savedOldid;
}
hint = popupString('undoHint');
break;
case 'raw&ctype=text/css': hint=popupString('rawHint'); break;
case 'revert':
if (!window.wgEnableAPI || !wgEnableAPI) {
alert( 'This function of navigation popups now requires a MediaWiki ' +
'installation with the API enabled.');
break;
}
var p=parseParams(pg.current.link.href);
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=' + revertSummary(l.oldid, p.diff);
if (p.diff=='prev') {
l.action += '&direction=prev';
revisionString = tprintf('the revision prior to revision %s of %s', oldidData);
}
if (getValueOf('popupRevertSummaryPrompt')) { l.action += '&autosummaryprompt=true'; }
if (getValueOf('popupMinorReverts')) { l.action += '&autominor=true'; }
log('revisionString is now '+revisionString);
break;
case 'nullEdit':
l.action='edit&autoclick=wpSave&actoken=' + autoClickToken() + '&autosummary=null';
break;
case 'historyfeed':
l.action='history&feed=rss';
break;
case 'markpatrolled':
l.action='markpatrolled&rcid='+l.rcid;
}
if (hint) {
if (l.oldid) {
hint = simplePrintf(hint, [revisionString]);
}
else {
hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
}
}
else {
hint = safeDecodeURI(l.article + '&action=' + l.action) + (l.oldid) ? '&oldid='+l.oldid : '';
}
return titledWikiLink({article: l.article, action: l.action, text: l.text, newWin:l.newWin,
title: hint, oldid: l.oldid, noPopup: l.noPopup});
}
function revertSummary(oldid, diff) {
var ret='';
if (diff == 'prev') {
ret=getValueOf('popupQueriedRevertToPreviousSummary');
} else { ret = getValueOf('popupQueriedRevertSummary'); }
return ret + '&autorv=' + oldid;
}
function titledWikiLink(l) {
// possible properties of argument:
// article, action, text, title, oldid, actionName, className, noPopup
// oldid = null is fine here
// article and action are mandatory args
if (typeof l.article == 'undefined' || typeof l.action=='undefined') {
errlog('got undefined article or action in titledWikiLink');
return null;
}
var base = pg.wiki.titlebase + l.article.urlString();
var url=base;
if (typeof l.actionName=='undefined' || !l.actionName) { l.actionName='action'; }
// no need to add &action=view, and this confuses anchors
if (l.action != 'view') { url = base + '&' + l.actionName + '=' + l.action; }
if (typeof l.oldid!='undefined' && l.oldid) { url+='&oldid='+l.oldid; }
var cssClass=pg.misc.defaultNavlinkClassname;
if (typeof l.className!='undefined' && l.className) { cssClass=l.className; }
return generalNavLink({url: url, newWin: l.newWin,
title: (typeof l.title != 'undefined') ? l.title : null,
text: (typeof l.text!='undefined')?l.text:null,
className: cssClass, noPopup:l.noPopup});
}
function getLastContrib(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processLastContribInfo(x,{page: wikipage, newWin: newWin})});
}
function processLastContribInfo(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: an odd thing happened. Please retry.'); return; }
if(!info.firstNewEditor) {
alert(tprintf('Only found one editor: %s made %s edits', [info.edits[0].editor,info.edits.length]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+info.firstNewEditor.oldid;
displayUrl(newUrl, stuff.newWin);
}
function getDiffSinceMyEdit(wikipage, newWin) {
getHistoryInfo(wikipage, function(x){processDiffSinceMyEdit(x,{page: wikipage, newWin: newWin})});
}
function processDiffSinceMyEdit(info, stuff) {
if(!info.edits || !info.edits.length) { alert('Popups: something fishy happened. Please try again.'); return; }
var friendlyName=stuff.page.split('_').join(' ');
if(!info.myLastEdit) {
alert(tprintf('Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
[info.userName, getValueOf('popupHistoryLimit'), friendlyName]));
return;
}
if(info.myLastEdit.index==0) {
alert(tprintf("%s seems to be the last editor to the page %s", [info.userName, friendlyName]));
return;
}
var newUrl=pg.wiki.titlebase + new Title(stuff.page).urlString() + '&diff=cur&oldid='+ info.myLastEdit.oldid;
displayUrl(newUrl, stuff.newWin);
}
function displayUrl(url, newWin){
if(newWin) { window.open(url); }
else { document.location=url; }
}
function purgePopups() {
processAllPopups(true);
setupCache(); // deletes all cached items (not browser cached, though...)
pg.option={};
abortAllDownloads();
}
function processAllPopups(nullify, banish) {
for (var i=0; i<pg.current.links.length; ++i) {
if (!pg.current.links[i].navpopup) { continue; }
(nullify || banish) && pg.current.links[i].navpopup.banish();
pg.current.links[i].simpleNoMore=false;
nullify && (pg.current.links[i].navpopup=null);
}
}
function disablePopups(){
processAllPopups(false, true);
setupTooltips(null, true);
}
function togglePreviews() {
processAllPopups(true, true);
pg.option.simplePopups=!pg.option.simplePopups;
abortAllDownloads();
}
function magicHistoryLink(l) {
// FIXME use onclick change href trick to sort this out instead of window.open
var jsUrl='', title='';
switch(l.id) {
case 'lastContrib':
jsUrl=simplePrintf('javascript:getLastContrib(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('lastContribHint');
break;
case 'sinceMe':
jsUrl=simplePrintf('javascript:getDiffSinceMyEdit(\'%s\',%s)',
[l.article.toString(true).split("'").join("\\'"), l.newWin]);
title=popupString('sinceMeHint');
break;
}
return generalNavLink({url: jsUrl, newWin: false, // can't have new windows with JS links, I think
title: title, text: l.text, noPopup: l.noPopup});
}
function popupMenuLink(l) {
var jsUrl=simplePrintf('javascript:%s()', [l.id]);
var title=popupString(simplePrintf('%sHint', [l.id]));
return generalNavLink({url: jsUrl, newWin:false, title:title, text:l.text, noPopup:l.noPopup});
}
function specialLink(l) {
// properties: article, specialpage, text, sep
if (typeof l.specialpage=='undefined'||!l.specialpage) return null;
var base = pg.wiki.titlebase + pg.ns.special+':'+l.specialpage;
if (typeof l.sep == 'undefined' || l.sep===null) l.sep='&target=';
var article=l.article.urlString({keepSpaces: l.specialpage=='Search'});
var hint=popupString(l.specialpage+'Hint');
switch (l.specialpage) {
case 'Log':
switch (l.sep) {
case '&user=': hint=popupString('userLogHint'); break;
case '&type=block&page=': hint=popupString('blockLogHint'); break;
case '&page=': hint=popupString('pageLogHint'); break;
case '&type=protect&page=': hint=popupString('protectLogHint'); break;
case '&type=delete&page=': hint=popupString('deleteLogHint'); break;
default: log('Unknown log type, sep=' + l.sep); hint='Missing hint (FIXME)';
}
break;
case 'PrefixIndex': article += '/'; break;
}
if (hint) hint = simplePrintf(hint, [safeDecodeURI(l.article)]);
else hint = safeDecodeURI(l.specialpage+':'+l.article) ;
var url = base + l.sep + article;
return generalNavLink({url: url, title: hint, text: l.text, newWin:l.newWin, noPopup:l.noPopup});
}
function generalLink(l) {
// l.url, l.text, l.title, l.newWin, l.className, l.noPopup
if (typeof l.url=='undefined') return null;
// only quotation marks in the url can screw us up now... I think
var url=l.url.split('"').join('%22');
var ret='<a href="' + url + '"';
if (typeof l.title!='undefined' && l.title) { ret += ' title="' + l.title + '"'; }
if (l.noPopup) { ret += ' noPopup=1'; }
var newWin;
if (typeof l.newWin=='undefined' || l.newWin===null) { newWin=getValueOf('popupNewWindows'); }
else { newWin=l.newWin; }
if (newWin) { ret += ' target="_blank"'; }
if (typeof l.className!='undefined'&&l.className) { ret+=' class="'+l.className+'"'; }
ret += '>';
if (typeof l.text==typeof '') { ret+= l.text; }
ret +='</a>';
return ret;
}
function appendParamsToLink(linkstr, params) {
var sp=linkstr.parenSplit(RegExp('(href="[^"]+?)"', 'i'));
if (sp.length<2) return null;
var ret=sp.shift() + sp.shift();
ret += '&' + params + '"';
ret += sp.join('');
return ret;
}
function changeLinkTargetLink(x) { // newTarget, text, hint, summary, clickButton, minor, title (optional) {
if (x.newTarget) {
log ('changeLinkTargetLink: newTarget=' + x.newTarget);
}
// optional: oldTarget (in wikitext)
// if x.newTarget omitted or null, remove the link
//x.text=encodeURI(x.text); // this buggers things up on zh.wikipedia.org and doesn't seem necessary
x.clickButton=encodeURI(x.clickButton);
// FIXME: first character of page title as well as namespace should be case insensitive
// eg [[category:foo]] and [[Category:Foo]] are equivalent
// this'll break if charAt(0) is nasty
var cA=literalizeRegex(x.oldTarget);
var chs=cA.charAt(0).toUpperCase();
chs='['+chs + chs.toLowerCase()+']';
var currentArticleRegexBit=encodeURIComponent(chs+cA.substring(1));
currentArticleRegexBit=currentArticleRegexBit
.split(RegExp('[_ ]+', 'g')).join('[_ ]+')
.split( "%20" ).join('[_ ]+')
.split('\\(').join('(?:%2528|\\()')
.split('\\)').join('(?:%2529|\\))');
// leading and trailing space should be ignored, and anchor bits optional:
currentArticleRegexBit = '\\s*(' + currentArticleRegexBit + '(?:#[^\\[\\|]*)?)\\s*';
// e.g. Computer (archaic) -> \s*([Cc]omputer[_ ](?:%2528|\()archaic(?:%2528|\)))\s*
// autoedit=s~\[\[([Cc]ad)\]\]~[[Computer-aided%20design|$1]]~g;s~\[\[([Cc]AD)[|]~[[Computer-aided%20design|~g
var title=x.title || wgPageName.split('_').join(' ');
var lk=titledWikiLink({article: new Title(title), newWin:x.newWin,
action: 'edit',
text: x.text,
title: x.hint,
className: 'popup_change_title_link'
});
var cmd='';
if (x.newTarget) {
// escape '&' and other nasties
var t=encodeURIComponent(x.newTarget);
var s=encodeURIComponent(literalizeRegex(x.newTarget));
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~[['+t+'|$1]]~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|]~[['+t+'|~g;';
cmd += 's~\\[\\['+s + '\\|' + s + '\\]\\]~[[' + t + ']]~g';
} else {
cmd += 's~\\[\\['+currentArticleRegexBit+'\\]\\]~$1~g;';
cmd += 's~\\[\\['+currentArticleRegexBit+'[|](.*?)\\]\\]~$2~g';
}
cmd += '&autoclick='+x.clickButton + '&actoken=' + autoClickToken();
cmd += ( x.minor == null ) ? '' : '&autominor='+x.minor;
cmd += ( x.watch == null ) ? '' : '&autowatch='+x.watch;
cmd += '&autosummary='+encodeURIComponent(x.summary);
return appendParamsToLink(lk, 'autoedit='+cmd);
}
function redirLink(redirMatch, article) {
// NB redirMatch is in wikiText
var ret='';
if (getValueOf('popupAppendRedirNavLinks') && getValueOf('popupNavLinks')) {
ret += '<hr>';
if (getValueOf('popupFixRedirs') && typeof autoEdit != 'undefined' && autoEdit) {
log('redirLink: newTarget=' + redirMatch);
ret += addPopupShortcut(
changeLinkTargetLink(
{newTarget: redirMatch, text: popupString('Redirects'),
hint: popupString('Fix this redirect'),
summary: simplePrintf(getValueOf('popupFixRedirsSummary'),
[article.toString(), redirMatch ]),
oldTarget: article.toString(),
clickButton: getValueOf('popupRedirAutoClick'), minor: true,
watch: getValueOf('popupWatchRedirredPages')})
, 'R');
ret += popupString(' to ');
}
else ret += popupString('Redirects') + popupString(' to ');
return ret;
}
else return '<br> ' + popupString('Redirects') + popupString(' to ') +
titledWikiLink({article: new Title().fromWikiText(redirMatch), action: 'view', /* FIXME: newWin */
text: safeDecodeURI(redirMatch), title: popupString('Bypass redirect')});
}
function arinLink(l) {
if (!saneLinkCheck(l)) { return null; }
if ( ! l.article.isIpUser() || ! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
return generalNavLink({url:'http://ws.arin.net/cgi-bin/whois.pl?queryinput=' + encodeURIComponent(uN), newWin:l.newWin,
title: tprintf('Look up %s in ARIN whois database', [uN]),
text: l.text, noPopup:1});
}
function toolDbName(cookieStyle) {
var ret = wgDBname;
if (!cookieStyle) { ret+= '_p'; }
return ret;
}
function saneLinkCheck(l) {
if (typeof l.article != typeof {} || typeof l.text != typeof '') { return false; }
return true;
}
function editCounterLink(l) {
if(!saneLinkCheck(l)) return null;
if (! pg.wiki.wikimedia) return null;
var uN=l.article.userName();
var tool=getValueOf('popupEditCounterTool');
var url;
var soxredToolUrl='http://toolserver.org/~soxred93/count/index.php?name=$1&lang=$2&wiki=$3';
var kateToolUrl='http://toolserver.org/~$3/cgi-bin/Tool1/wannabe_kate?username=$1&site=en.wikipedia.org&$2';
switch(tool) {
case 'custom':
url=simplePrintf(getValueOf('popupEditCounterUrl'), [ encodeURIComponent(uN), toolDbName() ]);
break;
case 'kate':
case 'interiot':
url=simplePrintf(kateToolUrl, [ encodeURIComponent(uN), toolDbName(), tool ]);
break;
default:
var theWiki=pg.wiki.hostname.split('.');
url=simplePrintf(soxredToolUrl, [ encodeURIComponent(uN), theWiki[0], theWiki[1] ]);
}
return generalNavLink({url:url, title: tprintf('editCounterLinkHint', [uN]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function globalSearchLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + article, newWin:l.newWin,
title: tprintf('globalSearchHint', [safeDecodeURI(l.article)]),
text: l.text, noPopup:1});
}
function googleLink(l) {
if(!saneLinkCheck(l)) return null;
var base='http://www.google.com/search?q=';
var article=l.article.urlString({keepSpaces:true});
return generalNavLink({url:base + '%22' + article + '%22', newWin:l.newWin,
title: tprintf('googleSearchHint', [safeDecodeURI(l.article)]),
text: l.text, noPopup:1});
}
function editorListLink(l) {
if(!saneLinkCheck(l)) return null;
var article= l.article.articleFromTalkPage() || l.article;
var base='http://toolserver.org/~tim/cgi-bin/contribution-counter?page=';
return generalNavLink({url:base+article.urlString(),
title: tprintf('editorListHint', [article]),
newWin:l.newWin, text: l.text, noPopup:1});
}
function generalNavLink(l) {
l.className = (l.className==null) ? 'popupNavLink' : l.className;
return generalLink(l);
}
//////////////////////////////////////////////////
// magic history links
//
function getHistoryInfo(wikipage, whatNext) {
log('getHistoryInfo');
getHistory(wikipage, whatNext ? function(d){whatNext(processHistory(d));} : processHistory);
}
// FIXME eliminate pg.idNumber ... how? :-(
function getHistory(wikipage, onComplete) {
log('getHistory');
if( !window.wgEnableAPI || !wgEnableAPI ) {
alert( 'This function of navigation popups now requires a MediaWiki ' +
'installation with the API enabled.');
return false;
}
var url = pg.wiki.apiwikibase + '?format=json&action=query&prop=revisions&titles=' +
new Title(wikipage).urlString() + '&rvlimit=' + getValueOf('popupHistoryLimit');
log('getHistory: url='+url);
return startDownload(url, pg.idNumber+'history', onComplete);
}
function processHistory(download) {
var jsobj = getJsObj(download.data);
try {
window.x=jsobj;
var p=jsobj['query']['pages']
for (var pageid in p) {
var revisions=p[pageid]['revisions'];
// we only get the first one
break;
}
} catch (someError) {
log('Something went wrong with JSON business');
return finishProcessHistory([]);
}
var edits=[];
for (var i=0; i<revisions.length; ++i) {
edits.push({ oldid: revisions[i]['revid'], editor: revisions[i]['user'] });
}
log('processed ' + edits.length + ' edits');
return finishProcessHistory(edits, wgUserName);
}
function finishProcessHistory(edits, userName) {
var histInfo={};
histInfo.edits=edits;
histInfo.userName=userName;
for (var i=0; i<edits.length; ++i) {
if (typeof histInfo.myLastEdit == 'undefined' && userName && edits[i].editor==userName) {
histInfo.myLastEdit={index: i, oldid: edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
if (typeof histInfo.firstNewEditor == 'undefined' && edits[i].editor != edits[0].editor) {
histInfo.firstNewEditor={index:i, oldid:edits[i].oldid, previd: (i==0 ? null : edits[i-1].oldid)};
}
}
//pg.misc.historyInfo=histInfo;
return histInfo;
}
//</NOLITE>
// ENDFILE: links.js
// STARTFILE: options.js
//////////////////////////////////////////////////
// options
// check for cookies and existing value, else use default
function defaultize(x) {
var val=null;
if (x!='popupCookies') {
defaultize('popupCookies');
if (pg.option.popupCookies && (val=Cookie.read(x))) {
pg.option[x]=val;
return;
}
}
if (pg.option[x]===null || typeof pg.option[x]=='undefined') {
if (typeof window[x] != 'undefined' ) pg.option[x]=window[x];
else pg.option[x]=pg.optionDefault[x];
}
}
function newOption(x, def) {
pg.optionDefault[x]=def;
}
function setDefault(x, def) {
return newOption(x, def);
}
function getValueOf(varName) {
defaultize(varName);
return pg.option[varName];
}
function useDefaultOptions() { // for testing
for (var p in pg.optionDefault) {
pg.option[p]=pg.optionDefault[p];
if (typeof window[p]!='undefined') { delete window[p]; }
}
}
function setOptions() {
// user-settable parameters and defaults
var userIsSysop = false;
if ( wgUserGroups ) {
for ( var g = 0; g < wgUserGroups.length; ++g ) {
if ( wgUserGroups[g] == "sysop" )
userIsSysop = true
}
}
// Basic options
newOption('popupDelay', 0.5);
newOption('popupHideDelay', 0.5);
newOption('simplePopups', false);
newOption('popupStructure', 'shortmenus'); // see later - default for popupStructure is 'original' if simplePopups is true
newOption('popupActionsMenu', true);
newOption('popupSetupMenu', true);
newOption('popupAdminLinks', userIsSysop);
newOption('popupShortcutKeys', false);
newOption('popupHistoricalLinks', true);
newOption('popupOnlyArticleLinks', true);
newOption('removeTitles', true);
newOption('popupMaxWidth', 350);
newOption('popupInitialWidth', false); // integer or false
newOption('popupSimplifyMainLink', true);
newOption('popupAppendRedirNavLinks', true);
newOption('popupTocLinks', false);
newOption('popupSubpopups', true);
newOption('popupDragHandle', false /* 'popupTopLinks'*/);
newOption('popupLazyPreviews', true);
newOption('popupLazyDownloads', true);
newOption('popupAllDabsStubs', false);
newOption('popupDebugging', false);
newOption('popupAdjustDiffDates', true);
newOption('popupActiveNavlinks', true);
newOption('popupModifier', false); // ctrl, shift, alt or meta
newOption('popupModifierAction', 'enable'); // or 'disable'
newOption('popupDraggable', true);
//<NOLITE>
// images
newOption('popupImages', true);
newOption('imagePopupsForImages', true);
newOption('popupNeverGetThumbs', false);
//newOption('popupImagesToggleSize', true);
newOption('popupThumbAction', 'imagepage'); //'sizetoggle');
newOption('popupImageSize', 60);
newOption('popupImageSizeLarge', 200);
// redirs, dabs, reversion
newOption('popupFixRedirs', false);
newOption('popupRedirAutoClick', 'wpDiff');
newOption('popupFixDabs', false);
newOption('popupRevertSummaryPrompt', false);
newOption('popupMinorReverts', false);
newOption('popupRedlinkRemoval', false);
newOption('popupWatchDisambiggedPages', null);
newOption('popupWatchRedirredPages', null);
newOption('popupDabWiktionary', 'last');
// navlinks
newOption('popupNavLinks', true);
newOption('popupNavLinkSeparator', ' ⋅ ');
newOption('popupLastEditLink', true);
newOption('popupEditCounterTool', 'soxred');
newOption('popupEditCounterUrl', '');
newOption('popupExtraUserMenu', '');
//</NOLITE>
// previews etc
newOption('popupPreviews', true);
newOption('popupSummaryData', true);
newOption('popupMaxPreviewSentences', 5);
newOption('popupMaxPreviewCharacters', 600);
newOption('popupLastModified', true);
newOption('popupPreviewKillTemplates', true);
newOption('popupPreviewRawTemplates', true);
newOption('popupPreviewFirstParOnly', true);
newOption('popupPreviewCutHeadings', true);
newOption('popupPreviewButton', false);
newOption('popupPreviewButtonEvent', 'click');
//<NOLITE>
// diffs
newOption('popupPreviewDiffs', true);
newOption('popupDiffMaxLines', 100);
newOption('popupDiffContextLines', 2);
newOption('popupDiffContextCharacters', 40);
newOption('popupDiffDates', true);
newOption('popupDiffDatePrinter', 'toLocaleString');
// edit summaries. God, these are ugly.
newOption('popupFixDabsSummary', popupString('defaultpopupFixDabsSummary') );
newOption('popupExtendedRevertSummary', popupString('defaultpopupExtendedRevertSummary') );
newOption('popupTimeOffset', null);
newOption('popupRevertSummary', popupString('defaultpopupRevertSummary') );
newOption('popupRevertToPreviousSummary', popupString('defaultpopupRevertToPreviousSummary') );
newOption('popupQueriedRevertSummary', popupString('defaultpopupQueriedRevertSummary') );
newOption('popupQueriedRevertToPreviousSummary', popupString('defaultpopupQueriedRevertToPreviousSummary') );
newOption('popupFixRedirsSummary', popupString('defaultpopupFixRedirsSummary') );
newOption('popupRedlinkSummary', popupString('defaultpopupRedlinkSummary') );
newOption('popupRmDabLinkSummary', popupString('defaultpopupRmDabLinkSummary') );
//</NOLITE>
// misc
newOption('popupCookies', false);
newOption('popupHistoryLimit', 50);
//<NOLITE>
newOption('popupFilters', [popupFilterStubDetect, popupFilterDisambigDetect,
popupFilterPageSize, popupFilterCountLinks,
popupFilterCountImages, popupFilterCountCategories,
popupFilterLastModified]);
newOption('extraPopupFilters', []);
newOption('popupOnEditSelection', 'cursor');
newOption('popupPreviewHistory', true);
newOption('popupImageLinks', true);
newOption('popupCategoryMembers', true);
newOption('popupUserInfo', true);
newOption('popupHistoryPreviewLimit', 25);
newOption('popupContribsPreviewLimit',25);
//</NOLITE>
// new windows
newOption('popupNewWindows', false);
newOption('popupLinksNewWindow', {'lastContrib': true, 'sinceMe': true});
// regexps
newOption('popupDabRegexp', '([{][{]\\s*disambig|disambig\\s*[}][}]|disamb\\s*[}][}]|dab\\s*[}][}])|[{][{]\\s*(((geo|hn|road?|school|number)dis)|[234][lc][acw]|shipindex)(\\s*[|][^}]*)?\\s*[}][}]|is a .*disambiguation.*page');
newOption('popupStubRegexp', '(sect)?stub[}][}]|This .*-related article is a .*stub');
newOption('popupImageVarsRegexp', 'image|image_(?:file|skyline|name|flag|seal)|cover|badge|logo');
}
// ENDFILE: options.js
// STARTFILE: strings.js
//<NOLITE>
//////////////////////////////////////////////////
// Translatable strings
//////////////////////////////////////////////////
//
// See instructions at
// //en.wikipedia.org/wiki/Wikipedia:Tools/Navigation_popups/Translation
pg.string = {
/////////////////////////////////////
// summary data, searching etc.
/////////////////////////////////////
'article': 'article',
'category': 'category',
'categories': 'categories',
'image': 'image',
'images': 'images',
'stub': 'stub',
'section stub': 'section stub',
'Empty page': 'Empty page',
'kB': 'kB',
'bytes': 'bytes',
'day': 'day',
'days': 'days',
'hour': 'hour',
'hours': 'hours',
'minute': 'minute',
'minutes': 'minutes',
'second': 'second',
'seconds': 'seconds',
'week': 'week',
'weeks': 'weeks',
'search': 'search',
'SearchHint': 'Find English Wikipedia articles containing %s',
'web': 'web',
'global': 'global',
'globalSearchHint': 'Search across Wikipedias in different languages for %s',
'googleSearchHint': 'Google for %s',
/////////////////////////////////////
// article-related actions and info
// (some actions also apply to user pages)
/////////////////////////////////////
'actions': 'actions', ///// view articles and view talk
'popupsMenu': 'popups',
'togglePreviewsHint': 'Toggle preview generation in popups on this page',
'enable previews': 'enable previews',
'disable previews': 'disable previews',
'toggle previews': 'toggle previews',
'show preview': 'show preview',
'reset': 'reset',
'more...': 'more...',
'disable': 'disable popups',
'disablePopupsHint': 'Disable popups on this page. Reload page to re-enable.',
'historyfeedHint': 'RSS feed of recent changes to this page',
'purgePopupsHint': 'Reset popups, clearing all cached popup data.',
'PopupsHint': 'Reset popups, clearing all cached popup data.',
'spacebar': 'space',
'view': 'view',
'view article': 'view article',
'viewHint': 'Go to %s',
'talk': 'talk',
'talk page': 'talk page',
'this revision': 'this revision',
'revision %s of %s': 'revision %s of %s',
'Revision %s of %s': 'Revision %s of %s',
'the revision prior to revision %s of %s': 'the revision prior to revision %s of %s',
'Toggle image size': 'Click to toggle image size',
'del': 'del', ///// delete, protect, move
'delete': 'delete',
'deleteHint': 'Delete %s',
'undeleteShort': 'un',
'UndeleteHint': 'Show the deletion history for %s',
'protect': 'protect',
'protectHint': 'Restrict editing rights to %s',
'unprotectShort': 'un',
'unprotectHint': 'Allow %s to be edited by anyone again',
'move': 'move',
'move page': 'move page',
'MovepageHint': 'Change the title of %s',
'edit': 'edit', ///// edit articles and talk
'edit article': 'edit article',
'editHint': 'Change the content of %s',
'edit talk': 'edit talk',
'new': 'new',
'new topic': 'new topic',
'newSectionHint': 'Start a new section on %s',
'null edit': 'null edit',
'nullEditHint': 'Submit an edit to %s, making no changes ',
'hist': 'hist', ///// history, diffs, editors, related
'history': 'history',
'historyHint': 'List the changes made to %s',
'last': 'last',
'lastEdit': 'lastEdit',
'mark patrolled': 'mark patrolled',
'markpatrolledHint': 'Mark this edit as patrolled',
'show last edit': 'most recent edit',
'Show the last edit': 'Show the effects of the most recent change',
'lastContrib': 'lastContrib',
'last set of edits': 'latest edits',
'lastContribHint': 'Show the net effect of changes made by the last editor',
'cur': 'cur',
'diffCur': 'diffCur',
'Show changes since revision %s': 'Show changes since revision %s',
'%s old': '%s old', // as in 4 weeks old
'oldEdit': 'oldEdit',
'purge': 'purge',
'purgeHint': 'Demand a fresh copy of %s',
'raw': 'source',
'rawHint': 'Download the source of %s',
'render': 'simple',
'renderHint': 'Show a plain HTML version of %s',
'Show the edit made to get revision': 'Show the edit made to get revision',
'sinceMe': 'sinceMe',
'changes since mine': 'diff my edit',
'sinceMeHint': 'Show changes since my last edit',
'Couldn\'t find an edit by %s\nin the last %s edits to\n%s': 'Couldn\'t find an edit by %s\nin the last %s edits to\n%s',
'eds': 'eds',
'editors': 'editors',
'editorListHint': 'List the users who have edited %s',
'related': 'related',
'relatedChanges': 'relatedChanges',
'related changes': 'related changes',
'RecentchangeslinkedHint': 'Show changes in articles related to %s',
'editOld': 'editOld', ///// edit old version, or revert
'rv': 'rv',
'revert': 'revert',
'revertHint': 'Revert to %s',
'defaultpopupRedlinkSummary': 'Removing link to empty page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixDabsSummary': 'Disambiguate [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupFixRedirsSummary': 'Redirect bypass from [[%s]] to [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupExtendedRevertSummary': 'Revert to revision dated %s by %s, oldid %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertToPreviousSummary': 'Revert to the revision prior to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRevertSummary': 'Revert to revision %s using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertToPreviousSummary': 'Revert to the revision prior to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupQueriedRevertSummary': 'Revert to revision $1 dated $2 by $3 using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'defaultpopupRmDabLinkSummary': 'Remove link to dab page [[%s]] using [[:en:Wikipedia:Tools/Navigation_popups|popups]]',
'Redirects': 'Redirects', // as in Redirects to ...
' to ': ' to ', // as in Redirects to ...
'Bypass redirect': 'Bypass redirect',
'Fix this redirect': 'Fix this redirect',
'disambig': 'disambig', ///// add or remove dab etc.
'disambigHint': 'Disambiguate this link to [[%s]]',
'Click to disambiguate this link to:': 'Click to disambiguate this link to:',
'remove this link': 'remove this link',
'remove all links to this page from this article': 'remove all links to this page from this article',
'remove all links to this disambig page from this article': 'remove all links to this disambig page from this article',
'mainlink': 'mainlink', ///// links, watch, unwatch
'wikiLink': 'wikiLink',
'wikiLinks': 'wikiLinks',
'links here': 'links here',
'whatLinksHere': 'whatLinksHere',
'what links here': 'what links here',
'WhatlinkshereHint': 'List the pages that are hyperlinked to %s',
'unwatchShort': 'un',
'watchThingy': 'watch', // called watchThingy because {}.watch is a function
'watchHint': 'Add %s to my watchlist',
'unwatchHint': 'Remove %s from my watchlist',
'Only found one editor: %s made %s edits': 'Only found one editor: %s made %s edits',
'%s seems to be the last editor to the page %s': '%s seems to be the last editor to the page %s',
'rss': 'rss',
/////////////////////////////////////
// diff previews
/////////////////////////////////////
'Diff truncated for performance reasons': 'Diff truncated for performance reasons',
'Old revision': 'Old revision',
'New revision': 'New revision',
'Something went wrong :-(': 'Something went wrong :-(',
'Empty revision, maybe non-existent': 'Empty revision, maybe non-existent',
'Unknown date': 'Unknown date',
/////////////////////////////////////
// other special previews
/////////////////////////////////////
'Empty category': 'Empty category',
'Category members (%s shown)': 'Category members (%s shown)',
'No image links found': 'No image links found',
'File links': 'File links',
'No image found': 'No image found',
'Image from Commons': 'Image from Commons',
'Description page': 'Description page',
/////////////////////////////////////
// user-related actions and info
/////////////////////////////////////
'user': 'user', ///// user page, talk, email, space
'user page': 'user page',
'user talk': 'user talk',
'edit user talk': 'edit user talk',
'leave comment': 'leave comment',
'email': 'email',
'email user': 'email user',
'EmailuserHint': 'Send an email to %s',
'space': 'space', // short form for userSpace link
'PrefixIndexHint': 'Show pages in the userspace of %s',
'count': 'count', ///// contributions, log
'edit counter': 'edit counter',
'editCounterLinkHint': 'Count the contributions made by %s',
'contribs': 'contribs',
'contributions': 'contributions',
'deletedContribs': 'deleted contributions',
'DeletedcontributionsHint': 'List deleted edits made by %s',
'ContributionsHint': 'List the contributions made by %s',
'log': 'log',
'user log': 'user log',
'userLogHint': 'Show %s\'s user log',
'arin': 'ARIN lookup', ///// ARIN lookup, block user or IP
'Look up %s in ARIN whois database': 'Look up %s in the ARIN whois database',
'unblockShort': 'un',
'block': 'block',
'block user': 'block user',
'IpblocklistHint': 'Unblock %s',
'BlockipHint': 'Prevent %s from editing',
'block log': 'block log',
'blockLogHint': 'Show the block log for %s',
'protectLogHint': 'Show the protection log for %s',
'pageLogHint': 'Show the page log for %s',
'deleteLogHint': 'Show the deletion log for %s',
'Invalid %s %s': 'The option %s is invalid: %s',
'No backlinks found': 'No backlinks found',
' and more': ' and more',
'undo': 'undo',
'undoHint': 'undo this edit',
'Download preview data': 'Download preview data',
'Invalid or IP user': 'Invalid or IP user',
'Not a registered username': 'Not a registered username',
'BLOCKED': 'BLOCKED',
' edits since: ': ' edits since: ',
/////////////////////////////////////
// Autoediting
/////////////////////////////////////
'Enter a non-empty edit summary or press cancel to abort': 'Enter a non-empty edit summary or press cancel to abort',
'Failed to get revision information, please edit manually.\n\n': 'Failed to get revision information, please edit manually.\n\n',
'The %s button has been automatically clicked. Please wait for the next page to load.': 'The %s button has been automatically clicked. Please wait for the next page to load.',
'Could not find button %s. Please check the settings in your javascript file.': 'Could not find button %s. Please check the settings in your javascript file.',
/////////////////////////////////////
// Popups setup
/////////////////////////////////////
'Open full-size image': 'Open full-size image',
'zxy': 'zxy'
};
function popupString(str) {
if (typeof popupStrings != 'undefined' && popupStrings && popupStrings[str]) { return popupStrings[str]; }
if (pg.string[str]) { return pg.string[str]; }
return str;
}
function tprintf(str,subs) {
if (typeof subs != typeof []) { subs = [subs]; }
return simplePrintf(popupString(str), subs);
}
//</NOLITE>
// ENDFILE: strings.js
////////////////////////////////////////////////////////////////////
// Run things
////////////////////////////////////////////////////////////////////
hookEvent('load', setupPopups);
addOnloadHook(autoEdit);
//support for MediaWiki's live preview
addOnloadHook( function() {
if(typeof doLivePreview != "function" || typeof $j != "function") return;
$j("#wpPreview").click(function(){
var i = setInterval(function(){
var p = document.getElementById("wikiPreview");
if(p.previousSibling.className == "mw-ajax-loader") return;
p.ranSetupTooltipsAlready = false;
setupTooltips(p);
clearInterval(i);
}, 500);
});
});
qgmurqe1b61zlposnxvp7tg4w2rge84
14877
14876
2015-04-27T05:02:38Z
Az1568
66
Import from WP, current code is outdated.
14877
javascript
text/javascript
// [[File:Wikipedia_Gadget-popups.js]] Pop-ups imported from enWP
mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-popups.js&action=raw&ctype=text/javascript' );
7po4i1bmkow5ey6yzmipjizjgu8v77i
14878
14877
2026-08-01T17:26:44Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-navpop.js]] पासून ५ आवर्तने आयात केलीत
14877
javascript
text/javascript
// [[File:Wikipedia_Gadget-popups.js]] Pop-ups imported from enWP
mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-popups.js&action=raw&ctype=text/javascript' );
7po4i1bmkow5ey6yzmipjizjgu8v77i
मिडियाविकी:Gadget-commons-file.js
8
4166
14879
2011-08-17T00:01:00Z
Darklama
2894
code
14879
javascript
text/javascript
$(document).ready( function() {
var ns = mw.config.get( 'wgNamespaceNumber' ),
path = (mw.config.get('wgServer').match(/^https/)
? 'https://secure.wikimedia.org/wikipedia/commons/wiki/'
: 'http://commons.wikimedia.org/wiki/'),
file_ns = mw.config.get( 'wgFormattedNamespaces' )['6'],
re = RegExp('^https?\:\/\/upload\.wikimedia\.org\/wikipedia\/commons\/');
if ( ns === 6 && !$('#ca-history').length && $('.sharedUploadNotice').length ) {
var title = mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) ),
lang = mw.config.get( 'wgUserLanguage' );
// Discussion link
$('#ca-talk').filter('.new').find('a').attr('href', function(i, val) {
return path + 'File_talk:' + title + '?uselang=' + lang;
});
// Edit link
$( document.getElementById('ca-edit') || document.getElementById('ca-viewsource') )
.find('a')
.attr('href', function(i, val) {
return path + 'File:' + title + '?uselang=' + lang + '&action=edit';
});
}
$('a.image').attr('href', function(i, val) {
if ( re.test( $(this).find('img').attr('src') ) ) {
return val.replace('/wiki/' + file_ns + ':', path + 'File:');
}
});
});
s7aahsjjjlpnn45wz1vlhps29jyxebp
14880
14879
2011-09-27T20:15:16Z
Darklama
2894
use protocol relative path
14880
javascript
text/javascript
$(document).ready( function() {
var ns = mw.config.get( 'wgNamespaceNumber' ),
path = '//commons.wikimedia.org/wiki/',
file_ns = mw.config.get( 'wgFormattedNamespaces' )['6'],
re = RegExp('^https?\:\/\/upload\.wikimedia\.org\/wikipedia\/commons\/');
if ( ns === 6 && !$('#ca-history').length && $('.sharedUploadNotice').length ) {
var title = mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) ),
lang = mw.config.get( 'wgUserLanguage' );
// Discussion link
$('#ca-talk').filter('.new').find('a').attr('href', function(i, val) {
return path + 'File_talk:' + title + '?uselang=' + lang;
});
// Edit link
$( document.getElementById('ca-edit') || document.getElementById('ca-viewsource') )
.find('a')
.attr('href', function(i, val) {
return path + 'File:' + title + '?uselang=' + lang + '&action=edit';
});
}
$('a.image').attr('href', function(i, val) {
if ( re.test( $(this).find('img').attr('src') ) ) {
return val.replace('/wiki/' + file_ns + ':', path + 'File:');
}
});
});
hv92ow6bx6z85cwji09k93cpi3uk2cj
14881
14880
2011-09-27T20:21:56Z
Darklama
2894
use protocol relative url
14881
javascript
text/javascript
$(document).ready( function() {
var ns = mw.config.get( 'wgNamespaceNumber' ),
path = '//commons.wikimedia.org/wiki/',
file_ns = mw.config.get( 'wgFormattedNamespaces' )['6'],
re = RegExp('^\/\/upload\.wikimedia\.org\/wikipedia\/commons\/');
if ( ns === 6 && !$('#ca-history').length && $('.sharedUploadNotice').length ) {
var title = mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) ),
lang = mw.config.get( 'wgUserLanguage' );
// Discussion link
$('#ca-talk').filter('.new').find('a').attr('href', function(i, val) {
return path + 'File_talk:' + title + '?uselang=' + lang;
});
// Edit link
$( document.getElementById('ca-edit') || document.getElementById('ca-viewsource') )
.find('a')
.attr('href', function(i, val) {
return path + 'File:' + title + '?uselang=' + lang + '&action=edit';
});
}
$('a.image').attr('href', function(i, val) {
if ( re.test( $(this).find('img').attr('src') ) ) {
return val.replace('/wiki/' + file_ns + ':', path + 'File:');
}
});
});
4ca16r3b12mmdn2l1d4b31ezip8ize5
14882
14881
2026-08-01T17:27:03Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-commons-file.js]] पासून ३ आवर्तने आयात केलीत
14881
javascript
text/javascript
$(document).ready( function() {
var ns = mw.config.get( 'wgNamespaceNumber' ),
path = '//commons.wikimedia.org/wiki/',
file_ns = mw.config.get( 'wgFormattedNamespaces' )['6'],
re = RegExp('^\/\/upload\.wikimedia\.org\/wikipedia\/commons\/');
if ( ns === 6 && !$('#ca-history').length && $('.sharedUploadNotice').length ) {
var title = mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) ),
lang = mw.config.get( 'wgUserLanguage' );
// Discussion link
$('#ca-talk').filter('.new').find('a').attr('href', function(i, val) {
return path + 'File_talk:' + title + '?uselang=' + lang;
});
// Edit link
$( document.getElementById('ca-edit') || document.getElementById('ca-viewsource') )
.find('a')
.attr('href', function(i, val) {
return path + 'File:' + title + '?uselang=' + lang + '&action=edit';
});
}
$('a.image').attr('href', function(i, val) {
if ( re.test( $(this).find('img').attr('src') ) ) {
return val.replace('/wiki/' + file_ns + ':', path + 'File:');
}
});
});
4ca16r3b12mmdn2l1d4b31ezip8ize5
मिडियाविकी:Gadget-UTCLiveClock.js
8
4167
14883
2013-12-19T12:13:22Z
Az1568
66
14883
javascript
text/javascript
mw.loader.load( '//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-UTCLiveClock.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400' );
r4xr7nk5qw6c9pm4tc3c1c88kkvh3qk
14884
14883
2026-08-01T17:28:22Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-UTCLiveClock.js]] पासून १ आवर्तन आयात केलीत
14883
javascript
text/javascript
mw.loader.load( '//www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-UTCLiveClock.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400' );
r4xr7nk5qw6c9pm4tc3c1c88kkvh3qk
मिडियाविकी:Gadget-collectionparser.js
8
4168
14885
2008-12-08T17:13:51Z
Whiteknight
3636
New page: // Adapted from User:Pediapress/collection-parser.js function putOutList(list) { var articleName, bookName = list[0]; var out = '== ' + bookName.replace(/_/g, " ") +' ==\n'; out += ...
14885
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var articleName, bookName = list[0];
var out = '== ' + bookName.replace(/_/g, " ") +' ==\n';
out += ':[[' + bookName.replace(/_/g, " ") + ']]\n';
for (var i = 1; i < list.length; i++) {
if (list[i] != null && list[i].match(/^http:/)) {
articleName = getArticleId(list[i], bookName);
out += ":[[" + bookName + "/" + articleName + "|" + articleName.replace(/_/g, " ") + "]]\n";
} else { //kick out empty headlines and those without links
if ((i < list.length-1 && list[i+1].match(/^http:/)) && list[i] != " ") {
out += ";" + list[i] + "\n";
}
}
}
out += "\n[[Category:Collections]]";
//print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(wgServer + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
if (w.attachEvent) {
w.attachEvent("onload", function() {refreshTextArea(w, out)});
} else if (window.addEventListener) {
w.addEventListener("load", function() {refreshTextArea(w, out)}, false);
} else {
w.document.addEventListener("load", function() {refreshTextArea(w, out)}, false);
}
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
function getArticleId(link, bookName) {
var linkList = link.split("/");
var isId = 0;
var output = "";
for (var i = 0; i < linkList.length; i++) {
if (isId == 0 && linkList[i] == bookName) {
isId++;
} else {
if (isId == 1) {
output += linkList[i];
isId++;
} else {
if (isId > 1) {
output += "/" + linkList[i];
}
}
}
}
return output;
}
//look for headlines and links
function parseContent () {
var bookLinks = initBooklinks();
var contDiv = document.getElementById('bodyContent');
var bodyElements = contDiv.getElementsByTagName("*");
var element;
for (var i = 0; i < bodyElements.length; i++) {
element = bodyElements[i];
if (element.nodeName.match(/^H\d/)) {
bookLinks[bookLinks.length] = getHeadingText(element);
} else {
if (element.nodeName == "A") {
if (isBookInternalLink(element)) {
bookLinks[bookLinks.length] = element.href;
}
}
}
}
return bookLinks;
}
//extracts the text from a headline
function getHeadingText(heading) {
if (heading.id == "siteSub") {
return " ";
} else {
var elements = heading.childNodes;
for (var i = 0; i < elements.length; i++) {
if (elements[i].nodeName == "SPAN" && elements[i].getAttribute("class") == "mw-headline") {
return elements[i].innerHTML;
}
}
}
return "chapter";
}
function initBooklinks() {
var bookName = wgPageName.split("/");
if (bookName.length > 1) {
return [bookName[0], "http://" + wgPageName];
} else {
return [wgPageName];
}
}
//checks links for targets inside the wikibook
function isBookInternalLink(link) {
var articleBaseURL = wgServer + wgArticlePath;
var bookName = wgPageName;
var articleURL = articleBaseURL.substring(0, articleBaseURL.length-2) + bookName.split("/")[0];
if (link.href.substring(0,articleURL.length) != articleURL || link.href.match(/#/) || link.href.match(/Print_version/i)) {
return false;
} else {
return true;
}
}
//added link has been clicked
function getCollection() {
var bookLinks = parseContent();
putOutList(bookLinks);
}
//add an link at thr right upper corner
function addPediapressLinks() {
if (wgNamespaceNumber == 0 || wgNamespaceNumber == 102 || wgNamespaceNumber == 110) {
addPortletLink ('p-personal', 'javascript:getCollection()', 'get collection');
}
}
addOnloadHook(addPediapressLinks);
fm58p8d7n1i0v3ggb0btkcau0y212sx
14886
14885
2010-12-17T14:22:39Z
Darklama
2894
started to make this work better with more skins and browsers
14886
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var pagename, bookname = list[0];
var out = '== ' + bookname.replace(/_/g, " ") +' ==\n:[[' + bookname.replace(/_/g, " ") + ']]\n';
for (var i = 1; i < list.length; i++) {
if ( list[i] != null && list[i].match(/^http:/) ) {
pagename = getArticleId(list[i], bookname);
out += ":[[" + bookname + "/" + pagename + "|" + pagename.replace(/_/g, " ") + "]]\n";
} else {
// kick out empty headlines and those without links
if ( (i < list.length-1 && list[i+1].match(/^http:/)) && list[i] != " " ) {
out += ";" + list[i] + "\n";
}
}
}
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(wgServer + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$j(w).load( function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
function getArticleId(link, bookname) {
var linkList = link.split("/");
var isId = 0;
var output = "";
for (var i = 0; i < linkList.length; i++) {
if (isId == 0 && linkList[i] == bookname) {
isId++;
} else if (isId == 1) {
output += linkList[i];
isId++;
} else if (isId > 1) {
output += "/" + linkList[i];
}
}
return output;
}
// look for headlines and links
function parseContent () {
var bookLinks = initBooklinks();
var contDiv = document.getElementById('bodyContent') || document.getElementById('article') || document.getElementById('content');
var bodyElements = contDiv.getElementsByTagName("*");
var element;
for (var i = 0; i < bodyElements.length; i++) {
element = bodyElements[i];
if (element.nodeName.match(/^H\d/)) {
bookLinks[bookLinks.length] = getHeadingText(element);
} else if (element.nodeName == "A" && isBookInternalLink(element)) {
bookLinks[bookLinks.length] = element.href;
}
}
return bookLinks;
}
//extracts the text from a headline
function getHeadingText(heading) {
if (heading.id == "siteSub") {
return " ";
} else {
var elements = heading.childNodes;
for (var i = 0; i < elements.length; i++) {
if (elements[i].nodeName == "SPAN" && elements[i].getAttribute("class") == "mw-headline") {
return elements[i].innerHTML;
}
}
}
return "chapter";
}
function initBooklinks() {
var bookName = wgPageName.split("/");
if (bookName.length > 1) {
return [bookName[0], "http://" + wgPageName];
} else {
return [wgPageName];
}
}
//checks links for targets inside the wikibook
function isBookInternalLink(link) {
var articleBaseURL = wgServer + wgArticlePath;
var bookName = wgPageName;
var articleURL = articleBaseURL.substring(0, articleBaseURL.length-2) + bookName.split("/", 1)[0];
if (link.href.substring(0,articleURL.length) != articleURL || link.href.match(/#/) || link.href.match(/Print_version/i)) {
return false;
} else {
return true;
}
}
// added link has been clicked
function getCollection() {
var bookLinks = parseContent();
putOutList(bookLinks);
}
// add an link at thr right upper corner
function addPediapressLinks() {
if (wgNamespaceNumber == 0 || wgNamespaceNumber == 102 || wgNamespaceNumber == 110) {
addPortletLink ('p-personal', 'javascript:getCollection()', 'get collection');
}
}
addOnloadHook(addPediapressLinks);
sgbjpg5b4nfw3cz6avlyr7w0vxwvrv0
14887
14886
2014-06-11T22:51:31Z
Darklama
2894
hopefully fixed while updating to replace deprecated things
14887
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(wgServer + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$(w).load( function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
lc1rtd5fwtqe9zx999l9op73ejwqm1h
14888
14887
2014-06-11T22:58:20Z
Darklama
2894
fix
14888
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(wgServer + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$(w).load( function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) !== -1 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
o0v3sr5o925u2cgo2czop11rhrohtjt
14889
14888
2014-06-11T23:00:29Z
Darklama
2894
fix
14889
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(wgServer + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$(w).load( function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) !== -1 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
3a4vi0bcsh5wtrxuk2tjv7vyg3nsrfk
14890
14889
2014-06-11T23:11:53Z
Darklama
2894
exclude anchor links
14890
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(wgServer + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$(w).load( function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) !== -1 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
8zjps1vj5a6y60q8tjs64pmq1z728zn
14891
14890
2014-06-11T23:24:15Z
Darklama
2894
+save book template to output
14891
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(wgServer + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$(w).load( function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) !== -1 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
1ezbi2nazacm23kfzr02q98u455q36v
14892
14891
2016-08-14T13:43:20Z
JackPotte
1965
/* top */JavaScript semi-auto reparation, because of the 2015 migrations using [[Project:AWB|AWB]]
14892
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$(w).load( function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) !== -1 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
lthgman86v9rzxgaw9s467buibwidci
14893
14892
2017-08-11T12:27:11Z
Krenair
1158
Maintenance: [[mw:RL/MGU]] / [[mw:RL/JD]] - Replaced .load event handler (removed in jQuery 3.0) [[phab:T169385]]
14893
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + wgUserName + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) !== -1 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
al1zyynhhqcddilx478yn3fop36tbzm
14894
14893
2021-02-07T02:16:28Z
Ladsgroup
1615
Maintenance: Replacing legacy global variable ([[phab:T72470]])
14894
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
function putOutList(list) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var pathRE;
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookURL = mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' ) );
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
bookURL = $.escapeRE(bookURL);
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add an link at thr right upper corner
function addPediapressLinks($content) {
if ( $.inArray( mw.config.get('wgNamespaceNumber'), [ 0, 102, 110 ] ) !== -1 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
bgbzbi5fjoyewd47p88us5gz80c7pf3
14895
14894
2024-12-17T16:12:07Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#CollectionParser_gadget_doesn't_work
14895
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
var bookURL = $.escapeSelector(mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' )));
var pathRE;
function putOutList(list) {
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add a link at the right upper corner
function addPediapressLinks($content) {
if ( mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 102 || mw.config.get('wgNamespaceNumber') == 110 ) {
$(mw.util.addPortletLink ('p-personal', '#', 'Get collection')).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
rbq43mbeu5tzqji5ptjxe8f9im273d8
14896
14895
2024-12-21T03:16:08Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#CollectionParser_gadget_doesn't_work
14896
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
var bookURL = $.escapeSelector(mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' )));
var pathRE;
function putOutList(list) {
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add a link at the right upper corner
function addPediapressLinks($content) {
if ( mw.config.get('wgArticleId') && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 102 || mw.config.get('wgNamespaceNumber') == 110) ) {
$(mw.util.addPortletLink ('p-personal', '#', 'Get collection')).click(function() {
getCollection($content);
});
}
}
$(function() { addPediapressLinks() });
mw.hook('wikipage.content').add(addPediapressLinks);
aq7hp08t94hhy3wkt8wsp8goer4yxt5
14897
14896
2024-12-21T03:28:09Z
Leaderboard
2891
14897
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
var bookURL = $.escapeSelector(mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' )));
var pathRE;
function putOutList(list) {
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt("Name your collection:", "");
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each( $content.find(".mw-headline, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-headline') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
// add a link at the right upper corner
function addPediapressLinks($content) {
if ( mw.config.get('wgArticleId') && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 102 || mw.config.get('wgNamespaceNumber') == 110) ) {
$(mw.util.addPortletLink ('p-personal', '#', 'Get collection')).click(function() {
getCollection($content);
});
}
}
$(function() { addPediapressLinks() });
66ik2wzomrqgb1x4r5yd73m9gotu6rz
14898
14897
2024-12-21T05:13:11Z
Leaderboard
2891
14898
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
var bookURL = $.escapeSelector(mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' )));
var pathRE;
function putOutList(list) {
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt(`Name your collection (default: ${bookname})`, bookname);
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
else return;
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each($content.find(".mw-heading :header, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-heading') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
var collectionParserPortletLink = mw.util.addPortletLink ('p-personal', '#', 'Get collection', 'pediapress');
// add a link at the right upper corner
function addPediapressLinks($content) {
if ( mw.config.get('wgArticleId') && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 102 || mw.config.get('wgNamespaceNumber') == 110) ) {
$(collectionParserPortletLink).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
7inmaow9m6amoot3cjyacmioe9s9wk2
14899
14898
2024-12-22T01:14:10Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#CollectionParser_gadget_doesn't_work
14899
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
var bookURL = $.escapeSelector(mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' )));
var pathRE;
function putOutList(list) {
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt(`Name your collection (default: ${bookname})`, bookname);
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
else return;
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each($content.find(".mw-heading :header, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-heading') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
var collectionParserPortletLink = mw.config.get('wgArticleId') > 0 ? mw.util.addPortletLink ('p-personal', '#', 'Get collection', 'pediapress') : null;
// add a link at the right upper corner
function addPediapressLinks($content) {
if ( mw.config.get('wgArticleId') && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 102 || mw.config.get('wgNamespaceNumber') == 110) ) {
$(collectionParserPortletLink).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
rhdezrhyurl2kkorfflaq40fprlpjg5
14900
14899
2024-12-30T02:59:33Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#CollectionParser_edit_request
14900
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
var bookURL = $.escapeSelector(mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' )));
var pathRE;
function putOutList(list) {
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt(`Name your collection (default: ${bookname})`, bookname);
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
else return;
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each($content.find(".mw-heading :header, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-heading') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
const showLink = mw.config.get("wgArticleId") > 0 && !mw.config.get("wgIsMainPage") && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 102 || mw.config.get('wgNamespaceNumber') == 110);
var collectionParserPortletLink = showLink ? mw.util.addPortletLink('p-personal', '#', 'Get collection', 'pediapress') : null;
// add a link at the right upper corner
function addPediapressLinks($content) {
if (showLink) {
$(collectionParserPortletLink).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
opq2k8jvql6vufyrqo4hextw73msjk9
14901
14900
2026-08-01T17:28:38Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-collectionparser.js]] पासून १६ आवर्तने आयात केलीत
14900
javascript
text/javascript
// Adapted from User:Pediapress/collection-parser.js
var bookURL = $.escapeSelector(mw.config.get('wgServer') + mw.util.getUrl( mw.config.get( 'wgBookName' )));
var pathRE;
function putOutList(list) {
var pagename, bookname = list[0].replace(/_/g, " ");
var out = '{{saved book}}\n' + '== ' + bookname +' ==\n:[[' + bookname + ']]\n';
pathRE = new RegExp( '^https?:' + bookURL + '\\/' );
list.shift();
$.each( list, function(i) {
if ( this.match(pathRE) ) {
pagename = this.replace(pathRE, '').replace(/_/g, " ");
out += ":[[" + bookname + "/" + pagename + "|" + pagename + "]]\n";
} else if ( list[i+1] && list[i+1].match(pathRE) && $.trim(this) !== "" ) {
// kick out empty headlines and those without links
out += ";" + this + "\n";
}
});
out += "\n[[Category:Collections]]";
// print the collectionmarkup into a textarea
var collectionName = prompt(`Name your collection (default: ${bookname})`, bookname);
if (collectionName) {
var w = window.open(mw.config.get('wgServer') + "/w/index.php?title=User:" + mw.config.get('wgUserName') + "/Collections/" + collectionName + "&action=edit");
$(w).on( 'load', function() { refreshTextArea(w, out); } );
}
else return;
}
function refreshTextArea(w, out) {
var txt = w.document.getElementById('wpTextbox1');
txt.value = out;
}
// look for headlines and links
function parseContent ($content) {
var bookLinks = [mw.config.get( 'wgBookName' )];
var pathRE;
pathRE = new RegExp( '^https?:' + bookURL + '$|^https?:' + bookURL + '\\/' );
$.each($content.find(".mw-heading :header, a"), function() {
var $this = $(this), val;
if ( $this.is('.mw-heading') ) {
bookLinks[bookLinks.length] = $this.html() || 'chapter';
} else if ( $this.is('a') && this.href.match(pathRE) && !this.href.match(/#/) ) {
bookLinks[bookLinks.length] = this.href;
}
});
return bookLinks;
}
// added link has been clicked
function getCollection($content) {
putOutList(parseContent($content));
}
const showLink = mw.config.get("wgArticleId") > 0 && !mw.config.get("wgIsMainPage") && (mw.config.get('wgNamespaceNumber') == 0 || mw.config.get('wgNamespaceNumber') == 102 || mw.config.get('wgNamespaceNumber') == 110);
var collectionParserPortletLink = showLink ? mw.util.addPortletLink('p-personal', '#', 'Get collection', 'pediapress') : null;
// add a link at the right upper corner
function addPediapressLinks($content) {
if (showLink) {
$(collectionParserPortletLink).click(function() {
getCollection($content);
});
}
}
mw.hook('wikipage.content').add(addPediapressLinks);
opq2k8jvql6vufyrqo4hextw73msjk9
साचा:Sane
10
4169
14910
2020-04-16T08:41:22Z
ShakespeareFan00
2900
Created page with "{{#if:{{{1|@@null@@}}}<!-- -->|{{#ifeq:{{{1|}}}||@@null@@<!-- -->|{{{1}}}}}<!-- Definite output value -->|@@null@@<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude>"
14910
wikitext
text/x-wiki
{{#if:{{{1|@@null@@}}}<!--
-->|{{#ifeq:{{{1|}}}||@@null@@<!--
-->|{{{1}}}}}<!-- Definite output value
-->|@@null@@<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
g5awy2g6u75ma27s09q081acph38sjp
14911
14910
2020-04-16T08:42:38Z
ShakespeareFan00
2900
14911
wikitext
text/x-wiki
{{#switch:{{{1|@@absent@@}}}<!--
-->|=@@empty@@<!--
-->|@@absent@@=@@absent@@<!--
-->|#default={{{1}}}<!--
-->}}
--><noinclude>{{documentation}}</noinclude>
sth27rffx62k2617ux1ko9dc6fhqfrt
14912
14911
2020-04-16T08:43:08Z
ShakespeareFan00
2900
14912
wikitext
text/x-wiki
{{#switch:{{{1|@@absent@@}}}<!--
-->|=@@empty@@<!--
-->|@@absent@@=@@absent@@<!--
-->|#default={{{1}}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
kw4eih43uhj6w4yxvcrcl4rkwhzw789
14913
14912
2026-08-01T17:28:39Z
QueerEcofeminist
1879
[[:en:Template:Sane]] पासून ३ आवर्तने आयात केलीत
14912
wikitext
text/x-wiki
{{#switch:{{{1|@@absent@@}}}<!--
-->|=@@empty@@<!--
-->|@@absent@@=@@absent@@<!--
-->|#default={{{1}}}<!--
-->}}<!--
--><noinclude>{{documentation}}</noinclude>
kw4eih43uhj6w4yxvcrcl4rkwhzw789
साचा:Saved book
10
4170
14914
2009-02-02T23:51:15Z
Didzun
3645
New page: ABRAHAM, Sir Edward Penley (1913- ) ADAMS, John Couch (1819-1892) ADANSON, Michel (1727- 1806) ADDISON, Thomas (1793-1860) ADRIAN, Edgar Douglas, Ist Baron (1889-1977) AGNESI, Maria G...
14914
wikitext
text/x-wiki
ABRAHAM, Sir Edward Penley (1913- )
ADAMS, John Couch (1819-1892)
ADANSON, Michel (1727- 1806)
ADDISON, Thomas (1793-1860)
ADRIAN, Edgar Douglas, Ist Baron (1889-1977)
AGNESI, Maria Gaetana (1718- 1799)
AIRY, Sir George Biddell (1801-1892)
AKI, Keliti (1930-)
ALBERTUS MAGNUS, St, Count of Bollstadt (c.1200-1280)
ALCMAEON (fl.520 BC)
ALFVEN, Hannes Olof Gosta (1908- )
ALHAZEN (Ibn al Haythem)(c.965- 1040)
AL-KHWARIZMI, Abu J'far Muhammad ibn Musa (c.800-850)
ALLEN, Sir Geoffrey (1928 - )
ALPHER, Ralph Asher(1921-)
ALTER, David (1807 - 1881)
ALTMAN, Sidney (1939 -)
ALTOUNYAN, Roger Edward Collingwood (1922-1987)
ALVAREZ,Luis walter (1911-1988)
AMONTONS, Guillaume (1663-1705)
AMPERE, Andre Marie (1775-1836)
ANAXAGORAS (c.500-428 BC)
ANAXIMANDER (c.611-546 BC)
ANDERASON, Philip Warren (1923-)
ANDERSON, Tempest (1846- 1913)
ANDREWS, Thomas (1813-1885)
ANFINSEN, Christian Boehmer (1916-)
APOLLONIUS OF PERGA (fl. 250 - 220 BC)
APPLETON, Sir Edward Victor (1892-1965)
ARBER, Werner (1929-)
ARCHIMEDES (c.287-212 BC)
ARGAND, Aime(1755-1803)
ARGAND, Jean-Robert (1768-1822)
ARISTARCHOAS OF SAMOS (fl. c.270 BC)
ARISTOTLE (384-322 BC)
ARMSTRONG, Henry Edward (1848 - 1937)
ARNOLD, Joseph (1782 - 1818)
ARP, Halton Christian (1927 -)
ARRHENIUS, Svante August (1859 - 1927)
ARTIN, Emil (1898 - 1962)
ASHBURNER, Michael (1942 - )
ASTBURY, William Thomas (1889 - 1961)
ASTON, Francis William (1877-1945)
ATANASOFF, John Vincent (1903 - )
ATIYAH, Sir Michael Francis (1929-)
AUER, Karl, Baron von Welsbach (1858-1929)
AUERBACH, Charlotte (1899-)
AUGER, Pierre Victor (1899-)
AVERROES, Ibn Rushd (1126-1198)
AVERY, Oswald Theodore (1877-1955)
AVOGADRO, (Lorenzo- Romano) Amedeo(Carlo)(1776-1856)
AXELROD, Julius (1912- )
AYRTON, Hertha, originally Phoebe Sarah Marks (1854-1923)
AYRTOM, William Edward (1847-1908)
BAADE, (Wilhelm Heinrich) Walter (1893-1960)
BABBAGE, Charles (1792-1871)
BACON, Francis, Baron Verulam of Verulam Viscount St. Albans (1561-1626)
BACON, Roger (c. 1214- 1292)
BAEKELAND, Leo Hendrik (1863-1944)
BAER, Karl Ernst Ritter von (1792-1876)
BAILEY, Liberty Hyde (1858-1954)
BAILY, Francis (1774-1844)
BAIRD, John Logie (1888-1946)
BAKER, Herbert Brereton (1862-1935)
BALFOUR, Francis Maitland (1851-1882)
BALL, John (1818-1889)
BALL, Sir Robert Staywell (1840-1913)
BALTIMORE, David (1938- )
BANACH, Stefan (1892-1945)
BANKS, Sir Joseph (1744-1820)
BANTING, Sir Frederick Grant (1891-1941)
BARANY, Robert (1876-1936)
BARCROFT, Sir Joseph (1872-1947)
BARDEEN, John (1908- )
BARNARD, Christian Neethling (1922- )
BARNARD, Edward Emerson (1857-1923)
BARROW, Isaac (1630-1677)
BARTHOLIN, Caspar, the Younger (1655-1738)
BARTHOLIN, Erasmus (1625-1698)
BARTOM, Sir Derek Harold Richard(1918-1998)
BARTRAM, John (1699-1777)
BASOV, Nikolai Gennadiyevich (1922-)
BASSI, Agnostino Maria (1773-1856)
BATES, Henry Walter (1825-1892)
BATESON, William (1861-1926)
BATTERSBY, Sir Alan Rushton (1925-)
BAYLISS, Sir William Maddock (1860-1924)
BEADLE, George Wells (1903-1989)
BEAUMONT, William (1785-1853)
BECQUEREL, Alexandre-Edmond(1820-1891)
BECQEUREL, Antoine Henri (1852-1908)
BEDNORZ, (Johannes) Beorg (1950-)
BEHRING, Emil von (1854-1917)
BELL, Alexander Grahm (1847-1922)
BELL, Sir Charles (1774-1842)
BELL, Thomas (1792-1880)
BELL BURNELL, (Susan) Jocelyn, nee Bell (1943-)
BENACERRAF, Baruj (1920-)
BENIOFF, Victor Hugo (1899-1968)
BENTLEY, Charles Raymond (1929-)
BENZER, Seymour (1929-)
BERG, Paul (1926-)
BERGERON, Tor Harold Percival (1891-1977)
BERGSTROM, Sune Karl (1916-)
BERNAL, John Desmond (1901-1971)
BRNARD, Claude (1813-1878)
BERNOULLI, David (1700-1782)
BERNOULLI, Jacques or Jakob (1654-1705)
BERNOULLI, Jean or Johann (1667-1748)
BERNSTEIN, Richard Barry (1923-1990)
BERTHELOT, ( Pierre Eugene) Marcellin (1827-1907)
BERTHOLLET, Claude Louis, Comte de (1749-1822)
BERZELIUS, Jons Jacob (1779-1848)
BEST, Charles Herbert (1899-1978)
BHABHA, Homi Jahangir (1909-1966)
BISHOP, (John) Michael (1936- )
BLACK, Sir James Whyte (1924- )
BLACK, Joseph (1728-1799)
BLALOCK, Alfred (1899-1964)
BLOEMBERGEN, Nicolaas (1925- )
BLUMBERG, Baruch Samuel (1925- )
BODMER, Sir Walter Fred (1936- )
BOERHAAVE, Hermann (1668-1738)
BOHR, Niels Henrik David (1885-1962)
BOK, Bart Jan (1906-1983)
BOLTZMANN, Ludwig (1844-1906)
BONDI, Sir Hermann (1919- )
BORDET, Jules Jean Baptiste Vincent (1870-1961)
BORN, Max (1882-1970)
BOSE, Sir Jagadis Chandra (1858-1937)
BOSE, Satyendra Nath (1894-1974)
BOWDITCH, Henry Pickering (1840-1911)
BOYLE, Robert (1627-1691)
BRAGG, Sir (Willam) Lawrence (1890-1971)
BRAHE, Tycho (1546-1601)
BRIDGMAN, Percy Williams (1882-1961)
BRIGHT,Richard (1789-1858)
BRITTEN, Roy John (1919-)
BROCA, (Pierre) Paul (1824-1880)
BROWN, Michael Stuart (1941-)
BROWN-SQUARD, Edouard (1817-1894)
BRUNEL, Isambard Kingdom (1806-1859)
BUNSEN, Robert Wilhelm (1811-1899)
BURKITT, Denis Parsons (1911-1993)
BURNET, Sir(Frank) Macfarlane (1899-1985)
CALVIN, Melvin (1911-)
CAMPBELL, William Wallace (1862-1938)
CANTOR, Charles Robert (1942-)
CARLSON, Chester Floyd (1906-1968)
CARSON, Hampton Lawrence (1914-)
CAVENDISH, Henry (1731-1810)
CELCIUS, Anders (1701-1744)
CELSUS, Aulus Cornelius (First century AD)
CHAGAS, Carlos Ribeiro Justiniano (1879-1934)
CHAMBERLAIN, Owen (1920-)
CHANDRASEKHAR, Subrahmanyan (1910-)
CHAPMAN, David Leonard (1869-1958)
CHARCOT, Jean Martin (1825-1893)
CHARNLEY, Sir John (1911-1982)
CHORLEY, Richard John (1927-)
CLARKE, Bryan Campbell (1932-)
COCKERELL, Sir Christopher Sydney (1910-)
COHEN, Stanley (1922-)
COPERNICUS, Nicolas (1473-1543)
CORI, Carl Ferdinand (1806-1984)
CORNFORTH, Sir John Warcup (1917-)
COULOMB, Charles Augustin de (1736-1806)
COURNAND, Andre Frederic (1895-1988)
CRICK, Francis Harry Compton (1916-)
CRILE, George Washington (1864-1943)
CURIE, Marie (originally Marya), nee Sklodowska (1867-1934)
CURIE, Pierre (1859-1906)
DAGUERRE, Louis Jacques Mande (1789-1851)
DALE, Sir Henry Hallett (1875-1968)
DALTON, John (1766-1844)
DARWIN, Charles Robert (1809-1882)
DAVY, Sir Humphry (1778-1829)
DAWKINS, (Clinton) Richard (1941-)
DE DUVE, Christian Rene (1917-)
DESCARTES, Rens (1596 - 1650 )
DE VERIES, Hugo Marie (1848-1935)
DIOPHANTIUS (fl. third century)
DIRAC, Paul Adrien Maurice (1902-1984)
DOLLOND , John (1706-1761)
DONDERS , Franciscus Cornelis (1818-1889)
DOPPLER , Christian Johann(1803-1853)
DOTY, Paul Mead (1922-)
DRIESCH, Hans Adolf Eduard (1867- 1941)
DU BOIS-REYMOND, Emil Heinrich (1818-1896)
DUBOS, Rene Jules (1901-1982)
DUCHENNE, Guillaume Benjamin Amand (1805-1875)
DULBECCO, Renato (1914-)
DYSON, Freeman John (1923-)
ECCLES, Sir John, Carew (1903-)
EDDINGTON , Sir Arthur Stanley (1882-1944)
EDELMAN, Gerald Maurice (1929-)
EDISON, Thomas Alva(1847-1931)
EDWARDS , Robert Geoffrey(1925-)
EHRLICH, Paul (1854-1915)
EINSTEIN , Albert (1879-1955)
EINTHOVEN , Willem (1860-1927)
EMPEDOCLES (fl.c.450 BC)
ERATOSTHENES , (c.276 - 194 BC)
EUCLID (fl.300 BC)
EULER, Leonhard (1707-1783)
FAHRENHEIT, (Gabriel) Daniel (1686-1736)
FAIRCLOUGH, John Whitaker (1930-)
FARADAY , Michael (1791-1867)
FERMAT, Pierre de (1601-1665)
FERMI, Enrico(1901-1954)
FISCHER, Emil Hermann (1852-1919)
FISCHER, Hans(1881-1945)
FLEMING , Sir Alexander (1881-1955)
FLEMMING , Walther (1843-1905)
FLOREY, Howard Walter, Baron Florey of Adelaide and Marston (1898-1968)
FLORY, Paul John (1910-1985)
FOUCAULT, Jaen Bernard Leon (1819-1868)
FOURIER, Jean Baptiste Joseph Baron de (1768-1830)
FRANKLIN , Benjamin(1706-1719)
FEYNMAN, Richard (1918-1988)
GABOR, Dennis (1900-1979)
GAJDUSEK, Daniel Carleton (1923-)
GALEN (Claudius Galenus ) (c.130- c.201 AD)
GALILEO(Galileo Galilei)(1564-1642)
GALTON , Sir Francis (1822-1911)
GALVANI, Luigi (1737-1798)
GARROD, Sir Archibald Edward (1857-1936)
GAY-LUSSAC , Joseph Louis (1778-1850)
GEER, Baron Gerhard Jacob de (1858-1943)
GEHRING, Walter Jacob (1939-)
GEIGER , Hans Wilhelm (1882- 1945)
GILBERT , or GYLBERDE, William (1544-1603)
GMELIN , Leopold (1788-1853)
GOLDSTEIN , Joseph Leonard (1940-)
GOLGI , Camillo (1843 - 1926)
GOODALL, Jane(1934-)
GOULD, Stephen Jay(1941-)
GRAAF, Regnier de (1641-1673)
GRANIT, Ragnar Arthur(1900-)
GREEN, Michael Boris (1945-)
GROTHENDIECK, Alexandre (1928-)
GUERICKE, Otton von (1602-1686)
GURDON, John Bertrand (1933-)
HABER, Fritz (1868-1934)
HAFFKINE, Waldemar Mordecai Wolff (1860-1930)
HAHNEMANN, (Christian Friedrich) Samuel (1755-1843)
HALLEY, Edmond (1656-1742)
HAMILTON, Sir William Rowan (1805-1865)
HARDY, Godfrey Harold (1877-1947)
HARINGTON, Sir Charles Robert (1897-1972)
HARVEY, William (1578-1657)
HASSEL, Odd (1897-1981)
HAUPTMAN, Herbert Aaron (1917 -)
HAWKING, Stephen William (1942-)
HAWORTH, Sir (Walter) Norman (1883-1950)
HELMHOLTZ, Hermann von (1821-1894)
HERACLEIDES OF PONTUS AND EKPHANTUS (c.338-c.315 BC)
HERSCHEL, Caroline Lucretia (1750-1848)
HERSHCHEL, Sir John Frederick William (1792-1871)
HERSHEL, Sir (Frederick) William (1738-1822)
HERSHEY, Alfred Day (1908 -)
HERZBERG, Gerhard (1904-)
HEYWOOD, Vernon Hilton (1927-)
HILBERT, David (1862-1943)
HIPPARCHOS, (c.180-125 BC)
HIPPOCRATES, (c. 460-377 or 359 BC)
HIRST, Sir Edmund Langley (1898-1975)
HODGKIN, Dorothy Mary, nee Crawford (1910- )
HOFFMANN, Roald (1937- )
HOLLEY, Robert William (1922-)
HOPWOOD, David Alan (1933-)
HORROCKS, Jeremiah (1619-1641)
HOUNSFIELD, Sir Godfrey Newbold (1919-)
HOUSSAY, Bernardo Alberto (1887-1971)
HOYLE, Sir Fred (1915-)
HUBBLE, Edwin Powell (1889-1953)
HUDSON, William (1734-1793)
HUGGINS, Charles Brento (1901-)
HUNTER, John (1728-1793)
HUXLEY, Sir Andrew Fielding (1917-)
HUXLEY, Sir Julian Sorell (1887-1975)
HYPATIA (c. 370-415 AD)
JAKSON, Benjamin Daydon (1846-1927)
JACOB, Fracois (1920- )
JANSSEN, (Pierre) Jules Cesar (1824-1907) .
JOHANSON, Donald Carl (1943-)
JAHNAVI-PRASAD, Ashoka (1955-)
JOLIOT-CURIE, Frederic, originally Jean-Frederic Joliot (1900-1958)
JOLIOT-CURIE, Irene, nee Curie (1897-1956)
JOULE, Jarnes Presscott (1818-1889)
KARRER, Paun (1889-1971)
KATZ, Sir Bernard (1911-)
KELVIN, William Thomson 1st Baron of Largs (1824-1907)
KENDALL, Edward Calvin (1886-1972)
KENDREW, Sir Jonh Cowdery (1917-1997)
KEPLER, Johannes (1571-1630)
KERR, Roy Patrick (1934- )
KHORANA, Har Gobind (1922-)
KILBURN, Tom (1921-)
KIRWAN, Richard (1733-1812)
KLINGENSTIERNA, Samuel (1698-1765)
KLUG, Sir Aaron (1926-)
KNOPOFF, Leon(1925-)
KOCH, (Heinrich Hermann) Robert(1843-1910)
KOCHER, Emil Theodor(1841-1917)
KOHLER, Georges Jean Franz (1946-)
KLOFF , Willem Johan (1911-)
KOLMOGOROV, Andrei Nikolaevich (1903-1987)
KORNBERG, Arthur (1918-)
KOSSEL, Albrecht (1853-1927)
KREBS, Edwin Gerhard (1918-)
KREBS, Sir Hans Adolf (1900-1981)
KROTO,Harold Walter, (1939-)
KUHN, Richard (1900-1967)
KUMMER, Ernst Eduard(1810-1893)
LACK, David (1910-1973)
LAENNEC, Rene Theophile Hyacinthe (1781-182) LAGRANGE,Joseph(1736-1813)
LAMARCK, Jean-Baptiste Pierre Antoine de Monet, , Chevalier de (1744-1829)
LAMB, Willis Eugene (1913-)
LANDAU, Lev Davidovich (1908-1968)
LANDSTEINER, Karl (1868-1943)
LAPLACE, Pierre Simon , Marquis de (1749-1827)
LARTET, Edouard Arman Isidore Hippolyte (1801-1871)
LAVOISIER , Antoine Laurent (1743-1794)
LAWS , Richard Maitland (1926-)
LAWTON, John Hartley (1943-)
LEAKEY, Mary Douglas, nee Nicol (1913-)
LE BEL, Joseph Achille (1847-1930)
LE CHATELIER, Hend Louis (1850-1936)
LEDER, Philip (1934-)
LEDERBERG, Joshua (1925-)
LEE, Taung-Dao(1926-)
LEEUWENHOEK, Anton van(1632-1723)
LEHMANN, Inge(1888-1993)
LEIBNIZ, Gottfried Wilhelm(1646-1716)
LEISHMAN, Sir William Boog(1865-1926)
LELOIR, Luis Frederico (1906-)
LEMAITRE, Georges Henri (1894-1966)
LENZ, Heinrich Friedrich Emil(1804-1865)
LEUCKART, Kari George Friedrich Rudolf(1822-1898)
LEVI-MONTALCINI , Rita (1909-)
LEWIS, Sir Thomas (1881-1945)
LEWONTIN, Richard Charles (1929-)
LIE, (Marius) Sophus(1842-1899)
LIND, James(1716-1794)
LINDERSTROM-LANG, Kaj Ulrik(1896-1959)
LINNAEUS, Carolus (Carl von Linne) (1707-1778)
LIPPIVIANN, Gabriel Jonas (1845-1921)
LIPSCOMB, William Nunn (1919- )
LISTER, Joseph, Lord (1827-1912)
LOCKYER, Sir (Joseph) Norman (1836-1920)
LOEB, Jacques (1859-1924)
LOEWI, Otto (1873-1961)
LONGUET-HIGGINS, (Hugh) Christopher (1923-)
LORENZ, Konrad Zacharias (1903-1989)
LORENZ, Ludwig Valentin (1829-1891)
LOWRY, (Thomas) Martin (1874-1936)
LUBBOCK, Sir John, 1st Baron Avebury (1834-1913)
LUDWING, Karl Friedrich Wilhelm (1816-1895)
LURIA, Salvador Edward (1912-1991)
LYAPUNOV, Aleksandr Mikhailovich (1857-1918)
LYNEN, Feodor Felix Konrad (1911-1979)
LYON, Mary Frances (1925- )
MACH, Ernst (1838-1916)
MACHNAMARA, Dame (Annie) Jean (1890-1968)
MAGNUS, Heinrich Gustav (1802-1870)
MALPIGHI, Marcello (1628-1694)
MALTHUS, Thomas Robert (1766-1834)
MANSON, Sir Patrick (1844-1922)
MARCONI, Gugiielmo, Marchese (1874-1937)
MARIOTTE, Edme(c.1620-1684)
MARSH, James(1789-1846)
MARSH, Othniel Charles(1831-1899)
MASON, Sir (Basil) John(1923-)
MATUYAMA, Motonori (1884-1958)
MAXWELL, James Clerk(1831-1879)
MAYALL, Nicholas Ulrich(1906-)
MAYOW, John (1640-1679)
McCLINTOCK, Barbara (1902-1992)
McCREA, Sir William Hunter (1904-)
McLAREN, Anne Laura (1927-)
McMILLAN, Edwin Mattison (1907-1991)
MEDAWAR,Sir Peter Brian (1915-1987)
MEITNER, Lise(1878-1968)
MELVILL, Thomas(1726-1753)
MENDEL,Gregor Johann(1822-1884)
MENDELEYEV, Dmitri Ivanovich(1834-1907)
MERRIFIELD, (Robert) Bruce(1921-)
METCHNIKOFF, Elle, originally Ilya Ilyich(1845-1916)
MICHAELSON, Sidney(1925-1991)
MICHEL, Hartmut(1948-)
MICHELSON, Albert Abraham(1852-1931)
MICHIE, Donald(1923-)
MIDGLEY, Thomas Jr(1889-1944)
MILANKOVITCH, Milutin(1879-1958)
MILLER, Stanley Lloyd(1930-)
MILLIKAN, Robert Andrews (1868-1953)
MILNE, John(1859-1913)
MILSTEIN, Cesar(1927-)
MINKOWSKI, Hermann(1864-1909)
MINOT, George Richards (1885-1950)
MITCHELL, Maria(1818-1889)
MITCHELL, Peter Dennis(1920-1992)
MOBIUS, August Ferdinand (1790-1868)
MOHL, Hugo von (1805-1872)
MOISSAN, (Ferdinand Frederic) Henri (1852-1907)
MONOD, Jacques Lucien (1910-1976)
MONRO, Alexander (1697-17667)
MONTAGNIER, Luc (1932-)
MORGAGNT, Giovanni Battista (1682-1771)
MORGAN, Thomas Hunt (1866-1945)
MORISON, Robert (1620-1683)
MOSELEY, Harry (Henry Gwyn Jeffroys) (1887-1915)
MOTT, Sir Nevill Francis (1905-)
MUOLLER, (Karl) Alex (ander) (1927-)
MULLER, Johannes Peter (1801-1858)
MULLER, Paul Hermann (1899-1965)
MULLIS, Kary Banks (1944-)
MUNK, Walter Heinrich (1917-)
MURRAY, Joseph Edward (1919-)
NAGELI, Karl Wilhelm von (1817-1891)
NAPIER, John (1550-1617)
NATHANS, Daniel (1928-)
NATTA, Giulio (1903-1979)
NAVIER, Claude Louis Marle Henri (1785-1836)
NEEDHAM, Joseph (1900-)
NEEL, Louis Eugene Felix (1904-)
NEHER, Erwin (1944-)
NEWLANDES, John Alexander Reina (1837-1898)
NEWTON, Alfred (1829-1907)
NEWTON, Sir Issac (1642-1727)
NICHOLSON, (Edward) Max (1904-)
NICOL, William (1768-1851)
NICOLLE, Charles Jules Henri (1866-1936)
NIEPCE, Joseph Nicephore (1765-1833)
NIEUWLAND, Julius Arthur (1878-1936)
NIRENBERG, Marshall Warren (1927-)
NOBEL, Alfred (1833-1896)
NOETHER, (Amalie) Emmy (1882-1935)
NOGUCHI, Hideyo (1876-1928)
NOLLET, Jean Antoine (1700-1770)
NOROYI, Ryoji (1937-)
NORRISH, Ronald George Wreyford (1897-1978)
NORTHROP, John Howard (1891-1987)
NOSSAL, Sir Gustav Joseph Victor (1931-)
NOYCE, Robert Norton (1927-1990)
NUTTALL, Thomas (1786-1859)
OATLEY, Sir Charles (1904-)
OCHOA, Severo (1905-)
ODUM, Eugene Pleasants (1913-)
OHM, Georg Simon (1787-1854)
OKAZAKI, Reiji (1930-1975)
OLDHAM, Richard Dixon (1858-1936)
OLIPHANT, Sir Mark (Marcus Laurence Elwin) (1901-)
OLSEN, Kenneth Harry (1926-)
ONSAGER, Lars (1903-1976)
OORT, Jan Hendrik (1900-1992)
OPPENHEIMER, (Julius) Robert (1904-1967)
OSBORN, Henry Fairfield (1857-1935)
OSLER, Sir William (1849-1919)
OSTWALD, (Friedrich) Wilhelm (1853-1932)
OTTO, Nikolaus August (1832-1891)
OWEN, Sir Richadr (1804-1892)
OXBURGH, Sir (Ernest) Ronald (1934-)
PALADE, George Emil (1912-)
PANDER, Christian Heinrich (1974-1865)
PAPANICOLAOU, George Nicholas (1883-1962)
PAPPUS OF ALEXANDRIA (fourth century)
PARACELSUS, (a name coined for himself by Theophrastus Bombastus von Hohenhelm) (1493-1541)
PARDEE, Arthur Beck (1921-)
PARKES, Alexander (1813-1890)
PASCAL, Blaise (1623-1662)
PASTEUR, Louis (1822-1895)
PAUL, Wolfgang (1913-)
PAULING, Linus Carl (1901-1997)
PAVLOV, Ivan Petrovich (1849-1936)
PEANO, Giuseppe (1858-1932)
PECQUET, Jean (1622-1674)
PEDERSEN, Charles (1904-1990)
PEIRCE, Charles Sanders (1839-1914)
PELL, John (1610-1685)
PENFIELD, Wilder Graver (1891-1976)
PENROSE, Lionel Sharples (1898-1972)
PENZIAS, Aron Allan (1933-)
PERKIN, William Henry Jr (1860-1929)
PERKIN, Sir William Henry Sr (1838-1970)
PERRIN, Jean Baptiste (1870-1942)
PERSOON, Christiaan Hendrik (1761-1836)
PERT, Candace, nee Beebe (1915-)
PERUTZ, Max Ferdinand (1914-)
PFEFFER, Wilhelm Friedrich Philipp (1845-1920)
PFEIFFER, Richard Friedrich Johannes (1858-1945)
PIAZZI, Giuseppe (1746-1826)
PICCARD, Auguste Antoine (1884-1962)
PICKERING, Sir George White (1904-1980)
PICTET, Marc-Auguate (1752-1825)
PICTET, Raoul Pierre (1846-1929)
PINCUS, Gregory Goodwin (1903-1967)
PLANCK, Max Karl Ernst Ludwing (1858-1947)
PLAYFAIR, Lyon, 1st Baron Playfair (1819-1898)
PLINY, Galus Plinius Secundus, known as the "the Elder" (AD 23-79)
POINCARE, Jules Henri (1854-1912)
POISSON, Simeon Denis (1781-1840)
POLANYI, Michael (1891-1976)
PONCELET, Jean Victor (1788-1867)
POPE, Sir William Jackson (1870-1939)
POPOV, Aleksander Stepanovich (1859-1905)
PORTA, Giovanni Battista delta (1535-1615)
PORTER, George, Baron Porter of Luddenham (1920-)
PORTER, Rondey Robert (1917-1985)
POWELL, John Wesley (1834-1902)
PRAIN, Sir David (1857-1944)
PREGL, Fritz (1869-1944)
PRELOG, Vladimir (1906-1998)
PRESTWICH, Sir Joseph (1812-1896)
PRIESTLEY, Joseph (1733-1804)
PRINGLE, Sir John (1707-1782)
PROKHOROV, Alexander Mikhailovich (1916-)
PROUST, Joseph Louis (1754-1826)
PTASHNE, Mark Steven (1940-)
PTOLEMY, (Claudius Ptolemaeus) (c. AD 90-168)
PURKINJE, or PURKYNE, Jan Evangelista (1787-1869)
PYTHAGORAS (sixth century BC)
QUASTEL, Juda Hirsch (1899-1987)
RAINWATER, (Leo) James (1917-)
RAMAN, Sir Chandrasekhara Venkata (1888-1970)
RAMANUJAN, Srinivas (1887-1920)
RAMON Y CAJAL, Santiago (1852-1934)
RAMSAY, Sir William (1852-1916)
RAMSEY, Frank Plumpton (1903-1930)
RAMSEY, Norman (1915-)
RANKINE, William John Macquorn (1820-1872)
RAOULT, Francois Marie (1830-1901)
RAPHAEL, Ralph Alexander (1921-)
RAY, John (1627-1705)
RAYLEIGH, John William Strutt, 3rd Baron (1842-1919)
REAUMUR, Rene Antoine Ferchault de (1683-1757)
RECORDE, Robert (c.151-1558)
REES, Sir Martin John (1942-)
REGIOMONTANUS, (originally Johannes Muller) (1436-1476)
REICHENBACH, Karl, Baron von (1788-1869)
REMAK, Robert (1815-1865)
REYNOLDS, Osborne (1842-1912)
RICHARDS, Dickinson Woodruff (1895-1973)
RICHARDS, Theodore William (1868-1928)
RICHET, Charles Robert (1850-1935)
RICHTER, Charles Francis (1900-1985)
RICHTER, Jeremias Beniamin (1762-1807)
RIEMANN, (George Friedrich) Bernhard (1826-1866)
RIESZ, Frigyes (Frederic) (1880-1956)
RIGHI, Augusto (1850-1920)
RITTER, Johann Wilhelm (1776-1810)
ROBBINS, Frederick Chapman (1916-)
ROBERTS, Richard (1943-)
ROBERTSON, Howard Percy (1903 -1961)
ROBIN, Gordon de Quetteville (1921)
ROBINS, Benjamin (1707-1751)
ROBINSON, Sir Robert (1886-1975)
ROEMER, Olaus (1644-1710)
ROHRER, Heinrich (1933-)
ROME DE L'ISLE , Jean-Baptise Louis (1736-1790)
ROMER, Alfred Sherwood (1894-1973)
RONALDS, Sir Francis (1788-1873)
RONTGEN, Wilhelm Konrad von (1845-1923)
ROSCOE, Sir Henry Enfield (1833-1915)
ROSE, William Cumming (1887-1984)
ROSKY, Herbert (1935-)
ROSS, Sir Ronald (1857-1932)
ROSSE, William Parsons, 3rd Earl of (1800-1867)
ROSSI, Bruno (1905-)
ROTHLISBERGER, Hans (1923-)
ROUS, (Francis) Peyton (1879-1970)
ROUX, (Pierre Paul) Emile (1853-1933)
ROUX, Wilhelm (1850-1924)
ROXBURGH, William (1751-1815)
RUBBIA, Carlo (1934-)
RUBIN, Gerald Mayer (1950-)
RUBNER, Max (1854-1932)
RUDBECK, Olof (1630-172)
RUMFORD, Benjamin Thompson, Count (1753-1814)
RUNGE, Friedlieb Ferdinand (1975-1867)
RUSKA, Ernst August Friedrich (1906-1988)
RUSSEL, Bertrand Arthur William, 3rd Earl Russell (1872-1970)
RUSSELL, Sir Frederick Stratten (1807-1984)
RUSSELL, Henry Norris (1877-1957)
RUSSELL, John Scott (1802-1882)
RUTHERFORD, Ernest, 1st Baron Rutherford of Nelson (1871-1937)
RUZICKA, Leopold (1887-1976)
RYDBERG, Johannes Robert (1854-1919)
RYLE, Sir Martin (1918-1984)
SABATIER, Paul (1854-1941)
SABIN, Albert Bruce (1906-1993)
SABINE, Sir Edward (1788-1883)
SABINE, Wallace Clement Ware (1868-1919)
SACHS, Julius von (1832-1897)
SAGAN, Carl Edward (1934-)
SAHA, Meghnad (1894-1956)
SAINTE-CLAIRE DEVILLE, Hanri Etienne (1818-1881)
SAKHAROV, Andrei Dimitrievich (1921-1989)
SAKMANN, Bert (1942-)
SALAM, Abdus (1926-1998)
SALISBURY, Edward James (1886-1978)
SALIBURY, originally MARKHAM, Richard Anthony (1761-1819)
SALK, Jonas Edward (1914-)
SAMUELSSON, Benqt Ingemar (1934-)
SANDAGE, Allan Rex (1926-)
SANDERS, Howard Lawrence (1921-)
SANGER, Frederick (1918-)
SARS, Michael (1805-1869)
SAUSSURE, Horace Benedict de (1740-1799)
SAVART, Felix (1791-1841)
SAYERS, James (1912-)
SCHALLY, Andrew Victor (1926-)
SCHAUDINN, Fritz Richard (1871-1906)
SCHAWLOW, Arthur Leonard (1921-)
SCHEELE, Carl Wilhelm (1742-1786)
SCHEUTZ, Pehr George (1785-1873)
SCHIAPARELLI, Giovanni Virginio (1835-1910)
SCHIKARD, Wilhelm (1592-1635)
SCHIMPER, Andreas Franz Wilhelm (1856-1901)
SCHIMPER, Karl (or Carl) Friedrich (1803-1867)
SCHIMPER, Wilhelm Philipp (1808-1880)
SCHMIDT, Bernhard Voldemar (1879-1935)
SCHMIDT, Jonannes (1877-1933)
SCHMIDT, Maarten (1929-)
SCHOENHEIEMER, Rudolf (1898-1941)
SCHONBEIN, Christian Friedrich (1799-1868)
SCHRIEFFER, John Robert (1931-)
SCHROCK, Richard (1942-)
SCHRODINGER, Erwin (1887-1961)
SCHULTZE, Max Johann Sigismund (1825-1874)
SCHUSTER, Sir Arthur (1851-1934)
SCHWANN, Theodor (1810-1882)
SCHWARTZ, Melvin (1932-)
SCHWARZ, Harvey Fisher (1905-1988)
SCHWARSCHILD, Karl (1873-1916)
SCHWEIGGER, Johann Salomo Christoph (1779-1857)
SCHWINGER, Julian (1918-)
SCORESBY, William (1789-1857)
SEABORG, Glen Theodore (1912-)
SECHHI, Angelo (1818-1878)
SEDGWICK, Adam (1785-1873)
SEEBECK, Thomas Johann (1770-1831)
SEFSTROM, Nils Gabriel (1765-1829)
SEGRE, Emilio (1905-1989)
SELYE, Hans Hugo Bruno (1907-1982)
SEMENOV, Nikolai Nikolaevich (1896-1986)
SEMMELWEIS, Ignaz Philipp (1818-1865)
SENEBIER, Jean (1742-1809)
SERRE, Jean-Pierre (1926-)
SERVETUS, Michael (1511-1553)
SEWARD, Sir Albert Charles (1863-1941)
SEYFERT, Carl Keenan (1911-)
SHANNON, Claude Elwood (1916-)
SHAPLEY, Harlow (1885-1972)
SHARP, Phillip Allen (1944-)
SHARPEY-SCHAFER, Sir Edward (1850-1935)
SHARPLESS, (Karl) Barry (1941-)
SHEN KUA (1031-1095)
SHEPARD, Francis Parker (1897-1985)
SHEPPARD, Philip Macdonald(1921-1976)
SHERMAN, Henry Clapp (1875-1955)
SHERRINGTON, Sir Charles Scott (1857-1952)
SHKLOVSKY, Josef Samuilovich (1916-1985)
SHOCKLEY, William Bradford (1910-1989)
SIBTHORP, John (1758-1796)
SIDGWICK, Nevil Vincent (1873-1951)
SIEGBAHN, kai (1918-)
SIEGBAHN, Karl Manne Georg (1886-1978)
SIEMENS, (Ernst) Werner von (1816-1892)
SIEMENS, Sir (Charles ) William, originally (Karl) Wilhelm (1823-1883)
SIMPSON, George Gaylord(1902-1984)
SIMPSON, Sir James Young (1811-1870)
SIMSON, Robert (1687-1768)
SLIPHER, Vesto Melvin (1875-1969)
SMAGORINSKY, Joseph (1924-)
SMITH, Sir Grafton Elliot (1871-1937)
SMITH, Hamilton othanel (1931-)
SMITH, Henry John Stephen (1826-1883)
SMITH, Sir James Edward (1759-1828)
SMITH, (Ernst) Lester (1904-1992)
SMITH, Michael (1932-)
SMITH,Theobald (1859-1934)
SMITH, William (1769-1939)
SMITHSON , James Louis Macie (1765-1829)
SMYTH, Charles Piazzi (1819-1900)
SNELL, George Davis (1903-)
SNELL, Willebrod van Rolien, (Latin Snellius) (1580-1626)
SNOW, John (1813-1858)
SNYDER, Solomon Halbert (1938-)
SOBRERO, Ascanio (1812-1888)
SODDY, Frederick (1877-1965)
SOKAL, Robert Reuven (1926-)
SOMERVILLE, Mary Greig, nee Fairfax (1780-1872)
SOMMERFELD, Arnold (1868-1851)
SONDHEIMER, Franz (1926-1981)
SORBY, Henry Clifton (1826-1908)
SORENSEN, Soren Peter Lauritz (1868-1939)
SOSIGENES (fl.c.40 bc)
SOUTHWOOD, Sir (Thomas) Richard (Edmund) (1931-)
SPALLANZANI, Lazaro (1729-1799)
SPEDDING, Frank Harold (1902-1984)
SPEMANN, Hans (1869-1941)
SPENCER , Sir (Walter) Baldwin (1860-1929)
SPENCER, Herbert (1820-1903)
SPERRY, Roger Wolcott (1913-)
SPITZER, Lymal Jr (1914-)
SPOTTISWOODE, William (1825-1883)
SPRENGEL, Christian Konrad (1750-1816)
SPRENGEL, Hermann Johann Philipp (1834-1906)
SPRUCE, Richard (1817-1893)
SPAHN, Franklin William (1929-)
STAHL, Georg Ernst (1610-1734)
STANIER, Roger Yate (1916-)
STANLEY, Wandell Meredith (1904-1971)
STANLEY, William (1858-1916)
STARK, Johannes (1874-1957)
STARLING, Ernst Henry (1866-1927)
STAS, Jean Servais (1813-1891)
STAUDINGER, Hermann (1881-1965)
STEARN, William Thomas (1911-)
STEBBINS, George Ledyard (1906-)
STEBBINS, Joel (1878-1966)
STEENSTRUP, Johannes Iapetus Smith (1813-1897)
STEFAN, Josef (1835-1893)
STEIN, Willaim Howard (1911-1980)
STEINBERGER, Jack (1921-)
STEINER, Jakob (1796-1863)
STEINMETZ, Charles Proteus, originally Kari August Rudolf (1865-1923)
STENO, Nicolaus (also known as Niels Stensen ) (1638-1686)
STEPTOE, Patrick Christopher (1913-1988)
STERN, Otto (1888-1969)
STEVENS, Nettie Maria (1861-1912)
STEVIN, Simon (1548-1620)
STEWART, Balfour (1828-1887)
STEWART, Sir Frederick Henry (1916-)
STEWART, Ralph Randles (1890-)
STIBITZ, George Robert (1904-)
STIRLING, James, known as the Venetian (1692-1770)
STOCK, Alferd (1876-1946)
STOKES, Sir George Gabriel (1819-1903)
STOMMEL, Hank (Henry Melson ) (1920-1922)
STONE, Francis Gordon Albert (1925-)
STORK, Gilbert (1921-)
STRACHEY, Christopher (1916-1975)
STRASBURGER, Eduard Adolf (1844-1912)
STRATO, or STRATON, of Lampsacus (d.c.269 bc)
STROMEYER, Friedrich (1776-1835)
STROMGREN, Bengt (1908-1987)
STRUVE, Otto (1897-1963)
STRUVE, Otto Wilhelm (1819-1905)
STRUVE, (Friedrich Georg) Wilhelm (1793-1864)
STURGEON, William (1783-1850)
STURM, Jacques Charles Francois (1803-1855)
STURTEVANT, Alfred Henry (1891-1970)
SUESS, Eduard (1831-1914)
SUGDEN, Samuel (1892-1950)
SUMNER, James Batcheller (1887-1955)
SUOMI, Verner (1915-)
SUTCLIFFE, Reginald Cockroft (1904-1991)
SUTHERLAND, Earl Wilbur Jr (1915-1974)
SUTHERLAND, Sir Gordon Brims Black McIvor (1907-1980)
SVEDBERG, Theodor (1884-1971)
SVERDRUP, Haraid Uirik (1888-1957)
SWALLOW, John Crossley (1923-)
SWAMMERDAM, Jan (1637-1680)
SWAN, Sir Joseph Wilson (1828-1914)
SWEDENBORG, Emanuel (1688-1772)
SWINBURNE, Sir James, 9th Baronet (1858-1958)
SWINGS, Pol (1906-1983)
SWINTON, Alan Archibald Campbell (1863-1930)
SYDENHAM, Thomas (1624-1689)
SYLVESTER, James Joseph (1814-1897)
SYLVESTER-BRADLEY, Peter (1913-1978)
SYMONS, George James (1838-1900)
SYNGE, Richard Laurence Millington (1914-)
SZENT-GYORHYI, Albert von Nagyrapolt (1893-1986)
SZILARD, Leo (1898-1964)
TAIT, Peter Guthrie (1831-1901)
TAKAMINE, Jokichi (1834-1922)
TAKHTMAN, Armen Leonovich (1910-)
TAMM, Igor Yevgenyevich (1895-1971)
TANSLEY, Sir Arthur George (1871-1955)
TARSKI, Alfred (1902-1983)
TARTAGLIA, (originally FONTANA, Niccolo)(c.1500-1557)
TATUM, Edward Lawrie (1909-1975)
TAUBE, Henry(1915-)
TAUSSIG, Helen Brooke (1898-1986)
TAYLOR, Brook (1685-1731)
TAYLOR, Sir Geoffrey Ingram (1886-1975)
TAYLOR, Sir Hugh Stott(1890-1974)
TAYLOR, Joseph Hooton Jr (1941-)
TAYLOR, Richard Edward (1919-)
TAZIEFF, Haroun (1914-)
TEILHARD DE CHARDIN, Pierre (1881-1955)
TEISSERENCE DE BORT, Leon Philippe (1855-1913)
TELLER, Edward (1908-)
TEMIN, Howard Martin (1934-)
TEMMINCK, Coenraad Jacob (1778-1858)
TENNANT, Charles (1768-1838)
TENNANT, Smithson (1761-1815)
TESLA, Nikola (1856-1943)
THALES (c.624-545 BC )
THEAETETUS (c.414-369 BC )
THEILER, Max (1899-1972)
THENARD, Louis Jacques (1777-1857)
THEOPHRASTUS (c.372-c.287 BC )
THEORELL, (Axel) Hugo Theodor (1903-1982)
THOM, Rene Frederic (1923-)
THOMAS, (Edward) Donnall (1920- )
THOMAS, Sir John Meurig (1923-)
THOMAS, Sidney Gilchrist (1850-1885)
THOMPSON, Sir D' Arcy Wentworth (1860-1948)
THOMPSON, Silvanus Phillips (1851-1916)
THOMSON, Elihu (1853-1937)
THOMSON, Sir George Paget (1892-1975)
THOMSON, James (1822-1892)
THOMSON, Sir J(oseph) J(ohn) (1856-1940)
THOOFT, Gerard (1947- )
THORARINSSON, Sigurdur (1912-1983)
THORPE, Sir (Thomas) Edward (1845-1925)
THORPE, William Homan (1902-1986)
THORSON, Gunnar Axel (1906-1971)
THUNBERG, Carl Per (1743-1828)
TILDEN, Sir William Augustus (1842-1926)
TIMOSHENKO, Stephen (Stepan Prokofyevich) (1878-1972)
TINBERGEN, Nikolaas (1907-1988)
TING, Samuel Chao Chung (1936- )
TISELIUS, Arne Wilhelm Kaurin (1902-1971)
TITTERTON, Sir Ernest William (1916-1990)
TIZARD, Sir Henry Thomas (1885-1959)
TOBIAS, Phillip Vallentine (1925- )
TODD, Alexander Robertus, Boron of Trumpington (1907- )
TOLANSKY, Samuel (1907-1973)
TOMBAUGH, Clyde William (1906- )
TOMONAGA, Sin-Itiro (1906-1979)
TONEGAWA, Susumu (1939- )
TORREY, John (1796-1873)
TORRICELLI, Evangelista (1608-1647)
TOURNEFORT, Joseph Pitton de (1656-1708)
TOWNES, Charles Hard (1915- )
TOWNSEND, Sir John Sealy Edward (1868-1957)
TRAUBE, Ludwig (1818-1876)
TRAUBE, Moritz (1826-1894)
TRAVERS, Morris William (1872-1961)
TREVIRANUS, Gittfried Reinhold (1776-1837)
TRUMPLER, Robert Julius (1886-1956)
TSIOLKOVSKY, Konstantin Eduardovich (1857-1935)
TSWETT, or TSVETT, Mikhail Semenovich (1872-1919)
TULASNE, Louis Rene (1815-1885) and Charles (1816-1884)
TURING, Alan Mathison (1912-1954)
TURNER, James Johnson (1935- )
TURNER, William (c.1510-1568)
TWORT, Frederick William (1877-1950)
TYNDALL, John (1820-1893)
TYRRELL, George Walter (1883-1961)
TYSON, Edward (1651-1708)
UHLENBECK, George Eugene (1900-1988)
ULAM, Stanislav Marcin (1909- )
ULUGH-BEG (1394-1449)
UNSOLD, Albrecht Otto Johannes (1905- )
UNVERDORBEN, Otto (1806-1873)
URBAIN, Georges (1872-1938)
UREY, Harold Clayton (1893-1981)
USSING, Hans Henrikson (1911- )
VAN ALLEN, James Alfred (1914-)
VAN ANDEL, Tjeerd Handrik (1923-)
VAN DE GRAAFF, Robert Jernison (1901-1967)
VAN DE HULST, Hendrik Christoffell (1918-)
VAN DER MEER, Simon (1925-)
VAN DER WAALS, Johannes Diderik (1837-1923)
VANE, Sir John Robert (1927-)
VAN NIEL, Cornelis Bernardus Kees (1898-)
VAN'T HOFF, Jacobus Henricus (1852-1911)
VAN TIEGHEM, Philippe (1839-1914)
VAN VLECK, John Hasbrouck (1899-1980)
VARMUS, Harold Elliot (1939-)
VASKA, Lauri (1928-)
VAVILOV, Nikolai Ivanovich (1887-1943)
VENING MEINESZ, Felix Andries (1887-1966)
VENN, John (1834-1923)
VENTURI, Giovanni Battista (1746-1822)
VERNADSKY, Vladimir Ivanovich (1863-1945)
VERNON HARCOURT, Augustus George (1834-1919)
VERNON HARCOURT, William Venables (1789-1871)
VESALIUS, Andreas (1514-1564)
VIETA, Franciscus, or VIETE, Francois (1540-1603)
VILLEMIN, Jean-Antoine (1827-1892)
VINE, Frederick John (1939-1988)
VIRCHOW, Rudolf (1821-1902)
VIRTANEN, Artturi Ilmari (1895-1973)
VOGEL, Hermann Carl (1841-1907)
VOGEL, Hermann Wilhelm (1834-1898)
VOGT, Peter (1923-)
VOLTA, Alessandro Giuseppe Anastasio, Count (1745-1827)
VOLTERRA, Vito (1860-1940)
VON BRAUN, Wernher (1912-1977)
VON KLITZING, Klaus (1943-)
VON LAUE, Max Theodor Felix (1879-1960)
VON MISES, Richard (1883-1935)
VONNEGUT, Bernard (1914-)
VON NEUMANN, John (Johann) (1903-1957)
VORONOFF, Serge (1866-1951)
WADATI, Kiyoo (1902-)
WADDINGTON, Conrad Hal (1905-1975)
WAERDEN, Bartel Leendert van der (1903-)
WAGER, Lawrence Rickard (1904-1965)
WAGNER-JAUREGG, or WAGNER VON JAUREGG, Julius (1857-1940)
WAKSMAN, Selman Abraham (1888-1973)
WALD, George (1906-)
WALDEN, Paul (1863-1957)
WALDEVER-HARTZ, Wilhelm (1839-1921)
WALKER, Sir James (1863-1935)
WALLACE, Alfred Russel (1823-1913)
WALLACH, Otto (1847-1931)
WALLER, Augustus Voiney (1816-1870)
WALLICH, Nathaniel (1786-1854)
WALLIS, Sir Barnes Neville (1887-1979)
WALLIS, John (1616-1703)
WALTON, Ernest Thomas Sinton (1903-)
WANG, An (1920-1990)
WARBURG, Otto Heinrich (1883-1970)
WARD, Nathaniel Bagshaw (1791-1868)
WARMING, (Johannes) Eugenius Bulow (1841-1924)
WASSERMAN, August Paul von (1866-1925)
WALTERSTON, John James (1811-1883)
WATSON, David Meredith Seares (1886-1973)
WATSON, James Dewey (1928-)
WATSON, Sir William (1715-1787)
WATT, James (1736-1819)
WEATHERALL, Sir David John (1933-)
WEBER, Ernst Heinrich (1795-1878)
WEBER, Wilhelm Eduard (1804-1891)
WEDDERBURN, Joseph Henery Maclagan (1882-1948)
WEEKS, Willy (Wilford Frank)(1929-)
WEGENER, Alfred Lothar (1880-1930)
WEIDENREICH, Franz (1873-1948)
WEIERSTRASS, Karl Theodor Wilhelm (1815-1897)
WEIL, Andre (1906-)
WEINBERG, Robert Allan (1942-)
WEINBERG, Steven (1933-)
WEISMANN, August Friedrich Leopolan (1834-1914)
WEISS, Robin (Robert Anthony)(1940-)
WEIZSACKER, Baron Carl Friedrich von (1912-)
WELCH, William Henry Havard (1850-1934)
WELLER, Thomas Huckle (1915-)
WERNER, Abraham Gottlob (1749-1817)
WERNER, Alfred (1866-1919)
WERNICKE, Carl (1848-1905)
WESTINGHOUSE, George (1846-1914)
WEYL, Hermann (1885-1955)
WHEATSTONE, Sir Charles (1802-1875)
WHEELER, David John (1927-)
WHEELER, John Archibald (1911-)
WHIPPLE, Fred Lawrence (1906-)
WHIPPLE, George Hoyt (1878-1976)
WHITEHEAD, ALFRED North (1861-1947)
WHITNEY, JOSIAH DWIGHT (1819-1896)
WHITTAKER, Sir Admund Taylor (1873-1956)
WHITTIINGTON, Harry Blockmore (1916-)
WHITTLE, Sir Frank (1907-)
WIELAND, Heinrich Otto (1877-1957)
WICEN, Willhem Carl Werner Otto Fritz Franz (1864-1928)
WIENER, Norbert (1894-1964)
WIESEL, Torspen Nils (1924-)
WIGGLESWORTH, Sir Vincent Biran (1899-)
WIGNER, Eugene Saul (1902-)
WILCKE, Johan Carl (1732-1796)
WILKWES , Maurice Vincent (1913-)
WILKINS, Maurice Hugh Frederick (1916-)
WILKINSON, Sir Geoffrey (1921-)
WILKINSON, James Hardy (1919-1986)
WILNIAMS, Sir Alwyn (1921-)
WILNIAMS, Sir Frederic Calland (1911-1977)
WILLIAMS, Robert Joseth Paton (1926-)
WILLIAMSON, Alexander, William(1824-1904)
WILLIAMSON, William Crawford (1816-1895)
WILLIS , John Christopher, (1868-1958)
WILLIS, Thomas (1621-1673)
WILLSTATTER, Richard (1872-1942)
WILSON, Charles Thomosan Rees (1869-1959)
WILSON, Edmund Beecher (1856-1939)
WILSON, Edward Osborne (1929-)
WILSON, Kenneth Geddes (1936)
WILSON, Robert Woodro(1936-)
WILSON, (John ) Tuzo (1908-1993)
WINDAUS, Adolf (1876-1959)
WINKLER, Clemens Alexander (1838-1904)
WINSTEIN , Saul (1912-1969)
WISLICENUS, Johannes Adolf (1835-1902)
WITHERING, William (1741-1799)
WITTIG, Georg (1897-1987)
WOHLER, Friedrich(1800-1882)
WOLF, Emil (1922-)
WOLF, Maximalian Franz Joseph Cornelius (1863-1932)
WOLLASTON, William Hyde (1766-1828)
WOOD, Robert Williams (1868-1955)
WOODS, Donald Devereux (1912-1964)
WOODWARD, Sir Arthur Smith (1864-1944)
WOODWARD, Robert Burns (1917-1979)
WOOLLEY, Sir Richard van der Riet (1906-1986)
WRIGHT, Sir Almroth Edward (1861-1947)
WRIGHT, Orville (1871-1948)
WRIGHT, Sewall (1889-1988)
WRIGHT, Thomas(1711-1786)
WROBLEWSKI, Zygmunt Florenty von (1845-1888)
WU, Chien-Shiung (1912-)
WYOCKOFF, Ralph Walter Graystone (1897-)
WYNNE-EDWARDS, Vero Copner (1906-)
XENOCRATES (c.395-314 bc)
YALOW, Rosalyn, nee Sussman (1921-)
YANG, Chen Ning (1922-)
YANOFSKY, Charles (1925-)
YERSIN, Alexander Emile John (1863-1943)
YODER, Hatten Schuyler Jr (1921-)
YONGE, Charles Maurice (1899-1986)
YOUNG, John Zachary (1907-)
YOUNG, Thomas (1773-1829)
YUKAWA, Hideki, Originally Hideki Ogawi (1907-1981)
ZEEMAN, Pieter (1865-1943)
ZEL'DOVICH, Yokov Borisovich (1914-)
ZONO OF ELEA (c.430-c.490 BC)
ZERMELO, Ernst Friedrich Fredinand (1871-1953)
ZERNIKE, Frits (1888-1966)
ZINDER, Norton David (1928-)
ZINSSER, Hans (1878-1940)
ZITTEL, Karl Alfred von (1839-1904)
ZOHARY, Michael (1898-1983)
ZONDEK, Bernhard (1891-1967)
ZOTTERMAN, Yvnge (1898-1982)
ZSIGMONDY, Richard Adolf (1865-1929)
ZUCKERMAN, Solly, Baron (1904-1993)
ZUSE, Konrad (1910-)
ZWEIG, George (1937-)
ZWICKY, Fritz (1898-1974)
ZWORYKIN, Vladimir Kosma (1889-1982)
Retrieved from "http://en.wikibooks.org/wiki/Top_1000_Scientists_from_the_beginning_of_time_to_2000AD"
f9rg5l487crcjs4mdlituhn3gsp8bgx
14915
14914
2009-02-04T06:20:47Z
He!ko
3646
template for stored collections
14915
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan=2 |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a stored collection<sup style="font-size:50%;">[[Help:Collections|Help]]</sup>
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
</noinclude>
1wkibdn8bwhwd6dpsy34vzbuuol1o35
14916
14915
2009-02-22T22:16:09Z
Erik Baas
2757
+nl:
14916
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan=2 |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a stored collection<sup style="font-size:50%;">[[Help:Collections|Help]]</sup>
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
[[nl:Sjabloon:Opgeslagen boek]]
</noinclude>
sqnz5hk1minb9xg8zukgm8ih2wghzr1
14917
14916
2009-02-23T00:53:48Z
Erik Baas
2757
+de:
14917
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan=2 |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a stored collection<sup style="font-size:50%;">[[Help:Collections|Help]]</sup>
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
</noinclude>
qs1d2s723j9kghunenqb3nn0en8ffgt
14918
14917
2009-03-03T01:14:40Z
Erik Baas
2757
layout / fix HTML
14918
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan="2" |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a stored collection
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ] [ [[Help:Collections|Help]] ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
</noinclude>
oozorj5j5kphqakoxn6xov7v8o6ua4k
14919
14918
2009-04-16T20:20:14Z
MonteChristof
715
14919
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan="2" |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a stored collection
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ] [ [[Help:Collections|Help]] ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
ejtzts01dujqf58jje24xxyldkxrjqe
14920
14919
2009-04-29T00:56:21Z
Mattwj2002
3647
14920
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan="2" |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a stored collection
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ] [ [[Help:Collections|Help]] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
qr384olxoiaurvhnup2c5gg1bksfv19
14921
14920
2009-04-29T01:03:16Z
Mattwj2002
3647
14921
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan="2" |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a Wikibooks collection
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ] [ [[Help:Collections|Help]] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
t7dra2p14neqdc7qhpwk7ht3enpkzhn
14922
14921
2009-04-29T01:03:53Z
Mattwj2002
3647
14922
wikitext
text/x-wiki
{| cellspacing="8" cellpadding="0" class="{{{class|}}}" style="font-size: 100%; border-style: solid; margin-top: 2px; margin-bottom: 2px; position:relative;{{{1|}}}"
| rowspan="2" |[[Image:Book_icoline.svg|100px]]
| style="width: 100%; font-size: 190%;" | This is a Wikibooks collection
|-
| style="font-size: 120%;" | [ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ] [ [[Help:Collections|Help]] ]
|}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
3dqfj2heu4wedbv4j4aw63sprzx856n
14923
14922
2009-04-29T01:07:42Z
Mike.lifeguard
117
slightly less bad
14923
wikitext
text/x-wiki
{{mbox|image=Book_icoline.svg
|'''This is a Wikibooks collection'''
[ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}|writer=rl}} PDF] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ] [ [[Help:Collections|Help]] ]
}}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
61bft73jv6q3db0rfc37h736i11mnyh
14924
14923
2009-10-28T10:39:35Z
He7d3r
2069
wrong syntax?
14924
wikitext
text/x-wiki
{{mbox|image=Book_icoline.svg
|'''This is a Wikibooks collection'''
[ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}&writer=rl}} PDF] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ] [ [[Help:Collections|Help]] ]
}}
<noinclude>
This template is automatically included at the start of every new stored collection
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
gggxgw40vqp1yh7kpo1hcgkucvvnl4j
14925
14924
2009-11-20T14:47:32Z
Adrignola
502
+category
14925
wikitext
text/x-wiki
{{mbox|image=Book_icoline.svg
|'''This is a Wikibooks collection'''
[ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}&writer=rl}} PDF] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ] [ [[Help:Collections|Help]] ]
}}
<noinclude>
This template is automatically included at the start of every new stored collection
[[Category:Information templates|{{PAGENAME}}]]
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
lb9e2jk7qbbvn22bja8yn18sfhm2rok
14926
14925
2009-11-20T14:47:57Z
Adrignola
502
Protected "[[Template:Saved book]]": High-impact page ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))
14925
wikitext
text/x-wiki
{{mbox|image=Book_icoline.svg
|'''This is a Wikibooks collection'''
[ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}&writer=rl}} PDF] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ] [ [[Help:Collections|Help]] ]
}}
<noinclude>
This template is automatically included at the start of every new stored collection
[[Category:Information templates|{{PAGENAME}}]]
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
lb9e2jk7qbbvn22bja8yn18sfhm2rok
14927
14926
2010-04-24T17:29:52Z
Adrignola
502
msg -> text parameter
14927
wikitext
text/x-wiki
{{ombox|image=[[File:Book_icoline.svg|40px]]|text='''This is a Wikibooks collection'''<br />
[ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}&writer=rl}} PDF] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ] [ [[Help:Collections|Help]] ]
}}
<noinclude>
This template is automatically included at the start of every new stored collection
[[Category:Information templates|{{PAGENAME}}]]
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
aqh498vcgrmdqubtxx6s6lll36d0yxx
14928
14927
2010-07-04T06:30:41Z
Hagindaz
3648
spacing
14928
wikitext
text/x-wiki
{{ombox|image=[[File:Book_icoline.svg|40px]]|text='''This is a Wikibooks collection'''<br />
[ [{{fullurl:Special:Collection/load_collection/|colltitle={{FULLPAGENAMEE}}}} Load collection] ] [ [{{fullurl:Special:Collection/render_collection/|colltitle={{FULLPAGENAMEE}}&writer=rl}} PDF] ] [ [{{fullurl:Special:Book/order_collection/|colltitle={{FULLPAGENAMEE}}|partner=pediapress}}</span> order as printed book]<!-- include this if external links are not marked by an icon [[Image:Icon_External_Link.png]]--> ] [ [[Help:Collections|Help]] ]
}}<noinclude>
This template is automatically included at the start of every new stored collection
[[Category:Information templates|{{PAGENAME}}]]
[[de:Template:Gespeicherte Sammlung]]
[[nl:Sjabloon:Opgeslagen boek]]
[[pl:Szablon:Zapisane książki]]
</noinclude>
eiyk0cn0jxoru58lkfawtjykg1y8lvo
14929
14928
2011-02-24T14:05:05Z
Adrignola
502
update
14929
wikitext
text/x-wiki
<table class="ombox" cellpadding="5%">
<tr>
<td rowspan="3">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
| colspan="5" style="height: 135px; text-align: center; vertical-align: middle;" |[[File:{{{cover-image|Wikipedia-books-missing-cover.svg}}}|125px|<!--
-->{{#switch:{{{cover-image|Wikipedia-books-missing-cover.svg}}}
|Wikipedia-books-missing-cover.svg=Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."
|#default=
}}]]
|}
</td>
<td><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''. [[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td><!--
-->{{nowrap|1=<!--
--><big><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rl}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span></big><!--
--><big><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span></big><!--
--><big><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></big>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
inydvr5vdo5cubu24l02icmh8skgx04
14930
14929
2011-02-24T15:36:09Z
Adrignola
502
includeonlys
14930
wikitext
text/x-wiki
<table class="ombox" cellpadding="5%">
<tr>
<td rowspan="3">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
| colspan="5" style="height: 135px; text-align: center; vertical-align: middle;" |[[File:{{{cover-image|Wikipedia-books-missing-cover.svg}}}|125px|<!--
-->{{#switch:{{{cover-image|Wikipedia-books-missing-cover.svg}}}
|Wikipedia-books-missing-cover.svg=Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."
|#default=
}}]]
|}
</td>
<td><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td><!--
-->{{nowrap|1=<!--
--><big><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rl}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span></big><!--
--><big><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span></big><!--
--><big><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></big>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
0g05cnuf4l5cb6mhgy40fo3e746u4cl
14931
14930
2014-09-29T20:42:15Z
Cscott
3418
Switch default PDF renderer. (See https://gerrit.wikimedia.org/r/163608 ).
14931
wikitext
text/x-wiki
<table class="ombox" cellpadding="5%">
<tr>
<td rowspan="3">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
| colspan="5" style="height: 135px; text-align: center; vertical-align: middle;" |[[File:{{{cover-image|Wikipedia-books-missing-cover.svg}}}|125px|<!--
-->{{#switch:{{{cover-image|Wikipedia-books-missing-cover.svg}}}
|Wikipedia-books-missing-cover.svg=Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."
|#default=
}}]]
|}
</td>
<td><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td><!--
-->{{nowrap|1=<!--
--><big><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span></big><!--
--><big><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span></big><!--
--><big><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></big>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
hfoekg1o5z99sb1wkt7adnpsj6b9ugy
14932
14931
2015-02-05T18:31:48Z
He7d3r
2069
-invalid HTML code (http://validator.w3.org/check?uri=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Foldid%3D2706032)
14932
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
| colspan="5" style="height: 135px; text-align: center; vertical-align: middle;" |[[File:{{{cover-image|Wikipedia-books-missing-cover.svg}}}|125px|<!--
-->{{#switch:{{{cover-image|Wikipedia-books-missing-cover.svg}}}
|Wikipedia-books-missing-cover.svg=Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."
|#default=
}}]]
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><div style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></div>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
taow1phkjdyjh6y7klhdlzdk5odbduc
14933
14932
2020-04-16T08:17:47Z
ShakespeareFan00
2900
Nowrap is SPAN based, so a DIV can't be given as a paramater to it.
14933
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
| colspan="5" style="height: 135px; text-align: center; vertical-align: middle;" |[[File:{{{cover-image|Wikipedia-books-missing-cover.svg}}}|125px|<!--
-->{{#switch:{{{cover-image|Wikipedia-books-missing-cover.svg}}}
|Wikipedia-books-missing-cover.svg=Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."
|#default=
}}]]
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></span>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
dv6upgf4o7g3wuaf6t3n04286zc7stz
14934
14933
2020-04-16T08:22:36Z
ShakespeareFan00
2900
Add option for blank or null value supplied from elsewhere
14934
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
| colspan="5" style="height: 135px; text-align: center; vertical-align: middle;" |[[File:{{{cover-image|Wikipedia-books-missing-cover.svg}}}|125px|<!--
-->{{#switch:{{{cover-image|Wikipedia-books-missing-cover.svg}}}
|
|Wikipedia-books-missing-cover.svg=Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."
|#default=
}}]]
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></span>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
ivars4982fg7rfxd5v37h7nk4dctqpi
14935
14934
2020-04-16T08:55:57Z
ShakespeareFan00
2900
Modify handling to cope with a BLANK but supplied value for cover image
14935
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
|colspan="5" style="height: 135px; text-align: center; vertical-align: middle;"|
{{#switch:{{sane|{{{cover-image|}}}}}
|@@empty@@=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
|{{{coverimage}}}=[[File:{{{cover-image|}}}{{!}}125px]]
|#default=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
}}
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></span>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
092hyizbovsjlvo0wy90jj5xqvkgkj9
14936
14935
2023-11-26T17:25:14Z
ShakespeareFan00
2900
14936
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
|colspan="5" style="height: 135px; text-align: center; vertical-align: middle;"|
{{#switch:{{sane|{{{cover-image|}}}}}
|@@empty@@=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
|{{{coverimage}}}=[[File:{{{cover-image|}}}{{!}}125px]]
|#default=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
}}
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></span>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
ipckvi1nmmx3mfyojw4s5dyj5uqhq2u
14937
14936
2024-06-05T05:13:04Z
ShakespeareFan00
2900
[[WB:REVERT|Reverted]] edits by [[Special:Contributions/ShakespeareFan00|ShakespeareFan00]] ([[User talk:ShakespeareFan00|talk]]) to last version by He7d3r
14937
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
| colspan="5" style="height: 135px; text-align: center; vertical-align: middle;" |[[File:{{{cover-image|Wikipedia-books-missing-cover.svg}}}|125px|<!--
-->{{#switch:{{{cover-image|Wikipedia-books-missing-cover.svg}}}
|Wikipedia-books-missing-cover.svg=Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."
|#default=
}}]]
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><div style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></div>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}<p>
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
taow1phkjdyjh6y7klhdlzdk5odbduc
14938
14937
2024-06-05T08:22:47Z
ShakespeareFan00
2900
Reinstate previous repair
14938
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
|colspan="5" style="height: 135px; text-align: center; vertical-align: middle;"|
{{#switch:{{sane|{{{cover-image|}}}}}
|@@empty@@=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
|{{{coverimage}}}=[[File:{{{cover-image|}}}{{!}}125px]]
|#default=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
}}
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></span>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
ipckvi1nmmx3mfyojw4s5dyj5uqhq2u
14939
14938
2025-11-09T02:51:59Z
Erik Baas
2757
-"Download PDF"; (error: "Unknown subpage")
14939
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
|colspan="5" style="height: 135px; text-align: center; vertical-align: middle;"|
{{#switch:{{sane|{{{cover-image|}}}}}
|@@empty@@=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
|{{{coverimage}}}=[[File:{{{cover-image|}}}{{!}}125px]]
|#default=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
}}
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><!--span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span --><!--
--><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!--
--><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span></span>}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
h92u1qblt0zdseqpentb2j1ay7l0xqf
14940
14939
2026-01-17T13:18:32Z
ShakespeareFan00
2900
14940
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;" |
|-
|colspan="5" style="height: 135px; text-align: center; vertical-align: middle;"|
{{#switch:{{sane|{{{cover-image|}}}}}
|@@empty@@=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
|{{{coverimage}}}=[[File:{{{cover-image|}}}{{!}}125px]]
|#default=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
}}
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><!--span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span --><!-- --><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!-- --><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span><!--</span>-->}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
tw5cf4d9meqie3fsv3c8yy4k1o118j1
14941
14940
2026-03-22T13:32:41Z
ShakespeareFan00
2900
Attempting to solve lints. Please ignore the notification this edit generated unless you have a more stable repair
14941
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray;{{Text default color}}; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;{{Text default color}};" |
|-
|colspan="5" style="height: 135px; text-align: center; vertical-align: middle;"|
{{#switch:{{sane|{{{cover-image|}}}}}
|@@empty@@=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
|{{{coverimage}}}=[[File:{{{cover-image|}}}{{!}}125px]]
|#default=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
}}
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><!--span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span --><!-- --><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!-- --><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span><!--</span>-->}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
p0e3m5vfajtdz6oovo6zc5wkghu3mg7
14942
14941
2026-08-01T17:28:40Z
QueerEcofeminist
1879
[[:en:Template:Saved_book]] पासून २८ आवर्तने आयात केलीत
14941
wikitext
text/x-wiki
<table class="ombox">
<tr>
<td rowspan="3" style="padding: 5px;">
{|style="background:{{{cover-color|Lavender}}}; color:<!--
-->{{#switch:{{lc:{{{cover-color|}}}}}
|black= {{{text-color|white}}}
|#default= {{{text-color|black}}}
}}; text-align:left; border:1px solid darkgrey; width: 130px;"
|-
| style="background:gray;{{Text default color}}; height: 3px;" |
|-
| style="height: 30px; text-align: right; vertical-align: top;" |<small>{{{title|Title}}}<br /><i>{{{subtitle|Subtitle}}}</i></small>
|-
| style="background:gray;{{Text default color}};" |
|-
|colspan="5" style="height: 135px; text-align: center; vertical-align: middle;"|
{{#switch:{{sane|{{{cover-image|}}}}}
|@@empty@@=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
|{{{coverimage}}}=[[File:{{{cover-image|}}}{{!}}125px]]
|#default=[[File:Wikipedia-books-missing-cover.svg{{!}}125px{{!}}Please select an appropriate cover image for this collection. See "Template:Saved book" for instructions."]]
}}
|}
</td>
<td style="padding: 5px;"><!--
-->{{#switch:{{NAMESPACE}}
|{{ns:2}}|{{ns:3}}=This is a user-generated '''collection''' of Wikibooks pages that can be easily saved, rendered electronically, and ordered as a printed book. If you are the creator of this collection and need help, see '''[[Help:Collections]]'''.
|{{ns:4}}|{{ns:5}}<noinclude>|{{ns:10}}</noinclude>=This is a '''collection''' of the pages in a Wikibooks book that can be easily saved, rendered electronically, and ordered as a printed book. For information and help on Wikibooks collections, see '''[[Help:Collections]]'''.<includeonly>[[Category:Collections|{{{sort_as|{{PAGENAME}}}}}]]</includeonly>
|#default=This '''collection''' is not located in the correct namespace. Please move it to either [[Wikibooks:Collections/{{SUBPAGENAME}}]] or [[User:Username/Collections/{{SUBPAGENAME}}]]. For information and help on collections, see '''[[Help:Collections]]'''.
}}
</td>
</tr>
<tr style="vertical-align:center; text-align:center;">
<td style="padding: 5px;"><!--
-->{{nowrap|1=<!--
--><!--span style="font-size: larger;"><span class="plainlinks" title="Download a PDF version of this collection.">[ [{{fullurl:Special:Collection|bookcmd=render_collection&colltitle={{FULLPAGENAMEE}}&writer=rdf2latex}} Download PDF{{#ifexpr: {{{seiten|0}}}>0| ({{{pages}}} pages)}}] ]  </span --><!-- --><span class="plainlinks" title="Open this collection using Wikibooks' collection editing tool. The Collection Creator allows you to easily add or remove pages, create or remove chapters, download and print PDF and ODT versions, and more.">[ [{{fullurl:Special:Book|bookcmd=load_collection&colltitle={{FULLPAGENAMEE}}}} Open in Collection Creator] ]  </span><!-- --><span class="plainlinks" title="Preview this collection with PediaPress, choose a cover image, pick a color for the cover, and more. The printed book has professional-quality layout and printing.">[ [{{fullurl:Special:Book|bookcmd=order_collection&colltitle={{FULLPAGENAMEE}}&partner=pediapress}} Order Printed Book] ]  </span><!--</span>-->}}
</td>
</tr>
<tr style="vertical-align:bottom;">
<td style="text-align:right; padding: 5px;"><small>[ [[Help:Collections/Printed books|About]] ] [ [[Help:Collections/Frequently Asked Questions|FAQ]] ] [ [[Help:Collections/Feedback|Feedback]] ] [ [[Help:Collections|Help]] ] [ <span class="plainlinks" title="See the recent edits made to the pages of this collection.">[{{fullurl:Special:RecentChangesLinked/{{FULLPAGENAMEE}}|&days=30&namespace=0&tagfilter=&hideminor=&hidebots Recent Changes}}] ]</span></small>
</td>
</td>
</table>
{{#if:{{{description|}}}{{{editor|}}}
|{{mbox
|text={{#if:{{{description|}}}
|{{{description|}}}
}}As edited by {{#switch:{{NAMESPACE}}
|{{ns:4}}=Wikibookians
|{{ns:2}}={{{editor|[[User:{{#titleparts:{{PAGENAME}}|1}}]]}}}
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
p0e3m5vfajtdz6oovo6zc5wkghu3mg7
साचा:Nowrap/styles.css
10
4171
14943
2025-01-25T21:41:09Z
ExE Boss
2914
Copied from [[mw:Template:Nowrap/styles.css]]
14943
sanitized-css
text/css
.nowrap,
.nowrap a:before,
.nowrap .selflink:before {
white-space: nowrap;
}
mac6w7xrwsyyjl059kvsin0tuz2yqbc
14944
14943
2026-08-01T17:28:40Z
QueerEcofeminist
1879
[[:en:Template:Nowrap/styles.css]] पासून १ आवर्तन आयात केलीत
14943
sanitized-css
text/css
.nowrap,
.nowrap a:before,
.nowrap .selflink:before {
white-space: nowrap;
}
mac6w7xrwsyyjl059kvsin0tuz2yqbc
साचा:Text default color
10
4172
14945
2026-03-21T21:37:31Z
ShakespeareFan00
2900
Created page with "color:{{{override|var:(--color-base-fixed,#202122)}}};"
14945
wikitext
text/x-wiki
color:{{{override|var:(--color-base-fixed,#202122)}}};
fpm8c3dy2vhc4gaibyvusd8dstx9iur
14946
14945
2026-08-01T17:28:40Z
QueerEcofeminist
1879
[[:en:Template:Text_default_color]] पासून १ आवर्तन आयात केलीत
14945
wikitext
text/x-wiki
color:{{{override|var:(--color-base-fixed,#202122)}}};
fpm8c3dy2vhc4gaibyvusd8dstx9iur
मिडियाविकी:Gadget-Subpages.js
8
4173
14947
2026-07-22T21:34:21Z
Codename Noreste
3207
Per [[Wikibooks:Reading room/Proposals#New gadget to browse subpages]].
14947
javascript
text/javascript
mw.loader.load( '//www.mediawiki.org/w/load.php?modules=ext.gadget.Global-Subpages' );
t2j11579dyvpseoqlu91fx9uz0ak5z7
14948
14947
2026-07-22T22:34:55Z
Codename Noreste
3207
Fixing an issue.
14948
javascript
text/javascript
mw.loader.load( 'https://www.mediawiki.org/w/index.php?title=MediaWiki:Gadget-Global-Subpages.js&action=raw&ctype=text/javascript' );
tirmu2hrclyhhfciqu2jlyepmfcofwu
14949
14948
2026-07-22T22:45:28Z
Codename Noreste
3207
Restoring revision 4655376 by [[Special:Contributions/Codename Noreste|Codename Noreste]]
14949
javascript
text/javascript
mw.loader.load( '//www.mediawiki.org/w/load.php?modules=ext.gadget.Global-Subpages' );
t2j11579dyvpseoqlu91fx9uz0ak5z7
14950
14949
2026-07-23T12:24:10Z
Sophivorus
3088
Sophivorus moved page [[MediaWiki:Gadget-Global-Subpages.js]] to [[MediaWiki:Gadget-Subpages.js]] without leaving a redirect: Fix gadget name
14949
javascript
text/javascript
mw.loader.load( '//www.mediawiki.org/w/load.php?modules=ext.gadget.Global-Subpages' );
t2j11579dyvpseoqlu91fx9uz0ak5z7
14951
14950
2026-08-01T17:29:02Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-Subpages.js]] पासून ४ आवर्तने आयात केलीत
14949
javascript
text/javascript
mw.loader.load( '//www.mediawiki.org/w/load.php?modules=ext.gadget.Global-Subpages' );
t2j11579dyvpseoqlu91fx9uz0ak5z7
मिडियाविकी:Gadget-BookCat.js
8
4174
14952
2021-06-29T11:55:32Z
Leaderboard
2891
Created page with "// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js and https://en.wikibooks.org/wiki/User:1234qwer1234qwer4/BookCat.js // Set `var bookCatAJAX = true;` t..."
14952
javascript
text/javascript
// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js and https://en.wikibooks.org/wiki/User:1234qwer1234qwer4/BookCat.js
// Set `var bookCatAJAX = true;` to add BookCat without reloading the page
( function () {
function bookCat(){
var send_req = {
action: 'query',
titles: mw.config.get( 'wgPageName' ),
prop: 'revisions',
intoken: 'edit',
rvprop: 'content',
indexpageids: 1,
dataType: 'xml',
format: 'xml'
};
$.get( mw.config.get( 'wgScriptPath' ) + '/api.php', send_req, function( response ) {
var text = $( response ).find( 'rev' ).text();
if(text.match(/\{\{\s*Bookcat\s*\}\}/i)){
return mw.notify("BookCat already present.");
}
text += '\n\n{{BookCat}}';
var submit = {
action: 'edit',
pageid: mw.config.get( 'wgArticleId' ),
text: text,
summary: "Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]]",
minor: true,
token: mw.user.tokens.get( 'csrfToken' )
};
$.when(
$.post( mw.config.get( 'wgScriptPath' ) + '/api.php', submit, function( response ){ } )
).done( function() {
if(bookCatAJAX === undefined || bookCatAJAX == false){
location.reload();
}
else mw.notify("BookCat successfully added.");
} );
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get('wgAction') === 'view' && mw.config.get('wgCategories').every(e => !e.includes("Book:")) ) {
mw.loader.using( 'mediawiki.util', function () {
$(document).ready( function () {
var link = mw.util.addPortletLink( 'p-cactions', '#', 'BookCat', 'ca-bookcat', 'Add BookCat');
$( link ).click( function ( event ) {
event.preventDefault();
bookCat();
} );
} );
} );
}
}() );
oa4a5woylwr1kt9aw15dqbjxlq2u01i
14953
14952
2021-06-29T11:56:42Z
Leaderboard
2891
Leaderboard moved page [[MediaWiki:BookCat.js]] to [[MediaWiki:Gadget-BookCat.js]] without leaving a redirect: gadget
14952
javascript
text/javascript
// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js and https://en.wikibooks.org/wiki/User:1234qwer1234qwer4/BookCat.js
// Set `var bookCatAJAX = true;` to add BookCat without reloading the page
( function () {
function bookCat(){
var send_req = {
action: 'query',
titles: mw.config.get( 'wgPageName' ),
prop: 'revisions',
intoken: 'edit',
rvprop: 'content',
indexpageids: 1,
dataType: 'xml',
format: 'xml'
};
$.get( mw.config.get( 'wgScriptPath' ) + '/api.php', send_req, function( response ) {
var text = $( response ).find( 'rev' ).text();
if(text.match(/\{\{\s*Bookcat\s*\}\}/i)){
return mw.notify("BookCat already present.");
}
text += '\n\n{{BookCat}}';
var submit = {
action: 'edit',
pageid: mw.config.get( 'wgArticleId' ),
text: text,
summary: "Added {{[[Template:BookCat|BookCat]]}} using [[User:1234qwer1234qwer4/BookCat.js|BookCat.js]]",
minor: true,
token: mw.user.tokens.get( 'csrfToken' )
};
$.when(
$.post( mw.config.get( 'wgScriptPath' ) + '/api.php', submit, function( response ){ } )
).done( function() {
if(bookCatAJAX === undefined || bookCatAJAX == false){
location.reload();
}
else mw.notify("BookCat successfully added.");
} );
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get('wgAction') === 'view' && mw.config.get('wgCategories').every(e => !e.includes("Book:")) ) {
mw.loader.using( 'mediawiki.util', function () {
$(document).ready( function () {
var link = mw.util.addPortletLink( 'p-cactions', '#', 'BookCat', 'ca-bookcat', 'Add BookCat');
$( link ).click( function ( event ) {
event.preventDefault();
bookCat();
} );
} );
} );
}
}() );
oa4a5woylwr1kt9aw15dqbjxlq2u01i
14954
14953
2021-09-29T10:53:52Z
Leaderboard
2891
from Discord
14954
javascript
text/javascript
// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js
// Set `var bookCatAJAX = true;` to add BookCat without reloading the page
$(() => {
const bookCat = {};
window.bookCat = bookCat;
bookCat.config = {
name: '[[User:1234qwer1234qwer4/BookCat.js|BookCat.js]]',
debug: false
};
bookCat.summary = "Added {{[[Template:BookCat|BookCat]]}} using " + bookCat.config.name;
bookCat.run = function () {
var editSummary = bookCat.summary;
if ( bookCat.config.debug ) {
console.log ( editSummary );
}
var api = new mw.Api();
api.get( {
action: 'query',
titles: mw.config.get( 'wgPageName' ),
prop: 'revisions',
rvprop: 'content',
rvslots: 'main',
formatversion: 2
} ).done(
function ( response ) {
console.log( response );
var text = response.query.pages[0].revisions[0].slots.main.content;
if(text.match(/\{\{\s*Bookcat\s*\}\}/i)){
return mw.notify("BookCat already present.");
}
text += '\n\n{{BookCat}}';
api.postWithEditToken( {
action: 'edit',
minor: true,
title: mw.config.get( 'wgPageName' ),
text: text,
summary: editSummary
} ).done(
function() {
if(bookCatAJAX === undefined || bookCatAJAX == false){
location.reload();
}
else mw.notify("BookCat successfully added.");
}
);
}
);
};
});
$( document ).ready( () => {
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get('wgAction') === 'view' && mw.config.get('wgCategories').every(e => !e.includes("Book:")) ) {
mw.loader.using(
[ 'mediawiki.util' ],
function () {
var link = mw.util.addPortletLink( 'p-cactions', '#', 'BookCat', 'ca-bookcat', 'Add BookCat');
$( link ).click( function ( event ) {
event.preventDefault();
mw.loader.using( 'mediawiki.api', window.bookCat.run );
} );
}
);
}
} );
8imcnbuzqjlesp5b47ghamq7c8ztj6t
14955
14954
2024-12-28T03:11:13Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#BookCat_edit_request
14955
javascript
text/javascript
// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js
// Set `var bookCatAJAX = true;` to add BookCat without reloading the page
$(() => {
const bookCat = {};
window.bookCat = bookCat;
bookCat.config = {
name: '[[User:1234qwer1234qwer4/BookCat.js|BookCat.js]]',
debug: false
};
bookCat.summary = "Added {{[[Template:BookCat|BookCat]]}} using " + bookCat.config.name;
bookCat.run = function () {
var editSummary = bookCat.summary;
if ( bookCat.config.debug ) {
console.log ( editSummary );
}
var api = new mw.Api();
api.get( {
action: 'query',
titles: mw.config.get( 'wgPageName' ),
prop: 'revisions',
rvprop: 'content',
rvslots: 'main',
formatversion: 2
} ).done(
function ( response ) {
console.log( response );
var text = response.query.pages[0].revisions[0].slots.main.content;
if(text.match(/\{\{\s*Bookcat\s*\}\}/i)){
return mw.notify("BookCat already present.");
}
text += '\n\n{{BookCat}}';
api.postWithEditToken( {
action: 'edit',
minor: true,
title: mw.config.get( 'wgPageName' ),
text: text,
summary: editSummary
} ).done(
function() {
if(typeof bookCatAJAX == "undefined" || bookCatAJAX == false){
location.reload();
}
else mw.notify("BookCat successfully added.");
}
);
}
);
};
});
$( document ).ready( () => {
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get('wgAction') === 'view' && mw.config.get('wgCategories').every(e => !e.includes("Book:")) ) {
mw.loader.using(
[ 'mediawiki.util' ],
function () {
var link = mw.util.addPortletLink( 'p-cactions', '#', 'BookCat', 'ca-bookcat', 'Add BookCat');
$( link ).click( function ( event ) {
event.preventDefault();
mw.loader.using( 'mediawiki.api', window.bookCat.run );
} );
}
);
}
} );
mok8cchtbdwda4z2s0f96m869l4052h
14956
14955
2026-08-01T17:29:24Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-BookCat.js]] पासून ४ आवर्तने आयात केलीत
14955
javascript
text/javascript
// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js
// Set `var bookCatAJAX = true;` to add BookCat without reloading the page
$(() => {
const bookCat = {};
window.bookCat = bookCat;
bookCat.config = {
name: '[[User:1234qwer1234qwer4/BookCat.js|BookCat.js]]',
debug: false
};
bookCat.summary = "Added {{[[Template:BookCat|BookCat]]}} using " + bookCat.config.name;
bookCat.run = function () {
var editSummary = bookCat.summary;
if ( bookCat.config.debug ) {
console.log ( editSummary );
}
var api = new mw.Api();
api.get( {
action: 'query',
titles: mw.config.get( 'wgPageName' ),
prop: 'revisions',
rvprop: 'content',
rvslots: 'main',
formatversion: 2
} ).done(
function ( response ) {
console.log( response );
var text = response.query.pages[0].revisions[0].slots.main.content;
if(text.match(/\{\{\s*Bookcat\s*\}\}/i)){
return mw.notify("BookCat already present.");
}
text += '\n\n{{BookCat}}';
api.postWithEditToken( {
action: 'edit',
minor: true,
title: mw.config.get( 'wgPageName' ),
text: text,
summary: editSummary
} ).done(
function() {
if(typeof bookCatAJAX == "undefined" || bookCatAJAX == false){
location.reload();
}
else mw.notify("BookCat successfully added.");
}
);
}
);
};
});
$( document ).ready( () => {
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get('wgAction') === 'view' && mw.config.get('wgCategories').every(e => !e.includes("Book:")) ) {
mw.loader.using(
[ 'mediawiki.util' ],
function () {
var link = mw.util.addPortletLink( 'p-cactions', '#', 'BookCat', 'ca-bookcat', 'Add BookCat');
$( link ).click( function ( event ) {
event.preventDefault();
mw.loader.using( 'mediawiki.api', window.bookCat.run );
} );
}
);
}
} );
mok8cchtbdwda4z2s0f96m869l4052h
साचा:BookCat/default
10
4175
15004
2016-10-31T19:18:35Z
Pi zero
2546
mv from parent template
15004
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]][[Category:Pages with deep filing]]
|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
hlg52lfn0i9cchcrka2jm2ot52j8z3j
15005
15004
2016-10-31T19:18:55Z
Pi zero
2546
Protected "[[Template:BookCat/default]]": High-impact page: Matching protection on parent ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
15004
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{{1|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}} ]][[Category:Pages with deep filing]]
|[[Category:{{FULLBOOKNAME}}|{{{1|{{#titleparts:{{FULLPAGENAME}}||2}}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
hlg52lfn0i9cchcrka2jm2ot52j8z3j
15006
15005
2016-11-07T23:11:01Z
Pi zero
2546
{{{1}}}
15006
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[Category:{{#if:{{CHAPTERNAME}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#if:{{CHAPTERNAME}}|{{#titleparts:{{PAGENAME}}||-1}}}}}} ]][[Category:Pages with deep filing]]
|[[Category:{{FULLBOOKNAME}}|{{#if:{{{1|}}}|{{{1}}}|{{#titleparts:{{FULLPAGENAME}}||2}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
3rjjt5exf4h03j4dfe7fciwdiogk7so
15007
15006
2016-12-11T19:49:57Z
Pi zero
2546
eliminate uses of CHAPTERNAME
15007
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[Category:{{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{PAGENAME}}||-1}}}}}} ]][[Category:Pages with deep filing]]
|[[Category:{{FULLBOOKNAME}}|{{#if:{{{1|}}}|{{{1}}}|{{#titleparts:{{FULLPAGENAME}}||2}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
4h2k1jfvu3ekgp20bjda5oa8txaofo2
15008
15007
2017-04-19T03:41:12Z
Pi zero
2546
use {{[[Template:BOOKCATEGORY|BOOKCATEGORY]]}}
15008
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[{{BOOKCATEGORY|book={{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{PAGENAME}}||-1}}}}}}}} ]][[Category:Pages with deep filing]]
|[[{{BOOKCATEGORY|book={{FULLBOOKNAME}}|{{#if:{{{1|}}}|{{{1}}}|{{#titleparts:{{FULLPAGENAME}}||2}}}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
om5w28ygq8a86glxkn9nxr3qt0camwd
15009
15008
2017-09-14T18:45:45Z
Pi zero
2546
attempted bug fix
15009
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[{{BOOKCATEGORY|book={{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{PAGENAME}}||-1}}}}}} ]][[Category:Pages with deep filing]]
|[[{{BOOKCATEGORY|book={{FULLBOOKNAME}}|{{#if:{{{1|}}}|{{{1}}}|{{#titleparts:{{FULLPAGENAME}}||2}}}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
hwt4yb662k7ojdz6widv6j49c21xflt
15010
15009
2017-09-14T18:47:47Z
Pi zero
2546
alas! second bug fix
15010
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[{{BOOKCATEGORY|book={{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{PAGENAME}}||-1}}}}}} ]][[Category:Pages with deep filing]]
|[[{{BOOKCATEGORY|book={{FULLBOOKNAME}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#titleparts:{{FULLPAGENAME}}||2}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
m8azzk0x4amhswoc7dmh9tsf3y85zvz
15011
15010
2018-01-22T19:34:17Z
Pi zero
2546
template mv
15011
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[{{BOOKCATEGORY|book={{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{FULLPAGENAME}}|-1}}|{{FULLPAGENAME}}}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#if:{{#titleparts:{{FULLPAGENAME}}||2}}|{{#titleparts:{{PAGENAME}}||-1}}}}}} ]][[Category:Pages with deep filing]]
|[[{{BOOKCATEGORY|book={{NAIVEBOOKNAME}}}}|{{#if:{{{1|}}}|{{{1}}}|{{#titleparts:{{FULLPAGENAME}}||2}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
jw1s56j9o7drryc56op88nyxeob16sr
15012
15011
2018-01-29T21:02:08Z
Pi zero
2546
15012
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[{{BOOKCATEGORY|{{{fullpagename}}}|book={{#if:{{#titleparts:{{{fullpagename}}}||2}}|{{#titleparts:{{{fullpagename}}}|-1}}|{{{fullpagename}}}}}}}|{{#if:{{{sortkey|}}}|{{{sortkey}}}|{{#if:{{#titleparts:{{{fullpagename}}}||2}}|{{#titleparts:{{{pagename}}}||-1}}}}}} ]][[Category:Pages with deep filing]]
|[[{{BOOKCATEGORY|{{{fullpagename}}}|book={{NAIVEBOOKNAME|{{{fullpagename}}}}}}}|{{#if:{{{sortkey|}}}|{{{sortkey}}}|{{#titleparts:{{{fullpagename}}}||2}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
19zdiuubcgqk688r91b773tk23n2n05
15013
15012
2026-08-01T17:29:27Z
QueerEcofeminist
1879
[[:en:Template:BookCat/default]] पासून ९ आवर्तने आयात केलीत
15012
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{filing|}}} | deep
|[[{{BOOKCATEGORY|{{{fullpagename}}}|book={{#if:{{#titleparts:{{{fullpagename}}}||2}}|{{#titleparts:{{{fullpagename}}}|-1}}|{{{fullpagename}}}}}}}|{{#if:{{{sortkey|}}}|{{{sortkey}}}|{{#if:{{#titleparts:{{{fullpagename}}}||2}}|{{#titleparts:{{{pagename}}}||-1}}}}}} ]][[Category:Pages with deep filing]]
|[[{{BOOKCATEGORY|{{{fullpagename}}}|book={{NAIVEBOOKNAME|{{{fullpagename}}}}}}}|{{#if:{{{sortkey|}}}|{{{sortkey}}}|{{#titleparts:{{{fullpagename}}}||2}}}} ]]
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
19zdiuubcgqk688r91b773tk23n2n05
साचा:NAIVEBOOKNAME
10
4176
15014
2008-04-01T20:58:19Z
Darklama
2894
returns the name of a book including the namespace
15014
wikitext
text/x-wiki
<includeonly>{{#titleparts:{{{1|{{FULLPAGENAME}}}}}|1}}</includeonly><noinclude>Returns the name of the book including the namespace.</noinclude>
l9fpet3ftyp5b0dl2729ij0zfntbkg2
15015
15014
2008-04-01T20:58:36Z
Darklama
2894
Protected "[[Template:FULLBOOKNAME]]": should never need to be changed [edit=sysop:move=sysop]
15014
wikitext
text/x-wiki
<includeonly>{{#titleparts:{{{1|{{FULLPAGENAME}}}}}|1}}</includeonly><noinclude>Returns the name of the book including the namespace.</noinclude>
l9fpet3ftyp5b0dl2729ij0zfntbkg2
15016
15015
2009-06-27T04:12:36Z
Adrignola
502
+category
15016
wikitext
text/x-wiki
<includeonly>{{#titleparts:{{{1|{{FULLPAGENAME}}}}}|1}}</includeonly><noinclude>Returns the name of the book including the namespace.[[Category:Magic word templates|{{PAGENAME}}]]</noinclude>
9gvp6re4oi4sy6glbk2y5am50oq7rxq
15017
15016
2010-04-21T18:51:58Z
Adrignola
502
using {{documentation}}
15017
wikitext
text/x-wiki
<includeonly>{{#titleparts:{{{1|{{FULLPAGENAME}}}}}|1}}</includeonly><noinclude>{{documentation}}</noinclude>
p6elrbww9zt8w5vven8h68v7asswoj9
15018
15017
2018-01-22T17:55:27Z
Pi zero
2546
Pi zero moved page [[Template:FULLBOOKNAME]] to [[Template:NAIVEBOOKNAME]]: description
15017
wikitext
text/x-wiki
<includeonly>{{#titleparts:{{{1|{{FULLPAGENAME}}}}}|1}}</includeonly><noinclude>{{documentation}}</noinclude>
p6elrbww9zt8w5vven8h68v7asswoj9
15019
15018
2026-08-01T17:29:27Z
QueerEcofeminist
1879
[[:en:Template:NAIVEBOOKNAME]] पासून ५ आवर्तने आयात केलीत
15017
wikitext
text/x-wiki
<includeonly>{{#titleparts:{{{1|{{FULLPAGENAME}}}}}|1}}</includeonly><noinclude>{{documentation}}</noinclude>
p6elrbww9zt8w5vven8h68v7asswoj9
मिडियाविकी:Gadget-OneClickWelcomer.js
8
4177
15048
2024-12-10T11:30:57Z
Leaderboard
2891
Created page with "//<nowiki> function welcomeToWikibooks(username) { var OCWparams; var api; if (isIPwb(username)) { OCWparams = { action: 'edit', title: "User talk:" + username, appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~", summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]", format: 'json' }, api = new mw.Api(); api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {..."
15048
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isIPwb(username) {
const regex = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/gm;
if (regex.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function() {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1");
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
parents.forEach((e) => OCWaddLink(e));
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
39o832eef8jmmuf156gdmb87tpvkb24
15049
15048
2024-12-14T06:34:22Z
Leaderboard
2891
per request
15049
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isIPwb(username) {
const regex = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/gm;
if (regex.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function() {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1");
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
parents.forEach((e) => OCWaddLink(e));
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
6ov54q7xpdt2yv5ib7nplzxi1pi4q25
15050
15049
2024-12-14T07:24:15Z
Leaderboard
2891
15050
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isIPwb(username) {
const regex = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/gm;
if (regex.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function() {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1");
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
parents.forEach((e) => OCWaddLink(e));
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
6jmfqj7rztec98ueubjjka5u9nnq7lk
15051
15050
2024-12-21T03:13:27Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#c-JJPMaster-20241221022600-JJPMaster-20241221022600
15051
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isIPwb(username) {
const regex = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/gm;
if (regex.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function() {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1");
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
parents.forEach((e) => OCWaddLink(e));
function callback(mutationsList, observer) {
mutationsList.forEach((mutation) => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-mw-revid')) {
console.log('Element added:', node);
}
if (node.nodeType === Node.ELEMENT_NODE) {
const matchingDescendants = node.querySelectorAll('[data-mw-revid]');
matchingDescendants.forEach((descendant) => {
OCWaddLink(descendant)
});
}
});
}
});
}
const mo = new MutationObserver(callback);
mo.observe(document.getElementsByClassName("mw-changeslist")[0], {
childList: true,
attributes: true,
subtree: true,
characterData: true
});
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
dnj57wfoszgsc61h6rwrqfxzregqoty
15052
15051
2024-12-23T02:58:55Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#c-JJPMaster-20241222195700-Leaderboard-20241221031400
15052
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isIPwb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isIPwb(username) {
const regex = /(?:^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$)|(?:^(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?$)/gm;
if (regex.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function(e) {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1", "1");
if (!level) return;
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
parents.forEach((e) => OCWaddLink(e));
function callback(mutationsList, observer) {
mutationsList.forEach((mutation) => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-mw-revid')) {
console.log('Element added:', node);
}
if (node.nodeType === Node.ELEMENT_NODE) {
const matchingDescendants = node.querySelectorAll('[data-mw-revid]');
matchingDescendants.forEach((descendant) => {
OCWaddLink(descendant)
});
}
});
}
});
}
if (mw.config.get("wgCanonicalSpecialPageName") == "Recentchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Relatedchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Watchlist") {
const mo = new MutationObserver(callback);
mo.observe(document.getElementsByClassName("mw-changeslist")[0], {
childList: true,
attributes: true,
subtree: true,
characterData: true
});
}
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
b2ykjroz3dxl1fgs894zpmhmig7al3k
15053
15052
2026-01-12T16:42:04Z
JJPMaster
3394
temporary accounts
15053
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isUnregisteredWb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isUnregisteredWb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isUnregisteredWb(username) {
const regex = /^~2.+\d$/gm;
if (.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function(e) {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1", "1");
if (!level) return;
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
parents.forEach((e) => OCWaddLink(e));
function callback(mutationsList, observer) {
mutationsList.forEach((mutation) => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-mw-revid')) {
console.log('Element added:', node);
}
if (node.nodeType === Node.ELEMENT_NODE) {
const matchingDescendants = node.querySelectorAll('[data-mw-revid]');
matchingDescendants.forEach((descendant) => {
OCWaddLink(descendant)
});
}
});
}
});
}
if (mw.config.get("wgCanonicalSpecialPageName") == "Recentchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Relatedchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Watchlist") {
const mo = new MutationObserver(callback);
mo.observe(document.getElementsByClassName("mw-changeslist")[0], {
childList: true,
attributes: true,
subtree: true,
characterData: true
});
}
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
e4b2pifvkymk5feqvupqzgm1c85s542
15054
15053
2026-01-12T16:45:34Z
JJPMaster
3394
fix
15054
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isUnregisteredWb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isUnregisteredWb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isUnregisteredWb(username) {
const regex = /^~2.+\d$/gm;
if (regex.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function(e) {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1", "1");
if (!level) return;
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
parents.forEach((e) => OCWaddLink(e));
function callback(mutationsList, observer) {
mutationsList.forEach((mutation) => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-mw-revid')) {
console.log('Element added:', node);
}
if (node.nodeType === Node.ELEMENT_NODE) {
const matchingDescendants = node.querySelectorAll('[data-mw-revid]');
matchingDescendants.forEach((descendant) => {
OCWaddLink(descendant)
});
}
});
}
});
}
if (mw.config.get("wgCanonicalSpecialPageName") == "Recentchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Relatedchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Watchlist") {
const mo = new MutationObserver(callback);
mo.observe(document.getElementsByClassName("mw-changeslist")[0], {
childList: true,
attributes: true,
subtree: true,
characterData: true
});
}
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
1ss4u57xgxck9nnsmbqavm50vvkzrdh
15055
15054
2026-08-01T17:30:47Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-OneClickWelcomer.js]] पासून ७ आवर्तने आयात केलीत
15054
javascript
text/javascript
//<nowiki>
function welcomeToWikibooks(username) {
var OCWparams;
var api;
if (isUnregisteredWb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n== Welcome to Wikibooks! ==\r\n{{subst:Welcome-anon}} ~~~~",
summary: "Welcomed new anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: "\r\n{{subst:Welcome}} ~~~~",
summary: "Welcomed new user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully welcomed the user. Click here to redirect to the user talk page.</a>`));
}
function warn(username, level) {
var OCWparams;
var api;
if (isUnregisteredWb(username)) {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:TestAnon${level}}} ~~~~`,
summary: "Warned anonymous user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
else {
OCWparams = {
action: 'edit',
title: "User talk:" + username,
appendtext: `\r\n== {{subst:#time: F Y}} ==\r\n{{subst:Test${level}}} ~~~~`,
summary: "Warned user with [[User:JJPMaster/OneClickWelcomer.js|OneClickWelcomer]]",
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', OCWparams ).done( function ( data ) {
console.log( data );
} );
}
mw.notify($(`<a target="_blank" style="color: black; text-decoration: none;" href="/wiki/User_talk:${username}">Successfully warned the user. Click here to redirect to the user talk page.</a>`));
}
function isUnregisteredWb(username) {
const regex = /^~2.+\d$/gm;
if (regex.test(username)) {
return true;
}
return false;
}
// Adapted from [[w:en:User:BrandonXLF/Restorer.js]]
$(() => {
function getUser(parent) {
return $(parent).closest("[data-mw-revid]").find("a.mw-userlink").find("bdi").text();
}
function OCWaddLink(item) {
var links = item.querySelector('.mw-usertoollinks');
var parent = document.createElement('span'),
el = document.createElement('a');
var parent2 = document.createElement('span'),
el2 = document.createElement('a');
el.addEventListener('click', function() {
el.className = 'welcomer-loading';
welcomeToWikibooks(getUser(parent));
});
el2.addEventListener('click', function(e) {
el2.className = 'warner-loading';
var level = prompt("What level? Type '1', '2', or '3' without the quotes. Default: 1", "1");
if (!level) return;
warn(getUser(parent), level);
});
el.textContent = 'welcome';
el2.textContent = 'warn';
parent.appendChild(el);
parent2.appendChild(el2);
if (links !== null)
links.append(parent, parent2);
}
var parents = document.querySelectorAll('[data-mw-revid]');
parents.forEach((e) => OCWaddLink(e));
function callback(mutationsList, observer) {
mutationsList.forEach((mutation) => {
if (mutation.type === 'childList') {
mutation.addedNodes.forEach((node) => {
if (node.nodeType === Node.ELEMENT_NODE && node.hasAttribute('data-mw-revid')) {
console.log('Element added:', node);
}
if (node.nodeType === Node.ELEMENT_NODE) {
const matchingDescendants = node.querySelectorAll('[data-mw-revid]');
matchingDescendants.forEach((descendant) => {
OCWaddLink(descendant)
});
}
});
}
});
}
if (mw.config.get("wgCanonicalSpecialPageName") == "Recentchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Relatedchanges" || mw.config.get("wgCanonicalSpecialPageName") == "Watchlist") {
const mo = new MutationObserver(callback);
mo.observe(document.getElementsByClassName("mw-changeslist")[0], {
childList: true,
attributes: true,
subtree: true,
characterData: true
});
}
function OCWalternateAddLink() {
mw.util.addPortletLink('p-tb', '#', 'Welcome', 'OCWwelcome-wikibooks', 'Welcome this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 1)', 'OCWwarn1-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 2)', 'OCWwarn2-wikibooks', 'Warn this user');
mw.util.addPortletLink('p-tb', '#', 'Warn (level 3)', 'OCWwarn3-wikibooks', 'Warn this user');
$("#OCWwelcome-wikibooks").click(() => welcomeToWikibooks(mw.config.get("wgRelevantUserName")));
$("#OCWwarn1-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 1));
$("#OCWwarn2-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 2));
$("#OCWwarn3-wikibooks").click(() => warn(mw.config.get("wgRelevantUserName"), 3));
}
if(mw.config.get("wgCanonicalNamespace") == "User" || mw.config.get("wgCanonicalNamespace") == "User_talk" || mw.config.get("wgCanonicalSpecialPageName") == "Contributions") {
OCWalternateAddLink();
}
});
//</nowiki>
1ss4u57xgxck9nnsmbqavm50vvkzrdh
मिडियाविकी:Gadget-bottomtabs.css
8
4178
15056
2008-01-18T03:12:01Z
Mike.lifeguard
117
for better bottom tabs
15056
css
text/css
/* bottom tab styling (not for IE currently) */
#mytabs {
margin: -0.3em 0 0 11.5em;
white-space:nowrap;
line-height: 1.1em;
overflow: visible;
border-collapse: collapse;
padding: 0 0 0 1em;
list-style: none;
font-size: 95%;
}
#mytabs .hiddenStructure { display: none; }
#mytabs li {
display: inline;
border: 1px solid #aaaaaa;
border-top: none;
padding: 0.1em 0 0 0;
margin: 0 0.3em 0 0;
overflow: visible;
background: White;
}
#mytabs li.selected {
border-color: #fabd23;
padding: 0.2em 0 0 0;
}
#mytabs li a {
background-color: White;
color: #002bb8;
border: none;
padding: 0.3em 0.8em 0 0.8em;
text-decoration: none;
text-transform: lowercase;
position: relative;
margin: 0;
}
#mytabs li.selected a { z-index: 3; }
#mytabs .new a { color:#ba0000; }
#mytabs li a:hover {
z-index: 3;
text-decoration: none;
}
#mytabs h5 { display: none; }
#mytabs li.istalk { margin-right: 0; }
#mytabs li.istalk a { padding-right: 0.5em; }
#mytabs-ca-addsection a {
padding-left: 0.4em;
padding-right: 0.4em;
}
/* offsets to distinguish the tab groups */
li#mytabs-ca-talk { margin-right: 1.6em; }
li#mytabs-ca-watch, li#mytabs-ca-unwatch, li#mytabs-ca-varlang-0, li#mytabs-ca-print { margin-left: 1.6em; }
/* remove comment tags if bottom tabs should be rounded as well in moz */
/* #mytabs li, #mytabs li a {
-moz-border-radius-bottomleft: 1em;
-moz-border-radius-bottomright: 1em;
}*/
ewh5rzy3kqfl3nm1c5dc0r6aqtxc29g
15057
15056
2009-05-21T19:27:44Z
Darklama
2894
tweaked style
15057
css
text/css
/* bottom tab styling (not for IE currently) */
#mytabs {
margin: -0.3em 0 0 11.5em;
white-space: nowrap;
width: 76%;
line-height: 1.1em;
overflow: visible;
background: none;
border-collapse: collapse;
padding-left: 1em;
list-style: none;
font-size: 95%;
}
#mytabs ul { list-style: none; }
#mytabs li { display:inline; border:1px solid #aaa; border-bottom:0px; padding:0 0 0.1em 0; margin:0 0.3em 0 0; overflow:visible; background:white; }
#mytabs li.selected { border-color:#fabd23; padding:0 0 0.2em 0; font-weight:bold; }
#mytabs li a { background-color: #fbfbfb; color: #002bb8; border: none; padding:0 0.8em 0.3em; z-index:0; margin:0; text-decoration: none; }
#mytabs li.selected a { z-index: 3; padding:0 1em 0.2em; background-color: white; }
#mytabs .new a { color: #ba0000; }
#mytabs li a:hover { z-index: 3; text-decoration: none; background-color: white; }
#mytabs h5 { display: none; }
#mytabs li.istalk { margin-right: 0; }
#mytabs li.istalk a { padding-right:0.5em; }
#mytabs-ca-addsection a { padding:0 0.4em; }
#mytabs .pBody { background-color:transparent; color: inherit; border-collapse: inherit; border:0; padding:0; }
#mytabs .hiddenStructure { display: none; }
#mytabs li a { text-transform: lowercase; }
/* offsets to distinguish the tab groups */
li#mytabs-ca-talk { margin-right: 1.6em; }
li#mytabs-ca-watch, li#mytabs-ca-unwatch, li#mytabs-ca-varlang-0, li#mytabs-ca-print { margin-left: 1.6em; }
/* remove comment tags if bottom tabs should be rounded as well in moz */
/* #mytabs li, #mytabs li a {
-moz-border-radius-bottomleft: 1em;
-moz-border-radius-bottomright: 1em;
}*/
0809fcl4y3sw4bq3d08gp4j5g5xlofk
15058
15057
2009-05-21T19:37:03Z
Darklama
2894
tweaked style
15058
css
text/css
/* bottom tab styling (not for IE currently) */
#mytabs {
margin: -0.3em 0 0 11.5em;
white-space: nowrap;
width: 76%;
line-height: 1.1em;
overflow: visible;
background: none;
border-collapse: collapse;
padding-left: 1em;
list-style: none;
font-size: 95%;
}
#mytabs ul { list-style: none; }
#mytabs li { display:inline; border:1px solid #aaa; border-top:0px; padding-left:0.1em; margin:0 0.3em 0 0; overflow:visible; background:white; }
#mytabs li.selected { border-color:#fabd23; padding-left:0.2em; font-weight:bold; }
#mytabs li a { background-color: #fbfbfb; color: #002bb8; border: none; padding:0.3em 0.8em 0; z-index:0; margin:0; text-decoration: none; }
#mytabs li.selected a { z-index: 3; padding:0.2em 1em 0em; background-color: white; }
#mytabs .new a { color: #ba0000; }
#mytabs li a:hover { z-index: 3; text-decoration: none; background-color: white; }
#mytabs h5 { display: none; }
#mytabs li.istalk { margin-right: 0; }
#mytabs li.istalk a { padding-right:0.5em; }
#mytabs-ca-addsection a { padding:0 0.4em; }
#mytabs .pBody { background-color:transparent; color: inherit; border-collapse: inherit; border:0; padding:0; }
#mytabs .hiddenStructure { display: none; }
#mytabs li a { text-transform: lowercase; }
/* offsets to distinguish the tab groups */
li#mytabs-ca-talk { margin-right: 1.6em; }
li#mytabs-ca-watch, li#mytabs-ca-unwatch, li#mytabs-ca-varlang-0, li#mytabs-ca-print { margin-left: 1.6em; }
/* remove comment tags if bottom tabs should be rounded as well in moz */
/* #mytabs li, #mytabs li a {
-moz-border-radius-bottomleft: 1em;
-moz-border-radius-bottomright: 1em;
}*/
4hax7d624apok0jbr1fklbjl6dxvv41
15059
15058
2009-05-21T19:43:55Z
Darklama
2894
tweaked
15059
css
text/css
/* bottom tab styling (not for IE currently) */
#mytabs {
margin: -0.3em 0 0 11.5em;
white-space: nowrap;
width: 76%;
line-height: 1.1em;
overflow: visible;
background: none;
border-collapse: collapse;
padding-left: 1em;
list-style: none;
font-size: 95%;
}
#mytabs ul { list-style: none; }
#mytabs li { display:inline; border:1px solid #aaaaaa; border-top:0px; padding-top:0.1em; margin:0 0.3em 0 0; overflow:visible; background:white; }
#mytabs li.selected { border-color:#fabd23; padding-top:0.2em; font-weight:bold; }
#mytabs li a { background-color:#fbfbfb; color:#002bb8; border:0px; padding:0.3em 0.8em 0; z-index:0; margin:0; text-decoration:none; }
#mytabs li.selected a { z-index:3; padding:0.2em 1em 0em; background-color:white; }
#mytabs .new a { color:#ba0000; }
#mytabs li a:hover { z-index:3; text-decoration:none; background-color:white; }
#mytabs h5 { display:none; }
#mytabs li.istalk { margin-right:0; }
#mytabs li.istalk a { padding-right:0.5em; }
#mytabs-ca-addsection a { padding:0 0.4em; }
#mytabs .pBody { background-color:transparent; color:inherit; border-collapse:inherit; border:0; padding:0; }
#mytabs .hiddenStructure { display:none; }
#mytabs li a { text-transform:lowercase; }
/* offsets to distinguish the tab groups */
li#mytabs-ca-talk { margin-right:1.6em; }
li#mytabs-ca-watch, li#mytabs-ca-unwatch, li#mytabs-ca-varlang-0, li#mytabs-ca-print { margin-left:1.6em; }
/* remove comment tags if bottom tabs should be rounded as well in moz */
/* #mytabs li, #mytabs li a {
-moz-border-radius-bottomleft: 1em;
-moz-border-radius-bottomright: 1em;
}*/
fhuvg52axuzucd89waxprcot0c7v74m
15060
15059
2010-12-04T22:02:42Z
Darklama
2894
updated to reflect changes to implementation
15060
css
text/css
/* bottom tab styling (not for IE currently) */
#b-p-cactions {
margin: -0.3em 0 0 11.5em;
white-space: nowrap;
width: 76%;
line-height: 1.1em;
overflow: visible;
background: none;
border-collapse: collapse;
padding-left: 1em;
list-style: none;
font-size: 95%;
}
#b-p-cactions ul { list-style: none; }
#b-p-cactions li { display:inline; border:1px solid #aaaaaa; border-top:0px; padding-top:0.1em; margin:0 0.3em 0 0; overflow:visible; background:white; }
#b-p-cactions li.selected { border-color:#fabd23; padding-top:0.2em; font-weight:bold; }
#b-p-cactions li a { background-color:#fbfbfb; color:#002bb8; border:0px; padding:0.3em 0.8em 0; z-index:0; margin:0; text-decoration:none; }
#b-p-cactions li.selected a { z-index:3; padding:0.2em 1em 0em; background-color:white; }
#b-p-cactions .new a { color:#ba0000; }
#b-p-cactions li a:hover { z-index:3; text-decoration:none; background-color:white; }
#b-p-cactions h5 { display:none; }
#b-p-cactions li.istalk { margin-right:0; }
#b-p-cactions li.istalk a { padding-right:0.5em; }
#b-p-cactions-ca-addsection a { padding:0 0.4em; }
#b-p-cactions .pBody { background-color:transparent; color:inherit; border-collapse:inherit; border:0; padding:0; }
#b-p-cactions .hiddenStructure { display:none; }
#b-p-cactions li a { text-transform:lowercase; }
/* offsets to distinguish the tab groups */
li#b-ca-talk { margin-right:1.6em; }
li#b-ca-watch, li#mytabs-ca-unwatch, li#mytabs-ca-varlang-0, li#mytabs-ca-print { margin-left:1.6em; }
qjl1ygyeyy0n780fea5pytqxsv315iq
15061
15060
2010-12-04T22:09:51Z
Darklama
2894
missed some
15061
css
text/css
/* bottom tab styling (not for IE currently) */
#b-p-cactions {
margin: -0.3em 0 0 11.5em;
white-space: nowrap;
width: 76%;
line-height: 1.1em;
overflow: visible;
background: none;
border-collapse: collapse;
padding-left: 1em;
list-style: none;
font-size: 95%;
}
#b-p-cactions ul { list-style: none; }
#b-p-cactions li { display:inline; border:1px solid #aaaaaa; border-top:0px; padding-top:0.1em; margin:0 0.3em 0 0; overflow:visible; background:white; }
#b-p-cactions li.selected { border-color:#fabd23; padding-top:0.2em; font-weight:bold; }
#b-p-cactions li a { background-color:#fbfbfb; color:#002bb8; border:0px; padding:0.3em 0.8em 0; z-index:0; margin:0; text-decoration:none; }
#b-p-cactions li.selected a { z-index:3; padding:0.2em 1em 0em; background-color:white; }
#b-p-cactions .new a { color:#ba0000; }
#b-p-cactions li a:hover { z-index:3; text-decoration:none; background-color:white; }
#b-p-cactions h5 { display:none; }
#b-p-cactions li.istalk { margin-right:0; }
#b-p-cactions li.istalk a { padding-right:0.5em; }
#b-p-cactions-ca-addsection a { padding:0 0.4em; }
#b-p-cactions .pBody { background-color:transparent; color:inherit; border-collapse:inherit; border:0; padding:0; }
#b-p-cactions .hiddenStructure { display:none; }
#b-p-cactions li a { text-transform:lowercase; }
/* offsets to distinguish the tab groups */
li#b-ca-talk { margin-right:1.6em; }
li#b-ca-watch, li#b-ca-unwatch, li#b-ca-varlang-0, li#b-ca-print { margin-left:1.6em; }
nrop60r6qen75quo937rmhsnreelmwm
15062
15061
2011-02-27T13:59:02Z
Darklama
2894
moved [[MediaWiki:Gadget-btabs.css]] to [[MediaWiki:Gadget-bottomtabs.css]]: reflects what it is used with
15061
css
text/css
/* bottom tab styling (not for IE currently) */
#b-p-cactions {
margin: -0.3em 0 0 11.5em;
white-space: nowrap;
width: 76%;
line-height: 1.1em;
overflow: visible;
background: none;
border-collapse: collapse;
padding-left: 1em;
list-style: none;
font-size: 95%;
}
#b-p-cactions ul { list-style: none; }
#b-p-cactions li { display:inline; border:1px solid #aaaaaa; border-top:0px; padding-top:0.1em; margin:0 0.3em 0 0; overflow:visible; background:white; }
#b-p-cactions li.selected { border-color:#fabd23; padding-top:0.2em; font-weight:bold; }
#b-p-cactions li a { background-color:#fbfbfb; color:#002bb8; border:0px; padding:0.3em 0.8em 0; z-index:0; margin:0; text-decoration:none; }
#b-p-cactions li.selected a { z-index:3; padding:0.2em 1em 0em; background-color:white; }
#b-p-cactions .new a { color:#ba0000; }
#b-p-cactions li a:hover { z-index:3; text-decoration:none; background-color:white; }
#b-p-cactions h5 { display:none; }
#b-p-cactions li.istalk { margin-right:0; }
#b-p-cactions li.istalk a { padding-right:0.5em; }
#b-p-cactions-ca-addsection a { padding:0 0.4em; }
#b-p-cactions .pBody { background-color:transparent; color:inherit; border-collapse:inherit; border:0; padding:0; }
#b-p-cactions .hiddenStructure { display:none; }
#b-p-cactions li a { text-transform:lowercase; }
/* offsets to distinguish the tab groups */
li#b-ca-talk { margin-right:1.6em; }
li#b-ca-watch, li#b-ca-unwatch, li#b-ca-varlang-0, li#b-ca-print { margin-left:1.6em; }
nrop60r6qen75quo937rmhsnreelmwm
15063
15062
2026-08-01T17:31:13Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-bottomtabs.css]] पासून ७ आवर्तने आयात केलीत
15061
css
text/css
/* bottom tab styling (not for IE currently) */
#b-p-cactions {
margin: -0.3em 0 0 11.5em;
white-space: nowrap;
width: 76%;
line-height: 1.1em;
overflow: visible;
background: none;
border-collapse: collapse;
padding-left: 1em;
list-style: none;
font-size: 95%;
}
#b-p-cactions ul { list-style: none; }
#b-p-cactions li { display:inline; border:1px solid #aaaaaa; border-top:0px; padding-top:0.1em; margin:0 0.3em 0 0; overflow:visible; background:white; }
#b-p-cactions li.selected { border-color:#fabd23; padding-top:0.2em; font-weight:bold; }
#b-p-cactions li a { background-color:#fbfbfb; color:#002bb8; border:0px; padding:0.3em 0.8em 0; z-index:0; margin:0; text-decoration:none; }
#b-p-cactions li.selected a { z-index:3; padding:0.2em 1em 0em; background-color:white; }
#b-p-cactions .new a { color:#ba0000; }
#b-p-cactions li a:hover { z-index:3; text-decoration:none; background-color:white; }
#b-p-cactions h5 { display:none; }
#b-p-cactions li.istalk { margin-right:0; }
#b-p-cactions li.istalk a { padding-right:0.5em; }
#b-p-cactions-ca-addsection a { padding:0 0.4em; }
#b-p-cactions .pBody { background-color:transparent; color:inherit; border-collapse:inherit; border:0; padding:0; }
#b-p-cactions .hiddenStructure { display:none; }
#b-p-cactions li a { text-transform:lowercase; }
/* offsets to distinguish the tab groups */
li#b-ca-talk { margin-right:1.6em; }
li#b-ca-watch, li#b-ca-unwatch, li#b-ca-varlang-0, li#b-ca-print { margin-left:1.6em; }
nrop60r6qen75quo937rmhsnreelmwm
मिडियाविकी:Gadget-bottomtabs.js
8
4179
15064
2007-11-20T08:58:17Z
Mike.lifeguard
117
New page: function morelinks() { var tabs = document.getElementById('p-cactions').cloneNode(true); // don't use the same ids twice- replace the p-cactions id and prepend 'mytabs-' to the li's ...
15064
javascript
text/javascript
function morelinks() {
var tabs = document.getElementById('p-cactions').cloneNode(true);
// don't use the same ids twice- replace the p-cactions id and prepend 'mytabs-' to the li's
tabs.id = 'mytabs';
// needs this to be set from js, it ignores the css width for some reason
tabs.style.width = '100%';
var listitems = tabs.getElementsByTagName('LI');
for (i=0;i<listitems.length;i++) {
if(listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
}
// drop them at the bottom of the content area
document.getElementById('content').appendChild(tabs);
}
if (window.addEventListener) window.addEventListener("load",morelinks,false);
else if (window.attachEvent) window.attachEvent("onload",morelinks);
sqmm7uyifer25kt6gfkumgmr0e9z03b
15065
15064
2007-11-20T09:12:14Z
Mike.lifeguard
117
Protected "[[User:Mike.lifeguard/bottomtabs.js]]": personal js [edit=sysop:move=sysop]
15064
javascript
text/javascript
function morelinks() {
var tabs = document.getElementById('p-cactions').cloneNode(true);
// don't use the same ids twice- replace the p-cactions id and prepend 'mytabs-' to the li's
tabs.id = 'mytabs';
// needs this to be set from js, it ignores the css width for some reason
tabs.style.width = '100%';
var listitems = tabs.getElementsByTagName('LI');
for (i=0;i<listitems.length;i++) {
if(listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
}
// drop them at the bottom of the content area
document.getElementById('content').appendChild(tabs);
}
if (window.addEventListener) window.addEventListener("load",morelinks,false);
else if (window.attachEvent) window.attachEvent("onload",morelinks);
sqmm7uyifer25kt6gfkumgmr0e9z03b
15066
15065
2007-12-18T18:10:45Z
Mike.lifeguard
117
[[User:Mike.lifeguard/bottomtabs.js]] moved to [[MediaWiki:Gadget-bottomtabs.js]]: add to extension
15064
javascript
text/javascript
function morelinks() {
var tabs = document.getElementById('p-cactions').cloneNode(true);
// don't use the same ids twice- replace the p-cactions id and prepend 'mytabs-' to the li's
tabs.id = 'mytabs';
// needs this to be set from js, it ignores the css width for some reason
tabs.style.width = '100%';
var listitems = tabs.getElementsByTagName('LI');
for (i=0;i<listitems.length;i++) {
if(listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
}
// drop them at the bottom of the content area
document.getElementById('content').appendChild(tabs);
}
if (window.addEventListener) window.addEventListener("load",morelinks,false);
else if (window.attachEvent) window.attachEvent("onload",morelinks);
sqmm7uyifer25kt6gfkumgmr0e9z03b
15067
15066
2009-05-21T18:43:07Z
Darklama
2894
fix placement of tabs
15067
javascript
text/javascript
function morelinks() {
var tabs = document.getElementById('p-cactions').cloneNode(true);
tabs.id = 'mytabs';
var listitems = tabs.getElementsByTagName('LI');
for (i=0; i<listitems.length; i++) {
if (listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
}
// needs this to be set from js, it ignores the css width for some reason
if (tabs.style && tabs.style.width) {
tabs.style.width = '100%';
}
document.getElementById('p-cactions').parentNode.appendChild(tabs);
}
addHandler("load", morelinks);
i43vznp9391rt5hzbp4ybz3eddy4vdu
15068
15067
2009-05-21T18:45:23Z
Darklama
2894
fix
15068
javascript
text/javascript
function morelinks() {
var tabs = document.getElementById('p-cactions').cloneNode(true);
tabs.id = 'mytabs';
var listitems = tabs.getElementsByTagName('LI');
for (i=0; i<listitems.length; i++) {
if (listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
}
// needs this to be set from js, it ignores the css width for some reason
if (tabs.style && tabs.style.width) {
tabs.style.width = '100%';
}
document.getElementById('p-cactions').parentNode.appendChild(tabs);
}
hookEvent("load", morelinks);
crmwtu1dbcw1ehew62dkwlfptht4gkq
15069
15068
2009-05-21T19:30:42Z
Darklama
2894
tweak placement
15069
javascript
text/javascript
function morelinks() {
var tabs = document.getElementById('p-cactions').cloneNode(true);
tabs.id = 'mytabs';
var listitems = tabs.getElementsByTagName('LI');
for (i=0; i<listitems.length; i++) {
if (listitems[i].id) listitems[i].id = 'mytabs-' + listitems[i].id;
}
// needs this to be set from js, it ignores the css width for some reason
if (tabs.style && tabs.style.width) {
tabs.style.width = '75%';
}
document.getElementById('column-content').appendChild(tabs);
}
hookEvent("load", morelinks);
ptwu0fopbk0k5c72rffjaqgijw409g7
15070
15069
2010-12-04T21:52:03Z
Darklama
2894
make it work with vector
15070
javascript
text/javascript
// <source lang="javascript">
$j(document).ready( function() {
var find_ids = [ 'left-navigation', 'right-navigation', 'p-cactions' ], tabs, li;
var content = document.getElementById('bodyContent') || document.getElementById('article') || document.getElementById('content');
if ( !content ) {
return true;
}
for (var i = 0; i < finds_ids.length; ++i) {
tabs = document.getElementById(find_ids[i]);
if ( !tabs ) { continue; }
tabs = tabs.cloneNode(true);
tabs.id = 'b-' + tabs.id;
li = tabs.getElementsByTagName('li');
for (var j = 0; j < li.length; ++j) {
if ( li[j].id ) {
li[j].id = 'b-' . li[j].id;
}
}
content.appendChild(tabs);
}
});
// </source>
5eyb5cx9xvs5nnjnxqmem5n9aofi2qp
15071
15070
2010-12-04T21:55:21Z
Darklama
2894
typo
15071
javascript
text/javascript
// <source lang="javascript">
$j(document).ready( function() {
var find_ids = [ 'left-navigation', 'right-navigation', 'p-cactions' ], tabs, li;
var content = document.getElementById('bodyContent') || document.getElementById('article') || document.getElementById('content');
if ( !content ) {
return true;
}
for (var i = 0; i < find_ids.length; ++i) {
tabs = document.getElementById(find_ids[i]);
if ( !tabs ) { continue; }
tabs = tabs.cloneNode(true);
tabs.id = 'b-' + tabs.id;
li = tabs.getElementsByTagName('li');
for (var j = 0; j < li.length; ++j) {
if ( li[j].id ) {
li[j].id = 'b-' . li[j].id;
}
}
content.appendChild(tabs);
}
});
// </source>
n9upmiola489ze1ti6eed8aoa9qyad6
15072
15071
2010-12-04T21:56:09Z
Darklama
2894
typo
15072
javascript
text/javascript
// <source lang="javascript">
$j(document).ready( function() {
var find_ids = [ 'left-navigation', 'right-navigation', 'p-cactions' ], tabs, li;
var content = document.getElementById('bodyContent') || document.getElementById('article') || document.getElementById('content');
if ( !content ) {
return true;
}
for (var i = 0; i < find_ids.length; ++i) {
tabs = document.getElementById(find_ids[i]);
if ( !tabs ) { continue; }
tabs = tabs.cloneNode(true);
tabs.id = 'b-' + tabs.id;
li = tabs.getElementsByTagName('li');
for (var j = 0; j < li.length; ++j) {
if ( li[j].id ) {
li[j].id = 'b-' + li[j].id;
}
}
content.appendChild(tabs);
}
});
// </source>
934c4g65mclklvpmlw8j8hju63krg92
15073
15072
2011-02-26T20:12:30Z
Darklama
2894
more jquery, and using mw.util.$content
15073
javascript
text/javascript
$(document).ready( function() {
var find_ids = [ '#left-navigation', '#right-navigation', '#p-cactions' ], tabs;
for (var i = 0; i < find_ids.length; ++i) {
tabs = $(find_ids[i])
.clone(true)
.attr('id', function(i, a) { return 'b-' + a; })
.find('li')
.attr('id', function(i, a) { return 'b-' + a; });
mw.util.$content.append(tabs);
}
});
ksvkx0s70w0ac339xhegw0278kc9v2p
15074
15073
2011-02-26T20:28:07Z
Darklama
2894
15074
javascript
text/javascript
$(document).ready( function() {
var find_ids = [ '#left-navigation', '#right-navigation', '#p-cactions' ], tabs;
for (var i = 0; i < find_ids.length; ++i) {
tabs = $(find_ids[i]).clone(true).attr('id', function(i, a) { return 'b-' + a; });
tabs.find('li').attr('id', function(i, a) { return 'b-' + a; });
mw.util.$content.append(tabs);
}
});
10zij0z2kb8lte6j953lbqwhxjrvi0p
15075
15074
2026-08-01T17:31:22Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-bottomtabs.js]] पासून ११ आवर्तने आयात केलीत
15074
javascript
text/javascript
$(document).ready( function() {
var find_ids = [ '#left-navigation', '#right-navigation', '#p-cactions' ], tabs;
for (var i = 0; i < find_ids.length; ++i) {
tabs = $(find_ids[i]).clone(true).attr('id', function(i, a) { return 'b-' + a; });
tabs.find('li').attr('id', function(i, a) { return 'b-' + a; });
mw.util.$content.append(tabs);
}
});
10zij0z2kb8lte6j953lbqwhxjrvi0p
मिडियाविकी:Gadget-sixtabs.js
8
4180
15076
2007-11-20T08:40:07Z
Mike.lifeguard
117
New page: if (wgNamespaceNumber >= 0) addOnloadHook(function(){ var pCactions = document.getElementById('p-cactions'); if (!pCactions) return; var caMain = pCactions.getElementsByTagName('li')[0]...
15076
javascript
text/javascript
if (wgNamespaceNumber >= 0)
addOnloadHook(function(){
var pCactions = document.getElementById('p-cactions');
if (!pCactions) return;
var caMain = pCactions.getElementsByTagName('li')[0];
var caTalk = document.getElementById('ca-talk');
var caEdit = document.getElementById('ca-edit');
if (!caEdit) caEdit = document.getElementById('ca-viewsource');
var caHistory = document.getElementById('ca-history');
if (!caMain || !caTalk || !caEdit || !caHistory) return;
var el_move, el_create, id2;
if (wgNamespaceNumber % 2) { //talk space
el_move = caTalk; el_create = caMain; id2 = '';
} else {
el_move = caMain; el_create = caTalk; id2 = 'talk';
}
caEdit.firstChild.innerHTML = 'edit';
caHistory.firstChild.innerHTML = 'hist';
el_move.parentNode.insertBefore(caHistory, el_move.nextSibling);
el_move.parentNode.insertBefore(caEdit, el_move.nextSibling);
var href = el_create.firstChild.getAttribute('href', 2);
if (el_create.className.indexOf('new') < 0){
addPortletLink('p-cactions', href + '?action=history', 'hist',
'ca-history-'+id2, id2+' history', '', el_create.nextSibling);
addPortletLink('p-cactions', href + '?action=edit', 'edit',
'ca-edit-'+id2, 'Edit '+id2, '', el_create.nextSibling);
}
caMain.style.marginRight = '0.3em';
caTalk.style.marginRight = '0.3em';
caTalk.style.marginLeft = '1.6em';
})
dp4q4u7gz10usacm0a7vl3yjkf8rt0p
15077
15076
2007-11-20T09:12:32Z
Mike.lifeguard
117
Protected "[[User:Mike.lifeguard/sixtabs.js]]": personal js [edit=sysop:move=sysop]
15076
javascript
text/javascript
if (wgNamespaceNumber >= 0)
addOnloadHook(function(){
var pCactions = document.getElementById('p-cactions');
if (!pCactions) return;
var caMain = pCactions.getElementsByTagName('li')[0];
var caTalk = document.getElementById('ca-talk');
var caEdit = document.getElementById('ca-edit');
if (!caEdit) caEdit = document.getElementById('ca-viewsource');
var caHistory = document.getElementById('ca-history');
if (!caMain || !caTalk || !caEdit || !caHistory) return;
var el_move, el_create, id2;
if (wgNamespaceNumber % 2) { //talk space
el_move = caTalk; el_create = caMain; id2 = '';
} else {
el_move = caMain; el_create = caTalk; id2 = 'talk';
}
caEdit.firstChild.innerHTML = 'edit';
caHistory.firstChild.innerHTML = 'hist';
el_move.parentNode.insertBefore(caHistory, el_move.nextSibling);
el_move.parentNode.insertBefore(caEdit, el_move.nextSibling);
var href = el_create.firstChild.getAttribute('href', 2);
if (el_create.className.indexOf('new') < 0){
addPortletLink('p-cactions', href + '?action=history', 'hist',
'ca-history-'+id2, id2+' history', '', el_create.nextSibling);
addPortletLink('p-cactions', href + '?action=edit', 'edit',
'ca-edit-'+id2, 'Edit '+id2, '', el_create.nextSibling);
}
caMain.style.marginRight = '0.3em';
caTalk.style.marginRight = '0.3em';
caTalk.style.marginLeft = '1.6em';
})
dp4q4u7gz10usacm0a7vl3yjkf8rt0p
15078
15077
2007-11-20T18:11:25Z
Mike.lifeguard
117
?
15078
javascript
text/javascript
if (wgNamespaceNumber >= 0)
addOnloadHook(function(){
var pCactions = document.getElementById('p-cactions');
if (!pCactions) return;
var caMain = pCactions.getElementsByTagName('li')[0];
var caTalk = document.getElementById('ca-talk');
var caEdit = document.getElementById('ca-edit');
if (!caEdit) caEdit = document.getElementById('ca-viewsource');
var caHistory = document.getElementById('ca-history');
if (!caMain || !caTalk || !caEdit || !caHistory) return;
var el_move, el_create, id2;
if (wgNamespaceNumber % 2) { //talk space
el_move = caTalk; el_create = caMain; id2 = 'talk';
} else {
el_move = caMain; el_create = caTalk; id2 = 'talk';
}
caEdit.firstChild.innerHTML = 'edit';
caHistory.firstChild.innerHTML = 'hist';
el_move.parentNode.insertBefore(caHistory, el_move.nextSibling);
el_move.parentNode.insertBefore(caEdit, el_move.nextSibling);
var href = el_create.firstChild.getAttribute('href', 2);
if (el_create.className.indexOf('new') < 0){
addPortletLink('p-cactions', href + '?action=history', 'hist',
'ca-history-'+id2, id2+' history', '', el_create.nextSibling);
addPortletLink('p-cactions', href + '?action=edit', 'edit',
'ca-edit-'+id2, 'Edit '+id2, '', el_create.nextSibling);
}
caMain.style.marginRight = '0.3em';
caTalk.style.marginRight = '0.3em';
caTalk.style.marginLeft = '1.6em';
})
0i88ynyqfv5kzm3tuxx1pe6n1n1s0qg
15079
15078
2007-11-20T18:16:41Z
Mike.lifeguard
117
15079
javascript
text/javascript
if (wgNamespaceNumber >= 0)
addOnloadHook(function(){
var pCactions = document.getElementById('p-cactions');
if (!pCactions) return;
var caMain = pCactions.getElementsByTagName('li')[0];
var caTalk = document.getElementById('ca-talk');
var caEdit = document.getElementById('ca-edit');
if (!caEdit) caEdit = document.getElementById('ca-viewsource');
var caHistory = document.getElementById('ca-history');
if (!caMain || !caTalk || !caEdit || !caHistory) return;
var el_move, el_create, id2;
if (wgNamespaceNumber % 2) { //talk space
el_move = caTalk; el_create = caMain; id2 = '';
} else {
el_move = caMain; el_create = caTalk; id2 = 'talk';
}
caEdit.firstChild.innerHTML = 'edit';
caHistory.firstChild.innerHTML = 'hist';
el_move.parentNode.insertBefore(caHistory, el_move.nextSibling);
el_move.parentNode.insertBefore(caEdit, el_move.nextSibling);
var href = el_create.firstChild.getAttribute('href', 2);
if (el_create.className.indexOf('new') < 0){
addPortletLink('p-cactions', href + '?action=history', 'hist',
'ca-history-'+id2, id2+' history', '', el_create.nextSibling);
addPortletLink('p-cactions', href + '?action=edit', 'edit',
'ca-edit-'+id2, 'Edit '+id2, '', el_create.nextSibling);
}
caMain.style.marginRight = '0.3em';
caTalk.style.marginRight = '0.3em';
caTalk.style.marginLeft = '1.6em';
})
//
85cp6xwtf49d102yz0hc3r5kkddca5v
15080
15079
2007-11-20T18:22:13Z
Mike.lifeguard
117
discussion-->talk
15080
javascript
text/javascript
if (wgNamespaceNumber >= 0)
addOnloadHook(function(){
var pCactions = document.getElementById('p-cactions');
if (!pCactions) return;
var caMain = pCactions.getElementsByTagName('li')[0];
var caTalk = document.getElementById('ca-talk');
var caEdit = document.getElementById('ca-edit');
if (!caEdit) caEdit = document.getElementById('ca-viewsource');
var caHistory = document.getElementById('ca-history');
if (!caMain || !caTalk || !caEdit || !caHistory) return;
var el_move, el_create, id2;
if (wgNamespaceNumber % 2) { //talk space
el_move = caTalk; el_create = caMain; id2 = '';
} else {
el_move = caMain; el_create = caTalk; id2 = 'discussion';
}
caTalk.firstChild.innerHTML = 'talk';
caEdit.firstChild.innerHTML = 'edit';
caHistory.firstChild.innerHTML = 'hist';
el_move.parentNode.insertBefore(caHistory, el_move.nextSibling);
el_move.parentNode.insertBefore(caEdit, el_move.nextSibling);
var href = el_create.firstChild.getAttribute('href', 2);
if (el_create.className.indexOf('new') < 0){
addPortletLink('p-cactions', href + '?action=history', 'hist',
'ca-history-'+id2, id2+' history', '', el_create.nextSibling);
addPortletLink('p-cactions', href + '?action=edit', 'edit',
'ca-edit-'+id2, 'Edit '+id2, '', el_create.nextSibling);
}
caMain.style.marginRight = '0.3em';
caTalk.style.marginRight = '0.3em';
caTalk.style.marginLeft = '1.6em';
})
//
tsplzi4zyo69utork15jlc1o7n8muyc
15081
15080
2007-12-18T18:12:08Z
Mike.lifeguard
117
[[User:Mike.lifeguard/sixtabs.js]] moved to [[MediaWiki:Gadget-sixtabs.js]]: add to extension
15080
javascript
text/javascript
if (wgNamespaceNumber >= 0)
addOnloadHook(function(){
var pCactions = document.getElementById('p-cactions');
if (!pCactions) return;
var caMain = pCactions.getElementsByTagName('li')[0];
var caTalk = document.getElementById('ca-talk');
var caEdit = document.getElementById('ca-edit');
if (!caEdit) caEdit = document.getElementById('ca-viewsource');
var caHistory = document.getElementById('ca-history');
if (!caMain || !caTalk || !caEdit || !caHistory) return;
var el_move, el_create, id2;
if (wgNamespaceNumber % 2) { //talk space
el_move = caTalk; el_create = caMain; id2 = '';
} else {
el_move = caMain; el_create = caTalk; id2 = 'discussion';
}
caTalk.firstChild.innerHTML = 'talk';
caEdit.firstChild.innerHTML = 'edit';
caHistory.firstChild.innerHTML = 'hist';
el_move.parentNode.insertBefore(caHistory, el_move.nextSibling);
el_move.parentNode.insertBefore(caEdit, el_move.nextSibling);
var href = el_create.firstChild.getAttribute('href', 2);
if (el_create.className.indexOf('new') < 0){
addPortletLink('p-cactions', href + '?action=history', 'hist',
'ca-history-'+id2, id2+' history', '', el_create.nextSibling);
addPortletLink('p-cactions', href + '?action=edit', 'edit',
'ca-edit-'+id2, 'Edit '+id2, '', el_create.nextSibling);
}
caMain.style.marginRight = '0.3em';
caTalk.style.marginRight = '0.3em';
caTalk.style.marginLeft = '1.6em';
})
//
tsplzi4zyo69utork15jlc1o7n8muyc
15082
15081
2011-09-03T22:50:44Z
Darklama
2894
simplified using jquery
15082
javascript
text/javascript
$(document).ready( function() {
var $action, $main, $talk, $edit, $hist, $clone, href, ns = mw.config.get( 'wgNamespaceNumber' );
if ( ns < 0 || mw.config.get('skin') !== 'monobook' ) {
return
}
$action = $('#p-cactions').find('li');
$main = $action.eq(0);
$talk = $action.find('#ca-talk');
$edit = $action.find('#ca-edit');
$hist = $action.find('#ca-history');
$clone = ns % 2 ? $main : $talk;
id = ns % 2 ? 'subject' : 'talk';
if ( !$edit.length ) {
$edit = $action.find('#ca-viewsource');
}
if ( !$main.length || !$talk.length || !$edit.length || !$hist.length || $clone.hasClass( 'new' ) ) {
return;
}
href = mw.util.wikiScript('index') + '?title' + mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) ) + '&action=';
mw.util.addPortletLink( 'p-cactions', href + 'history', $hist.text(), 'ca-history-' + id, id + ' history', '', $clone.next().get(0) );
mw.util.addPortLetLink( 'p-cactions', href + 'edit', 'Edit', 'ca-edit-' + id, 'Edit ' + id, '', $clone.next().get(0) );
});
2gvb5o11rlol60drxqtwfj6hvoqzghl
15083
15082
2011-09-03T22:54:30Z
Darklama
2894
find -> filter
15083
javascript
text/javascript
$(document).ready( function() {
var $action, $main, $talk, $edit, $hist, $clone, href, ns = mw.config.get( 'wgNamespaceNumber' );
if ( ns < 0 || mw.config.get('skin') !== 'monobook' ) {
return
}
$action = $('#p-cactions').find('li');
$main = $action.eq(0);
$talk = $action.filter('#ca-talk');
$edit = $action.filter('#ca-edit');
$hist = $action.filter('#ca-history');
$clone = ns % 2 ? $main : $talk;
id = ns % 2 ? 'subject' : 'talk';
if ( !$edit.length ) {
$edit = $action.filter('#ca-viewsource');
}
if ( !$main.length || !$talk.length || !$edit.length || !$hist.length || $clone.hasClass( 'new' ) ) {
return;
}
href = mw.util.wikiScript('index') + '?title' + mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) ) + '&action=';
mw.util.addPortletLink( 'p-cactions', href + 'history', $hist.text(), 'ca-history-' + id, id + ' history', '', $clone.next().get(0) );
mw.util.addPortLetLink( 'p-cactions', href + 'edit', 'Edit', 'ca-edit-' + id, 'Edit ' + id, '', $clone.next().get(0) );
});
8eyc9ziw42m6pbct4gtmyxaz2u27mdh
15084
15083
2011-09-03T23:03:53Z
Darklama
2894
placement
15084
javascript
text/javascript
$(document).ready( function() {
var $action, $main, $talk, $edit, $hist, $clone, href, title, ns = mw.config.get( 'wgNamespaceNumber' );
if ( ns < 0 || mw.config.get('skin') !== 'monobook' ) {
return
}
$action = $('#p-cactions').find('li');
$main = $action.eq(0);
$talk = $action.filter('#ca-talk');
$edit = $action.filter('#ca-edit');
$hist = $action.filter('#ca-history');
if ( ns % 2 ) {
$clone = $main;
id = 'subject';
title = '';
} else {
$clone = $talk;
id = 'talk';
title 'Talk:';
}
if ( !$edit.length ) {
$edit = $action.filter('#ca-viewsource');
}
if ( !$main.length || !$talk.length || !$edit.length || !$hist.length || $clone.hasClass( 'new' ) ) {
return;
}
$clone.after( $hist );
$clone.after( $edit );
href = mw.util.wikiScript('index') + '?title' + mw.util.wikiUrlencode( title + mw.config.get( 'wgTitle' ) ) + '&action=';
mw.util.addPortletLink
(
'p-cactions', href + 'history', $hist.text(), 'ca-history-' + id, id + ' history', '', $clone.next().get(0)
);
mw.util.addPortLetLink
(
'p-cactions', href + 'edit', 'Edit', 'ca-edit-' + id, 'Edit ' + id, '', $clone.next().get(0)
);
});
godic67yzq2np55md0cl771qr7bpygt
15085
15084
2011-09-03T23:04:55Z
Darklama
2894
typo
15085
javascript
text/javascript
$(document).ready( function() {
var $action, $main, $talk, $edit, $hist, $clone, href, title, ns = mw.config.get( 'wgNamespaceNumber' );
if ( ns < 0 || mw.config.get('skin') !== 'monobook' ) {
return
}
$action = $('#p-cactions').find('li');
$main = $action.eq(0);
$talk = $action.filter('#ca-talk');
$edit = $action.filter('#ca-edit');
$hist = $action.filter('#ca-history');
if ( ns % 2 ) {
$clone = $main;
id = 'subject';
title = '';
} else {
$clone = $talk;
id = 'talk';
title = 'Talk:';
}
if ( !$edit.length ) {
$edit = $action.filter('#ca-viewsource');
}
if ( !$main.length || !$talk.length || !$edit.length || !$hist.length || $clone.hasClass( 'new' ) ) {
return;
}
$clone.after( $hist );
$clone.after( $edit );
href = mw.util.wikiScript('index') + '?title' + mw.util.wikiUrlencode( title + mw.config.get( 'wgTitle' ) ) + '&action=';
mw.util.addPortletLink
(
'p-cactions', href + 'history', $hist.text(), 'ca-history-' + id, id + ' history', '', $clone.next().get(0)
);
mw.util.addPortLetLink
(
'p-cactions', href + 'edit', 'Edit', 'ca-edit-' + id, 'Edit ' + id, '', $clone.next().get(0)
);
});
rkxeqdr73d5huvdr2md1whf9x5jl09t
15086
15085
2011-09-03T23:12:12Z
Darklama
2894
placement and typo
15086
javascript
text/javascript
$(document).ready( function() {
var $action, $main, $talk, $edit, $hist, $move, $clone, href, title, ns = mw.config.get( 'wgNamespaceNumber' );
if ( ns < 0 || mw.config.get('skin') !== 'monobook' ) {
return
}
$action = $('#p-cactions').find('li');
$main = $action.eq(0);
$talk = $action.filter('#ca-talk');
$edit = $action.filter('#ca-edit');
$hist = $action.filter('#ca-history');
if ( ns % 2 ) {
$clone = $main;
$move = $talk;
id = 'subject';
title = '';
} else {
$clone = $talk;
$move = $main;
id = 'talk';
title = 'Talk:';
}
if ( !$edit.length ) {
$edit = $action.filter('#ca-viewsource');
}
if ( !$main.length || !$talk.length || !$edit.length || !$hist.length || $clone.hasClass( 'new' ) ) {
return;
}
$move.after( $hist );
$move.after( $edit );
href = mw.util.wikiScript('index') + '?title' + mw.util.wikiUrlencode( title + mw.config.get( 'wgTitle' ) ) + '&action=';
mw.util.addPortletLink
(
'p-cactions', href + 'history', $hist.text(), 'ca-history-' + id, id + ' history', '', $clone.next().get(0)
);
mw.util.addPortletLink
(
'p-cactions', href + 'edit', 'Edit', 'ca-edit-' + id, 'Edit ' + id, '', $clone.next().get(0)
);
});
15n7ca4xu8rw1kggm43nclayzlnjpu1
15087
15086
2026-08-01T17:31:38Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-sixtabs.js]] पासून ११ आवर्तने आयात केलीत
15086
javascript
text/javascript
$(document).ready( function() {
var $action, $main, $talk, $edit, $hist, $move, $clone, href, title, ns = mw.config.get( 'wgNamespaceNumber' );
if ( ns < 0 || mw.config.get('skin') !== 'monobook' ) {
return
}
$action = $('#p-cactions').find('li');
$main = $action.eq(0);
$talk = $action.filter('#ca-talk');
$edit = $action.filter('#ca-edit');
$hist = $action.filter('#ca-history');
if ( ns % 2 ) {
$clone = $main;
$move = $talk;
id = 'subject';
title = '';
} else {
$clone = $talk;
$move = $main;
id = 'talk';
title = 'Talk:';
}
if ( !$edit.length ) {
$edit = $action.filter('#ca-viewsource');
}
if ( !$main.length || !$talk.length || !$edit.length || !$hist.length || $clone.hasClass( 'new' ) ) {
return;
}
$move.after( $hist );
$move.after( $edit );
href = mw.util.wikiScript('index') + '?title' + mw.util.wikiUrlencode( title + mw.config.get( 'wgTitle' ) ) + '&action=';
mw.util.addPortletLink
(
'p-cactions', href + 'history', $hist.text(), 'ca-history-' + id, id + ' history', '', $clone.next().get(0)
);
mw.util.addPortletLink
(
'p-cactions', href + 'edit', 'Edit', 'ca-edit-' + id, 'Edit ' + id, '', $clone.next().get(0)
);
});
15n7ca4xu8rw1kggm43nclayzlnjpu1
मिडियाविकी:Gadget-markAdmins.js
8
4181
15088
2021-03-06T13:16:38Z
Minorax
2634
create
15088
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* @Documentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* E.g. Didym -> Didym (A)
*
* @rev 2 (05:15, 20 February 2018 (UTC))
* @author Euku, 2005
* @author PDD
* @author Littl
* @author Guandalug
* @author Didym, 2014
* @author Rillke <https://blog.rillke.com>, 2014
* from https://meta.wikimedia.org/wiki/MediaWiki:Gadget-markAdmins.js
*/
// <nowiki>
/*global jQuery:false, mediaWiki:false*/
importScript('User:Minorax/adminlist.js');
(function( mw, $ ) {
'use strict';
var markAdmins = mw.libs.markAdmins = {
nodes: [], // for reInit
config: {},
defaults: {
groups: {
sysop: {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
oversight: {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
checkuser: {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
bureaucrat: {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
steward: {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
ombudsman: {
label: 'Omb',
legacyName: 'Ombudsman',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', '', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function ( users ) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
mw.loader.using( 'user', markAdmins.mergeConfig, markAdmins.mergeConfig );
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg');
var cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Hook-up content loading
mw.hook('wikipage.content').add( function ($c) { markAdmins.addLabels($c); } );
},
destroy: function () {
$.each(markAdmins.nodes, function (i, n) {
$(n).remove();
});
},
reInit: function () {
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ( $content ) {
var content = document.getElementById('mw-content-text') || document.getElementById('bodyContent') || $content[0];
/* if ( !markAdmins.fullPageProcessed ) {
$content = $(document);
markAdmins.fullPageProcessed = true;
} */
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var canNs = mw.config.get('wgCanonicalNamespace'),
isSubpageL = !!({'Prefixindex': 1, 'Allpages': 1})[mw.config.get('wgCanonicalSpecialPageName')],
ns = mw.config.get('wgNamespaceNumber'),
isUserpage = ns === 2 || ns === 3,
isHistory = mw.config.get('wgAction') === 'history',
isTalk = ns % 2,
isDiff = !!mw.util.getParamValue( 'diff' ),
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
cfg = this.config,
nsCondition = cfg.runOn.indexOf(canNs) !== -1,
enabledGroups = {},
marker = {},
previousUser, anchors;
// Namespace run conditions
if ( !( nsCondition ||
isHistory && cfg.runOnHistory ||
isTalk && cfg.runOnTalk ||
isDiff && cfg.runOnDiff ) ) return;
// Filter enabled groups
// Do it here and not later on each anchor
$.each( cfg.groups, function( g, grpCfg ) {
if ( grpCfg.enabled ) enabledGroups[g] = grpCfg;
} );
if (isUserpage) { // Add also the userpage link!?
anchors = $content.find('a');
anchors.push($('#ca-nstab-user').find('a')[0]);
} else
anchors = content.getElementsByTagName('a');
var node = document.createElement('b');
node.className = 'adminMark';
for (var i = 0, lenAnchors = anchors.length; i < lenAnchors; ++i) {
var a = anchors[i];
var href = a.getAttribute( 'href' ); // Extract link
if ( !href ) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
var m = href.match( reUserpage );
if ( !m || !m[2] ) continue;
var userpage = m[2];
// Extract user
var user = userpage.replace( /[\/\#].*/, '' );
var isMainUserpageLink = (user === userpage);
var isUsertalkLink = !!m[1];
// Polish user name
user = decodeURIComponent( user ).replace( /_/g, ' ' );
// Two consecutive links to the same user? Don't mark followups!
previousUser = (previousUser === user && isUsertalkLink);
if (previousUser) continue;// only once
var userM = marker[user];
if (userM === undefined) {
// User groups of selected user
userM = '';
var userGroups = this.users[user];
if ( !userGroups ) continue;
for (var g = 0; g < userGroups.length; g++) {
var grpCfg = enabledGroups[userGroups[g]];
if ( !grpCfg ) break;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if ( userM ) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if ( !userM ) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!(isMainUserpageLink || cfg.markSubpages && !isSubpageL)) continue;
if (cfg.dontMarkMyself && user === cfg.dontMarkMyself) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook( 'userjs.script-loaded.markadmins' ).add( markAdmins.init );
}( mediaWiki, jQuery ));
pgwvho2elych8zgkir44cvzui9zm1zo
15089
15088
2021-03-06T13:22:57Z
Minorax
2634
+
15089
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* @Documentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* E.g. Didym -> Didym (A)
*
* @rev 2 (05:15, 20 February 2018 (UTC))
* @author Euku, 2005
* @author PDD
* @author Littl
* @author Guandalug
* @author Didym, 2014
* @author Rillke <https://blog.rillke.com>, 2014
* from https://meta.wikimedia.org/wiki/MediaWiki:Gadget-markAdmins.js
*/
// <nowiki>
/*global jQuery:false, mediaWiki:false*/
importScript('User:Minorax/adminlist.js');
(function( mw, $ ) {
'use strict';
var markAdmins = mw.libs.markAdmins = {
nodes: [], // for reInit
config: {},
defaults: {
groups: {
sysop: {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
adminbot: {
label: 'A-bot',
legacyName: 'adminbot',
legacyLabelId: 'abottxt',
enabled: true
},
oversight: {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
checkuser: {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
bureaucrat: {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
steward: {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
global_sysop: {
label: 'GS',
legacyName: 'Global Sysop',
legacyLabelId: 'gstxt',
enabled: true
},
ombudsman: {
label: 'Omb',
legacyName: 'Ombudsman',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', '', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function ( users ) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
mw.loader.using( 'user', markAdmins.mergeConfig, markAdmins.mergeConfig );
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg');
var cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Hook-up content loading
mw.hook('wikipage.content').add( function ($c) { markAdmins.addLabels($c); } );
},
destroy: function () {
$.each(markAdmins.nodes, function (i, n) {
$(n).remove();
});
},
reInit: function () {
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ( $content ) {
var content = document.getElementById('mw-content-text') || document.getElementById('bodyContent') || $content[0];
/* if ( !markAdmins.fullPageProcessed ) {
$content = $(document);
markAdmins.fullPageProcessed = true;
} */
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var canNs = mw.config.get('wgCanonicalNamespace'),
isSubpageL = !!({'Prefixindex': 1, 'Allpages': 1})[mw.config.get('wgCanonicalSpecialPageName')],
ns = mw.config.get('wgNamespaceNumber'),
isUserpage = ns === 2 || ns === 3,
isHistory = mw.config.get('wgAction') === 'history',
isTalk = ns % 2,
isDiff = !!mw.util.getParamValue( 'diff' ),
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
cfg = this.config,
nsCondition = cfg.runOn.indexOf(canNs) !== -1,
enabledGroups = {},
marker = {},
previousUser, anchors;
// Namespace run conditions
if ( !( nsCondition ||
isHistory && cfg.runOnHistory ||
isTalk && cfg.runOnTalk ||
isDiff && cfg.runOnDiff ) ) return;
// Filter enabled groups
// Do it here and not later on each anchor
$.each( cfg.groups, function( g, grpCfg ) {
if ( grpCfg.enabled ) enabledGroups[g] = grpCfg;
} );
if (isUserpage) { // Add also the userpage link!?
anchors = $content.find('a');
anchors.push($('#ca-nstab-user').find('a')[0]);
} else
anchors = content.getElementsByTagName('a');
var node = document.createElement('b');
node.className = 'adminMark';
for (var i = 0, lenAnchors = anchors.length; i < lenAnchors; ++i) {
var a = anchors[i];
var href = a.getAttribute( 'href' ); // Extract link
if ( !href ) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
var m = href.match( reUserpage );
if ( !m || !m[2] ) continue;
var userpage = m[2];
// Extract user
var user = userpage.replace( /[\/\#].*/, '' );
var isMainUserpageLink = (user === userpage);
var isUsertalkLink = !!m[1];
// Polish user name
user = decodeURIComponent( user ).replace( /_/g, ' ' );
// Two consecutive links to the same user? Don't mark followups!
previousUser = (previousUser === user && isUsertalkLink);
if (previousUser) continue;// only once
var userM = marker[user];
if (userM === undefined) {
// User groups of selected user
userM = '';
var userGroups = this.users[user];
if ( !userGroups ) continue;
for (var g = 0; g < userGroups.length; g++) {
var grpCfg = enabledGroups[userGroups[g]];
if ( !grpCfg ) break;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if ( userM ) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if ( !userM ) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!(isMainUserpageLink || cfg.markSubpages && !isSubpageL)) continue;
if (cfg.dontMarkMyself && user === cfg.dontMarkMyself) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook( 'userjs.script-loaded.markadmins' ).add( markAdmins.init );
}( mediaWiki, jQuery ));
1ghji9ncqty36ndwayz8r074a2m6b01
15090
15089
2021-03-06T13:23:28Z
Minorax
2634
-admin bot
15090
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* @Documentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* E.g. Didym -> Didym (A)
*
* @rev 2 (05:15, 20 February 2018 (UTC))
* @author Euku, 2005
* @author PDD
* @author Littl
* @author Guandalug
* @author Didym, 2014
* @author Rillke <https://blog.rillke.com>, 2014
* from https://meta.wikimedia.org/wiki/MediaWiki:Gadget-markAdmins.js
*/
// <nowiki>
/*global jQuery:false, mediaWiki:false*/
importScript('User:Minorax/adminlist.js');
(function( mw, $ ) {
'use strict';
var markAdmins = mw.libs.markAdmins = {
nodes: [], // for reInit
config: {},
defaults: {
groups: {
sysop: {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
oversight: {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
checkuser: {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
bureaucrat: {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
steward: {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
global_sysop: {
label: 'GS',
legacyName: 'Global Sysop',
legacyLabelId: 'gstxt',
enabled: true
},
ombudsman: {
label: 'Omb',
legacyName: 'Ombudsman',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', '', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function ( users ) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
mw.loader.using( 'user', markAdmins.mergeConfig, markAdmins.mergeConfig );
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg');
var cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Hook-up content loading
mw.hook('wikipage.content').add( function ($c) { markAdmins.addLabels($c); } );
},
destroy: function () {
$.each(markAdmins.nodes, function (i, n) {
$(n).remove();
});
},
reInit: function () {
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ( $content ) {
var content = document.getElementById('mw-content-text') || document.getElementById('bodyContent') || $content[0];
/* if ( !markAdmins.fullPageProcessed ) {
$content = $(document);
markAdmins.fullPageProcessed = true;
} */
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var canNs = mw.config.get('wgCanonicalNamespace'),
isSubpageL = !!({'Prefixindex': 1, 'Allpages': 1})[mw.config.get('wgCanonicalSpecialPageName')],
ns = mw.config.get('wgNamespaceNumber'),
isUserpage = ns === 2 || ns === 3,
isHistory = mw.config.get('wgAction') === 'history',
isTalk = ns % 2,
isDiff = !!mw.util.getParamValue( 'diff' ),
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
cfg = this.config,
nsCondition = cfg.runOn.indexOf(canNs) !== -1,
enabledGroups = {},
marker = {},
previousUser, anchors;
// Namespace run conditions
if ( !( nsCondition ||
isHistory && cfg.runOnHistory ||
isTalk && cfg.runOnTalk ||
isDiff && cfg.runOnDiff ) ) return;
// Filter enabled groups
// Do it here and not later on each anchor
$.each( cfg.groups, function( g, grpCfg ) {
if ( grpCfg.enabled ) enabledGroups[g] = grpCfg;
} );
if (isUserpage) { // Add also the userpage link!?
anchors = $content.find('a');
anchors.push($('#ca-nstab-user').find('a')[0]);
} else
anchors = content.getElementsByTagName('a');
var node = document.createElement('b');
node.className = 'adminMark';
for (var i = 0, lenAnchors = anchors.length; i < lenAnchors; ++i) {
var a = anchors[i];
var href = a.getAttribute( 'href' ); // Extract link
if ( !href ) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
var m = href.match( reUserpage );
if ( !m || !m[2] ) continue;
var userpage = m[2];
// Extract user
var user = userpage.replace( /[\/\#].*/, '' );
var isMainUserpageLink = (user === userpage);
var isUsertalkLink = !!m[1];
// Polish user name
user = decodeURIComponent( user ).replace( /_/g, ' ' );
// Two consecutive links to the same user? Don't mark followups!
previousUser = (previousUser === user && isUsertalkLink);
if (previousUser) continue;// only once
var userM = marker[user];
if (userM === undefined) {
// User groups of selected user
userM = '';
var userGroups = this.users[user];
if ( !userGroups ) continue;
for (var g = 0; g < userGroups.length; g++) {
var grpCfg = enabledGroups[userGroups[g]];
if ( !grpCfg ) break;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if ( userM ) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if ( !userM ) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!(isMainUserpageLink || cfg.markSubpages && !isSubpageL)) continue;
if (cfg.dontMarkMyself && user === cfg.dontMarkMyself) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook( 'userjs.script-loaded.markadmins' ).add( markAdmins.init );
}( mediaWiki, jQuery ));
cboyqztrd647aafhux73pbsm781cj6a
15091
15090
2021-03-21T13:16:38Z
Minorax
2634
Minorax moved page [[User:Minorax/markAdmin.js]] to [[MediaWiki:Gadget-markAdmins.js]]: see [[Wikibooks talk:Administrators]]
15090
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* @Documentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* E.g. Didym -> Didym (A)
*
* @rev 2 (05:15, 20 February 2018 (UTC))
* @author Euku, 2005
* @author PDD
* @author Littl
* @author Guandalug
* @author Didym, 2014
* @author Rillke <https://blog.rillke.com>, 2014
* from https://meta.wikimedia.org/wiki/MediaWiki:Gadget-markAdmins.js
*/
// <nowiki>
/*global jQuery:false, mediaWiki:false*/
importScript('User:Minorax/adminlist.js');
(function( mw, $ ) {
'use strict';
var markAdmins = mw.libs.markAdmins = {
nodes: [], // for reInit
config: {},
defaults: {
groups: {
sysop: {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
oversight: {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
checkuser: {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
bureaucrat: {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
steward: {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
global_sysop: {
label: 'GS',
legacyName: 'Global Sysop',
legacyLabelId: 'gstxt',
enabled: true
},
ombudsman: {
label: 'Omb',
legacyName: 'Ombudsman',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', '', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function ( users ) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
mw.loader.using( 'user', markAdmins.mergeConfig, markAdmins.mergeConfig );
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg');
var cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Hook-up content loading
mw.hook('wikipage.content').add( function ($c) { markAdmins.addLabels($c); } );
},
destroy: function () {
$.each(markAdmins.nodes, function (i, n) {
$(n).remove();
});
},
reInit: function () {
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ( $content ) {
var content = document.getElementById('mw-content-text') || document.getElementById('bodyContent') || $content[0];
/* if ( !markAdmins.fullPageProcessed ) {
$content = $(document);
markAdmins.fullPageProcessed = true;
} */
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var canNs = mw.config.get('wgCanonicalNamespace'),
isSubpageL = !!({'Prefixindex': 1, 'Allpages': 1})[mw.config.get('wgCanonicalSpecialPageName')],
ns = mw.config.get('wgNamespaceNumber'),
isUserpage = ns === 2 || ns === 3,
isHistory = mw.config.get('wgAction') === 'history',
isTalk = ns % 2,
isDiff = !!mw.util.getParamValue( 'diff' ),
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
cfg = this.config,
nsCondition = cfg.runOn.indexOf(canNs) !== -1,
enabledGroups = {},
marker = {},
previousUser, anchors;
// Namespace run conditions
if ( !( nsCondition ||
isHistory && cfg.runOnHistory ||
isTalk && cfg.runOnTalk ||
isDiff && cfg.runOnDiff ) ) return;
// Filter enabled groups
// Do it here and not later on each anchor
$.each( cfg.groups, function( g, grpCfg ) {
if ( grpCfg.enabled ) enabledGroups[g] = grpCfg;
} );
if (isUserpage) { // Add also the userpage link!?
anchors = $content.find('a');
anchors.push($('#ca-nstab-user').find('a')[0]);
} else
anchors = content.getElementsByTagName('a');
var node = document.createElement('b');
node.className = 'adminMark';
for (var i = 0, lenAnchors = anchors.length; i < lenAnchors; ++i) {
var a = anchors[i];
var href = a.getAttribute( 'href' ); // Extract link
if ( !href ) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
var m = href.match( reUserpage );
if ( !m || !m[2] ) continue;
var userpage = m[2];
// Extract user
var user = userpage.replace( /[\/\#].*/, '' );
var isMainUserpageLink = (user === userpage);
var isUsertalkLink = !!m[1];
// Polish user name
user = decodeURIComponent( user ).replace( /_/g, ' ' );
// Two consecutive links to the same user? Don't mark followups!
previousUser = (previousUser === user && isUsertalkLink);
if (previousUser) continue;// only once
var userM = marker[user];
if (userM === undefined) {
// User groups of selected user
userM = '';
var userGroups = this.users[user];
if ( !userGroups ) continue;
for (var g = 0; g < userGroups.length; g++) {
var grpCfg = enabledGroups[userGroups[g]];
if ( !grpCfg ) break;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if ( userM ) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if ( !userM ) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!(isMainUserpageLink || cfg.markSubpages && !isSubpageL)) continue;
if (cfg.dontMarkMyself && user === cfg.dontMarkMyself) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook( 'userjs.script-loaded.markadmins' ).add( markAdmins.init );
}( mediaWiki, jQuery ));
cboyqztrd647aafhux73pbsm781cj6a
15092
15091
2021-03-21T13:19:20Z
Minorax
2634
some tweaks, ref https://meta.wikimedia.org/wiki/MediaWiki:Gadget-markAdmins.js
15092
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* @Documentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* E.g. Didym -> Didym (A)
*
* @rev 3 (14:14, 20 August 2019 (UTC))
* @author Euku - 2005, PDD, Littl, Guandalug
* @author Didym - 2014
* @author Rillke <https://blog.rillke.com> - 2014
* @contributor Perhelion - 2017
*/
// <nowiki>
/* eslint indent:["error","tab",{"outerIIFEBody":0}] */
/* global jQuery:false, mediaWiki:false*/
(function (mw, $) {
'use strict';
var markAdmins = mw.libs.markAdmins = {
config: {},
defaults: {
groups: {
'sysop': {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
'oversight': {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
'checkuser': {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
'bureaucrat': {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
'steward': {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
'ombudsman': {
label: 'Omb',
legacyName: 'ombudsman',
legacyLabelId: 'ombtxt',
enabled: true
},
'global_sysop': {
label: 'GS',
legacyName: 'Global Sysop',
legacyLabelId: 'gstxt',
enabled: true
}
},
runOn: ['Special', '', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function (users) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
$.when(mw.loader.using('user'), $.ready).then(markAdmins.mergeConfig, markAdmins.mergeConfig);
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg'),
cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
markAdmins.ns = mw.config.get('wgNamespaceNumber');
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Namespace run conditions
if (!(cfg.runOn.indexOf(mw.config.get('wgCanonicalNamespace')) !== -1 ||
cfg.runOnHistory && mw.config.get('wgAction') === 'history' ||
cfg.runOnTalk && markAdmins.ns % 2 ||
cfg.runOnDiff && !!mw.util.getParamValue('diff'))) return;
// Hook-up content loading
mw.hook('wikipage.content').add(function ($c) { markAdmins.addLabels($c); }); // bind
},
destroy: function () {
markAdmins.nodes.forEach(function (n) {
$(n).remove();
});
},
nodes: [], // for reInit
reInit: function () {
markAdmins.fullPageProcessed = 0;
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ($content) {
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var cfg = this.config,
noSubpages = !cfg.markSubpages || !!({ Prefixindex: 1, Allpages: 1 })[mw.config.get('wgCanonicalSpecialPageName')],
isUserpage = [2, 3].indexOf(this.ns) !== -1,
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
enabledGroups = {},
marker = {},
previousUser,
anchors,
node = document.createElement('b');
node.className = 'adminMark';
// Filter enabled groups (Do it here and not later on each anchor)
Object.keys(cfg.groups).forEach(function (g, grpCfg) {
grpCfg = cfg.groups[g];
if (grpCfg.enabled) enabledGroups[g] = grpCfg;
});
if (!this.fullPageProcessed) $content = mw.util.$content || $content;
if (!$content[0]) return;
anchors = $content[0].getElementsByTagName('a');
// Add also the userpage link
if (isUserpage && !this.fullPageProcessed &&
((isUserpage = document.getElementById('ca-nstab-user')) &&
(isUserpage = isUserpage.getElementsByTagName('a')))) {
anchors = Array.from(anchors);
anchors.push(isUserpage[0]);
}
this.fullPageProcessed = true;
if (cfg.dontMarkMyself) marker[cfg.dontMarkMyself] = '';
for (var i = 0, len = anchors.length; i < len; ++i) {
var a = anchors[i],
m = a.getAttribute('href');
if (!m) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
m = m.match(reUserpage);
if (!m || !m[2]) continue;
// Extract user
var userM = m[2],
user = userM.replace(/[/#].*/, ''),
isMainUserpageLink = user === userM;
user = decodeURIComponent(user);
// Two consecutive links to the same user? Don't mark followups!
previousUser = previousUser === user && !!m[1]; // isUsertalkLink
if (previousUser) continue; // only once
userM = marker[user];
if (userM === undefined) {
userM = '';
// User groups of selected user, polish user name
m = this.users[user.replace(/_/g, ' ')];
if (!m) continue;
for (var g = 0; g < m.length; g++) {
var grpCfg = enabledGroups[m[g]];
if (!grpCfg) continue;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if (userM) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if (!userM) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!isMainUserpageLink && noSubpages) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
qlndsefs6cksmba8d7qv0x5vckslkpg
15093
15092
2021-03-21T13:26:41Z
Minorax
2634
15093
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* @Documentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* E.g. Didym -> Didym (A)
*
* @rev 3 (14:14, 20 August 2019 (UTC))
* @author Euku - 2005, PDD, Littl, Guandalug
* @author Didym - 2014
* @author Rillke <https://blog.rillke.com> - 2014
* @contributor Perhelion - 2017
*/
// <nowiki>
/* eslint indent:["error","tab",{"outerIIFEBody":0}] */
/* global jQuery:false, mediaWiki:false*/
(function (mw, $) {
'use strict';
var markAdmins = mw.libs.markAdmins = {
config: {},
defaults: {
groups: {
'sysop': {
label: 'A',
legacyName: 'Admin',
legacyLabelId: 'atxt',
enabled: true
},
'oversight': {
label: 'OS',
legacyName: 'Oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
'checkuser': {
label: 'CU',
legacyName: 'Checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
'bureaucrat': {
label: 'B',
legacyName: 'Bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
'steward': {
label: 'S',
legacyName: 'Steward',
legacyLabelId: 'stewtxt',
enabled: true
},
'ombudsman': {
label: 'Omb',
legacyName: 'Ombudsman',
legacyLabelId: 'ombtxt',
enabled: true
},
'global_sysop': {
label: 'GS',
legacyName: 'Global Sysop',
legacyLabelId: 'gstxt',
enabled: true
}
},
runOn: ['Special', '', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function (users) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
$.when(mw.loader.using('user'), $.ready).then(markAdmins.mergeConfig, markAdmins.mergeConfig);
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg'),
cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
markAdmins.ns = mw.config.get('wgNamespaceNumber');
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Namespace run conditions
if (!(cfg.runOn.indexOf(mw.config.get('wgCanonicalNamespace')) !== -1 ||
cfg.runOnHistory && mw.config.get('wgAction') === 'history' ||
cfg.runOnTalk && markAdmins.ns % 2 ||
cfg.runOnDiff && !!mw.util.getParamValue('diff'))) return;
// Hook-up content loading
mw.hook('wikipage.content').add(function ($c) { markAdmins.addLabels($c); }); // bind
},
destroy: function () {
markAdmins.nodes.forEach(function (n) {
$(n).remove();
});
},
nodes: [], // for reInit
reInit: function () {
markAdmins.fullPageProcessed = 0;
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ($content) {
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var cfg = this.config,
noSubpages = !cfg.markSubpages || !!({ Prefixindex: 1, Allpages: 1 })[mw.config.get('wgCanonicalSpecialPageName')],
isUserpage = [2, 3].indexOf(this.ns) !== -1,
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
enabledGroups = {},
marker = {},
previousUser,
anchors,
node = document.createElement('b');
node.className = 'adminMark';
// Filter enabled groups (Do it here and not later on each anchor)
Object.keys(cfg.groups).forEach(function (g, grpCfg) {
grpCfg = cfg.groups[g];
if (grpCfg.enabled) enabledGroups[g] = grpCfg;
});
if (!this.fullPageProcessed) $content = mw.util.$content || $content;
if (!$content[0]) return;
anchors = $content[0].getElementsByTagName('a');
// Add also the userpage link
if (isUserpage && !this.fullPageProcessed &&
((isUserpage = document.getElementById('ca-nstab-user')) &&
(isUserpage = isUserpage.getElementsByTagName('a')))) {
anchors = Array.from(anchors);
anchors.push(isUserpage[0]);
}
this.fullPageProcessed = true;
if (cfg.dontMarkMyself) marker[cfg.dontMarkMyself] = '';
for (var i = 0, len = anchors.length; i < len; ++i) {
var a = anchors[i],
m = a.getAttribute('href');
if (!m) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
m = m.match(reUserpage);
if (!m || !m[2]) continue;
// Extract user
var userM = m[2],
user = userM.replace(/[/#].*/, ''),
isMainUserpageLink = user === userM;
user = decodeURIComponent(user);
// Two consecutive links to the same user? Don't mark followups!
previousUser = previousUser === user && !!m[1]; // isUsertalkLink
if (previousUser) continue; // only once
userM = marker[user];
if (userM === undefined) {
userM = '';
// User groups of selected user, polish user name
m = this.users[user.replace(/_/g, ' ')];
if (!m) continue;
for (var g = 0; g < m.length; g++) {
var grpCfg = enabledGroups[m[g]];
if (!grpCfg) continue;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if (userM) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if (!userM) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!isMainUserpageLink && noSubpages) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
2i9kcbyz3au5gmm8jd4dz0b3puxy25u
15094
15093
2024-12-21T06:37:02Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#c-JJPMaster-20241221062700-Leaderboard-20241221062100
15094
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* E.g. Didym -> Didym (A)
* @OrigDocumentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* @Documentation https://en.wikipedia.org/wiki/User:Mdaniels5757/markAdmins
*
* @rev 3 (14:14, 20 August 2019 (UTC))
* @author Euku - 2005, PDD, Littl, Guandalug
* @author Didym - 2014
* @author Rillke <https://blog.rillke.com> - 2014
* @contributor Perhelion - 2017
* @migrator Mdaniels5757 - 2020
* @migrator JJPMaster - 2024
*/
// <nowiki>
/* eslint indent:["error","tab",{"outerIIFEBody":0}] */
/* global jQuery:false, mediaWiki:false*/
(function (mw, $) {
'use strict';
const MAparams = {
action: 'parse',
page: 'User:JJPMaster (bot)/markAdmins-Data.json',
prop: 'wikitext',
format: 'json'
};
api = new mw.Api();
api.get(MAparams).done(data => {
mw.hook('userjs.script-loaded.markadmins').fire(JSON.parse(data.parse.wikitext['*']));
});
var markAdmins = mw.libs.markAdmins = {
config: {},
defaults: {
groups: {
'sysop': {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
'bureaucrat': {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
'checkuser': {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
'global-sysop': {
label: 'GS',
legacyName: 'globalsysop',
legacyLabelId: 'gstxt',
enabled: true
},
'interface-admin': {
label: 'IA',
legacyName: 'intadmin',
legacyLabelId: 'iatxt',
enabled: true
},
'suppress': {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
'steward': {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
'accountcreator': {
label: 'ACC',
legacyName: 'acc',
legacyLabelId: 'acctxt',
enabled: false
},
'autoreview': {
label: 'AR',
legacyName: 'ar',
legacyLabelId: 'artxt',
enabled: false
},
'editor': {
label: 'REV',
legacyName: 'reviewer',
legacyLabelId: 'revtxt',
enabled: true
},
'transwiki': {
label: 'I',
legacyName: 'importer',
legacyLabelId: 'revtxt',
enabled: true
},
'import': {
label: 'IU',
legacyName: 'importuploader',
legacyLabelId: 'revtxt',
enabled: true
},
'uploader': {
label: 'U',
legacyName: 'uploader',
legacyLabelId: 'revtxt',
enabled: true
},
'vrt-permissions': {
label: 'VRT',
legacyName: 'vrt',
legacyLabelId: 'vrttxt',
enabled: true
},
'global-renamer': {
label: 'GRe',
legacyName: 'gre',
legacyLabelId: 'gretxt',
enabled: true
},
'global-rollbacker': {
label: 'GRb',
legacyName: 'grb',
legacyLabelId: 'grbtxt',
enabled: true
},
'ombuds': {
label: 'Omb',
legacyName: 'ombuds',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function (users) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
$.when(mw.loader.using('user'), $.ready).then(markAdmins.mergeConfig, markAdmins.mergeConfig);
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg'),
cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
markAdmins.ns = mw.config.get('wgNamespaceNumber');
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Namespace run conditions
if (!(cfg.runOn.indexOf(mw.config.get('wgCanonicalNamespace')) !== -1 ||
cfg.runOnHistory && mw.config.get('wgAction') === 'history' ||
cfg.runOnTalk && markAdmins.ns % 2 ||
cfg.runOnDiff && !!mw.util.getParamValue('diff'))) return;
// Hook-up content loading
mw.hook('wikipage.content').add(function ($c) { markAdmins.addLabels($c); }); // bind
},
destroy: function () {
markAdmins.nodes.forEach(function (n) {
$(n).remove();
});
},
nodes: [], // for reInit
reInit: function () {
markAdmins.fullPageProcessed = 0;
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ($content) {
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var cfg = this.config,
noSubpages = !cfg.markSubpages || !!({ Prefixindex: 1, Allpages: 1 })[mw.config.get('wgCanonicalSpecialPageName')],
isUserpage = [2, 3].indexOf(this.ns) !== -1,
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
enabledGroups = {},
marker = {},
previousUser,
anchors,
node = document.createElement('b');
node.className = 'adminMark';
// Filter enabled groups (Do it here and not later on each anchor)
Object.keys(cfg.groups).forEach(function (g, grpCfg) {
grpCfg = cfg.groups[g];
if (grpCfg.enabled) enabledGroups[g] = grpCfg;
});
if (!this.fullPageProcessed) $content = mw.util.$content || $content;
if (!$content[0]) return;
anchors = $content[0].getElementsByTagName('a');
// Add also the userpage link
if (isUserpage && !this.fullPageProcessed &&
((isUserpage = document.getElementById('ca-nstab-user')) &&
(isUserpage = isUserpage.getElementsByTagName('a')))) {
anchors = Array.from(anchors);
anchors.push(isUserpage[0]);
}
this.fullPageProcessed = true;
if (cfg.dontMarkMyself) marker[cfg.dontMarkMyself] = '';
for (var i = 0, len = anchors.length; i < len; ++i) {
var a = anchors[i],
m = a.getAttribute('href');
if (!m) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
m = m.match(reUserpage);
if (!m || !m[2]) continue;
// Extract user
var userM = m[2],
user = userM.replace(/[/#].*/, ''),
isMainUserpageLink = user === userM;
user = decodeURIComponent(user);
// Two consecutive links to the same user? Don't mark followups!
previousUser = previousUser === user && !!m[1]; // isUsertalkLink
if (previousUser) continue; // only once
userM = marker[user];
if (userM === undefined) {
userM = '';
// User groups of selected user, polish user name
m = this.users[user.replace(/_/g, ' ')];
if (!m) continue;
for (var g = 0; g < m.length; g++) {
var grpCfg = enabledGroups[m[g]];
if (!grpCfg) continue;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if (userM) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if (!userM) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!isMainUserpageLink && noSubpages) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
hkmwt4cqlf6l5roms2k5vc1o5oinu2o
15095
15094
2024-12-21T21:15:10Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#c-JJPMaster-20241221170300-Leaderboard-20241221164200
15095
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* E.g. Didym -> Didym (A)
* @OrigDocumentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* @Documentation https://en.wikipedia.org/wiki/User:Mdaniels5757/markAdmins
*
* @rev 3 (14:14, 20 August 2019 (UTC))
* @author Euku - 2005, PDD, Littl, Guandalug
* @author Didym - 2014
* @author Rillke <https://blog.rillke.com> - 2014
* @contributor Perhelion - 2017
* @migrator Mdaniels5757 - 2020
* @migrator JJPMaster - 2024
*/
// <nowiki>
/* eslint indent:["error","tab",{"outerIIFEBody":0}] */
/* global jQuery:false, mediaWiki:false*/
(function (mw, $) {
'use strict';
const MAparams = {
action: 'parse',
page: 'User:JJPMaster (bot)/markAdmins-Data.json',
prop: 'wikitext',
format: 'json'
};
var api = new mw.Api();
api.get(MAparams).done(data => {
mw.hook('userjs.script-loaded.markadmins').fire(JSON.parse(data.parse.wikitext['*']));
});
var markAdmins = mw.libs.markAdmins = {
config: {},
defaults: {
groups: {
'sysop': {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
'bureaucrat': {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
'checkuser': {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
'global-sysop': {
label: 'GS',
legacyName: 'globalsysop',
legacyLabelId: 'gstxt',
enabled: true
},
'interface-admin': {
label: 'IA',
legacyName: 'intadmin',
legacyLabelId: 'iatxt',
enabled: true
},
'suppress': {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
'steward': {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
'accountcreator': {
label: 'ACC',
legacyName: 'acc',
legacyLabelId: 'acctxt',
enabled: false
},
'autoreview': {
label: 'AR',
legacyName: 'ar',
legacyLabelId: 'artxt',
enabled: false
},
'editor': {
label: 'REV',
legacyName: 'reviewer',
legacyLabelId: 'revtxt',
enabled: true
},
'transwiki': {
label: 'I',
legacyName: 'importer',
legacyLabelId: 'revtxt',
enabled: true
},
'import': {
label: 'IU',
legacyName: 'importuploader',
legacyLabelId: 'revtxt',
enabled: true
},
'uploader': {
label: 'U',
legacyName: 'uploader',
legacyLabelId: 'revtxt',
enabled: true
},
'vrt-permissions': {
label: 'VRT',
legacyName: 'vrt',
legacyLabelId: 'vrttxt',
enabled: true
},
'global-renamer': {
label: 'GRe',
legacyName: 'gre',
legacyLabelId: 'gretxt',
enabled: true
},
'global-rollbacker': {
label: 'GRb',
legacyName: 'grb',
legacyLabelId: 'grbtxt',
enabled: true
},
'ombuds': {
label: 'Omb',
legacyName: 'ombuds',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function (users) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
$.when(mw.loader.using('user'), $.ready).then(markAdmins.mergeConfig, markAdmins.mergeConfig);
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg'),
cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
markAdmins.ns = mw.config.get('wgNamespaceNumber');
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Namespace run conditions
if (!(cfg.runOn.indexOf(mw.config.get('wgCanonicalNamespace')) !== -1 ||
cfg.runOnHistory && mw.config.get('wgAction') === 'history' ||
cfg.runOnTalk && markAdmins.ns % 2 ||
cfg.runOnDiff && !!mw.util.getParamValue('diff'))) return;
// Hook-up content loading
mw.hook('wikipage.content').add(function ($c) { markAdmins.addLabels($c); }); // bind
},
destroy: function () {
markAdmins.nodes.forEach(function (n) {
$(n).remove();
});
},
nodes: [], // for reInit
reInit: function () {
markAdmins.fullPageProcessed = 0;
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ($content) {
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var cfg = this.config,
noSubpages = !cfg.markSubpages || !!({ Prefixindex: 1, Allpages: 1 })[mw.config.get('wgCanonicalSpecialPageName')],
isUserpage = [2, 3].indexOf(this.ns) !== -1,
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
enabledGroups = {},
marker = {},
previousUser,
anchors,
node = document.createElement('b');
node.className = 'adminMark';
// Filter enabled groups (Do it here and not later on each anchor)
Object.keys(cfg.groups).forEach(function (g, grpCfg) {
grpCfg = cfg.groups[g];
if (grpCfg.enabled) enabledGroups[g] = grpCfg;
});
if (!this.fullPageProcessed) $content = mw.util.$content || $content;
if (!$content[0]) return;
anchors = $content[0].getElementsByTagName('a');
// Add also the userpage link
if (isUserpage && !this.fullPageProcessed &&
((isUserpage = document.getElementById('ca-nstab-user')) &&
(isUserpage = isUserpage.getElementsByTagName('a')))) {
anchors = Array.from(anchors);
anchors.push(isUserpage[0]);
}
this.fullPageProcessed = true;
if (cfg.dontMarkMyself) marker[cfg.dontMarkMyself] = '';
for (var i = 0, len = anchors.length; i < len; ++i) {
var a = anchors[i],
m = a.getAttribute('href');
if (!m) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
m = m.match(reUserpage);
if (!m || !m[2]) continue;
// Extract user
var userM = m[2],
user = userM.replace(/[/#].*/, ''),
isMainUserpageLink = user === userM;
user = decodeURIComponent(user);
// Two consecutive links to the same user? Don't mark followups!
previousUser = previousUser === user && !!m[1]; // isUsertalkLink
if (previousUser) continue; // only once
userM = marker[user];
if (userM === undefined) {
userM = '';
// User groups of selected user, polish user name
m = this.users[user.replace(/_/g, ' ')];
if (!m) continue;
for (var g = 0; g < m.length; g++) {
var grpCfg = enabledGroups[m[g]];
if (!grpCfg) continue;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if (userM) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if (!userM) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!isMainUserpageLink && noSubpages) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
ajrp5kypx9246nnn37pwnft1p5d86p4
15096
15095
2024-12-22T12:13:54Z
Leaderboard
2891
https://en.wikibooks.org/wiki/Wikibooks:Reading_room/Technical_Assistance#c-JJPMaster-20241222030300-markAdmins_bug_fix
15096
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* E.g. Didym -> Didym (A)
* @OrigDocumentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* @Documentation https://en.wikipedia.org/wiki/User:Mdaniels5757/markAdmins
*
* @rev 3 (14:14, 20 August 2019 (UTC))
* @author Euku - 2005, PDD, Littl, Guandalug
* @author Didym - 2014
* @author Rillke <https://blog.rillke.com> - 2014
* @contributor Perhelion - 2017
* @migrator Mdaniels5757 - 2020
* @migrator JJPMaster - 2024
*/
// <nowiki>
/* eslint indent:["error","tab",{"outerIIFEBody":0}] */
/* global jQuery:false, mediaWiki:false*/
(function (mw, $) {
'use strict';
const MAparams = {
action: 'parse',
page: 'User:JJPMaster (bot)/markAdmins-Data.json',
prop: 'wikitext',
format: 'json'
};
var api = new mw.Api();
api.get(MAparams).done(data => {
mw.hook('userjs.script-loaded.markadmins').fire(JSON.parse(data.parse.wikitext['*']));
});
var markAdmins = mw.libs.markAdmins = {
config: {},
defaults: {
groups: {
'sysop': {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
'bureaucrat': {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
'checkuser': {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
'global-sysop': {
label: 'GS',
legacyName: 'globalsysop',
legacyLabelId: 'gstxt',
enabled: true
},
'interface-admin': {
label: 'IA',
legacyName: 'intadmin',
legacyLabelId: 'iatxt',
enabled: true
},
'suppress': {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
'steward': {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
'accountcreator': {
label: 'ACC',
legacyName: 'acc',
legacyLabelId: 'acctxt',
enabled: false
},
'autoreview': {
label: 'AR',
legacyName: 'ar',
legacyLabelId: 'artxt',
enabled: false
},
'editor': {
label: 'REV',
legacyName: 'reviewer',
legacyLabelId: 'revtxt',
enabled: true
},
'transwiki': {
label: 'I',
legacyName: 'importer',
legacyLabelId: 'revtxt',
enabled: true
},
'import': {
label: 'IU',
legacyName: 'importuploader',
legacyLabelId: 'revtxt',
enabled: true
},
'uploader': {
label: 'U',
legacyName: 'uploader',
legacyLabelId: 'revtxt',
enabled: true
},
'vrt-permissions': {
label: 'VRT',
legacyName: 'vrt',
legacyLabelId: 'vrttxt',
enabled: true
},
'global-renamer': {
label: 'GRe',
legacyName: 'gre',
legacyLabelId: 'gretxt',
enabled: true
},
'global-rollbacker': {
label: 'GRb',
legacyName: 'grb',
legacyLabelId: 'grbtxt',
enabled: true
},
'ombuds': {
label: 'Omb',
legacyName: 'ombuds',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function (users) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
$.when(mw.loader.using('user'), $.ready).then(markAdmins.mergeConfig, markAdmins.mergeConfig);
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg'),
cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
markAdmins.ns = mw.config.get('wgNamespaceNumber');
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Namespace run conditions
if (!(cfg.runOn.indexOf(mw.config.get('wgCanonicalNamespace')) !== -1 ||
cfg.runOnHistory && mw.config.get('wgAction') === 'history' ||
cfg.runOnTalk && markAdmins.ns % 2 ||
cfg.runOnDiff && !!mw.util.getParamValue('diff'))) return;
// Hook-up content loading
mw.hook('wikipage.content').add(function ($c) { markAdmins.addLabels($c); }); // bind
},
destroy: function () {
markAdmins.nodes.forEach(function (n) {
$(n).remove();
});
},
nodes: [], // for reInit
reInit: function () {
markAdmins.fullPageProcessed = 0;
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ($content) {
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var cfg = this.config,
noSubpages = !cfg.markSubpages || !!({ Prefixindex: 1, Allpages: 1 })[mw.config.get('wgCanonicalSpecialPageName')],
isUserpage = [2, 3].indexOf(this.ns) !== -1,
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
enabledGroups = {},
marker = {},
previousUser,
anchors,
node = document.createElement('b');
node.className = 'adminMark';
// Filter enabled groups (Do it here and not later on each anchor)
Object.keys(cfg.groups).forEach(function (g, grpCfg) {
grpCfg = cfg.groups[g];
if (grpCfg.enabled) enabledGroups[g] = grpCfg;
});
if (!this.fullPageProcessed) $content = mw.util.$content || $content;
if (!$content[0]) return;
anchors = $content[0].getElementsByTagName('a');
// Add also the userpage link
var containsNstabUser = !!$content[0].querySelector('#ca-nstab-user');
if (!containsNstabUser && isUserpage && !this.fullPageProcessed &&
((isUserpage = document.getElementById('ca-nstab-user')) &&
(isUserpage = isUserpage.getElementsByTagName('a')))) {
anchors = Array.from(anchors);
anchors.push(isUserpage[0]);
}
this.fullPageProcessed = true;
if (cfg.dontMarkMyself) marker[cfg.dontMarkMyself] = '';
for (var i = 0, len = anchors.length; i < len; ++i) {
var a = anchors[i],
m = a.getAttribute('href');
if (!m) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
m = m.match(reUserpage);
if (!m || !m[2]) continue;
// Extract user
var userM = m[2],
user = userM.replace(/[/#].*/, ''),
isMainUserpageLink = user === userM;
user = decodeURIComponent(user);
// Two consecutive links to the same user? Don't mark followups!
previousUser = previousUser === user; // && !!m[1]; // isUsertalkLink
if (previousUser) continue; // only once
userM = marker[user];
if (userM === undefined) {
userM = '';
// User groups of selected user, polish user name
m = this.users[user.replace(/_/g, ' ')];
if (!m) continue;
for (var g = 0; g < m.length; g++) {
var grpCfg = enabledGroups[m[g]];
if (!grpCfg) continue;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if (userM) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if (!userM) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!isMainUserpageLink && noSubpages) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
1zvo0i2tl4u9lpn26hgxn4c0w70om28
15097
15096
2026-08-01T17:32:18Z
QueerEcofeminist
1879
[[:en:MediaWiki:Gadget-markAdmins.js]] पासून ९ आवर्तने आयात केलीत
15096
javascript
text/javascript
/**
* Flag administrators and special user group members with a letter
* in parenthesis behind links that go into their user namespace.
* E.g. Didym -> Didym (A)
* @OrigDocumentation: https://commons.wikimedia.org/wiki/MediaWiki_talk:Gadget-markAdmins.js
* @Documentation https://en.wikipedia.org/wiki/User:Mdaniels5757/markAdmins
*
* @rev 3 (14:14, 20 August 2019 (UTC))
* @author Euku - 2005, PDD, Littl, Guandalug
* @author Didym - 2014
* @author Rillke <https://blog.rillke.com> - 2014
* @contributor Perhelion - 2017
* @migrator Mdaniels5757 - 2020
* @migrator JJPMaster - 2024
*/
// <nowiki>
/* eslint indent:["error","tab",{"outerIIFEBody":0}] */
/* global jQuery:false, mediaWiki:false*/
(function (mw, $) {
'use strict';
const MAparams = {
action: 'parse',
page: 'User:JJPMaster (bot)/markAdmins-Data.json',
prop: 'wikitext',
format: 'json'
};
var api = new mw.Api();
api.get(MAparams).done(data => {
mw.hook('userjs.script-loaded.markadmins').fire(JSON.parse(data.parse.wikitext['*']));
});
var markAdmins = mw.libs.markAdmins = {
config: {},
defaults: {
groups: {
'sysop': {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
'bureaucrat': {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
'checkuser': {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
'global-sysop': {
label: 'GS',
legacyName: 'globalsysop',
legacyLabelId: 'gstxt',
enabled: true
},
'interface-admin': {
label: 'IA',
legacyName: 'intadmin',
legacyLabelId: 'iatxt',
enabled: true
},
'suppress': {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
'steward': {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
'accountcreator': {
label: 'ACC',
legacyName: 'acc',
legacyLabelId: 'acctxt',
enabled: false
},
'autoreview': {
label: 'AR',
legacyName: 'ar',
legacyLabelId: 'artxt',
enabled: false
},
'editor': {
label: 'REV',
legacyName: 'reviewer',
legacyLabelId: 'revtxt',
enabled: true
},
'transwiki': {
label: 'I',
legacyName: 'importer',
legacyLabelId: 'revtxt',
enabled: true
},
'import': {
label: 'IU',
legacyName: 'importuploader',
legacyLabelId: 'revtxt',
enabled: true
},
'uploader': {
label: 'U',
legacyName: 'uploader',
legacyLabelId: 'revtxt',
enabled: true
},
'vrt-permissions': {
label: 'VRT',
legacyName: 'vrt',
legacyLabelId: 'vrttxt',
enabled: true
},
'global-renamer': {
label: 'GRe',
legacyName: 'gre',
legacyLabelId: 'gretxt',
enabled: true
},
'global-rollbacker': {
label: 'GRb',
legacyName: 'grb',
legacyLabelId: 'grbtxt',
enabled: true
},
'ombuds': {
label: 'Omb',
legacyName: 'ombuds',
legacyLabelId: 'ombtxt',
enabled: true
}
},
runOn: ['Special', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function (users) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error options
$.when(mw.loader.using('user'), $.ready).then(markAdmins.mergeConfig, markAdmins.mergeConfig);
},
mergeConfig: function () {
// Merge new configuration
var optionsConfig = mw.user.options.get('markAdminCfg'),
cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {},
optionsConfig ? JSON.parse(optionsConfig) : {}
);
markAdmins.ns = mw.config.get('wgNamespaceNumber');
cfg.markSubpages = !!window.marksubpages;
cfg.dontMarkMyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;
// Namespace run conditions
if (!(cfg.runOn.indexOf(mw.config.get('wgCanonicalNamespace')) !== -1 ||
cfg.runOnHistory && mw.config.get('wgAction') === 'history' ||
cfg.runOnTalk && markAdmins.ns % 2 ||
cfg.runOnDiff && !!mw.util.getParamValue('diff'))) return;
// Hook-up content loading
mw.hook('wikipage.content').add(function ($c) { markAdmins.addLabels($c); }); // bind
},
destroy: function () {
markAdmins.nodes.forEach(function (n) {
$(n).remove();
});
},
nodes: [], // for reInit
reInit: function () {
markAdmins.fullPageProcessed = 0;
markAdmins.destroy();
markAdmins.mergeConfig();
},
addLabels: function ($content) {
// Right, the configuration evaluation is here
// It might be possible to use Ajax for page
// navigation in future.
var cfg = this.config,
noSubpages = !cfg.markSubpages || !!({ Prefixindex: 1, Allpages: 1 })[mw.config.get('wgCanonicalSpecialPageName')],
isUserpage = [2, 3].indexOf(this.ns) !== -1,
reUserpage = /^\/wiki\/User([ _]talk)?:(.+)/,
enabledGroups = {},
marker = {},
previousUser,
anchors,
node = document.createElement('b');
node.className = 'adminMark';
// Filter enabled groups (Do it here and not later on each anchor)
Object.keys(cfg.groups).forEach(function (g, grpCfg) {
grpCfg = cfg.groups[g];
if (grpCfg.enabled) enabledGroups[g] = grpCfg;
});
if (!this.fullPageProcessed) $content = mw.util.$content || $content;
if (!$content[0]) return;
anchors = $content[0].getElementsByTagName('a');
// Add also the userpage link
var containsNstabUser = !!$content[0].querySelector('#ca-nstab-user');
if (!containsNstabUser && isUserpage && !this.fullPageProcessed &&
((isUserpage = document.getElementById('ca-nstab-user')) &&
(isUserpage = isUserpage.getElementsByTagName('a')))) {
anchors = Array.from(anchors);
anchors.push(isUserpage[0]);
}
this.fullPageProcessed = true;
if (cfg.dontMarkMyself) marker[cfg.dontMarkMyself] = '';
for (var i = 0, len = anchors.length; i < len; ++i) {
var a = anchors[i],
m = a.getAttribute('href');
if (!m) continue;
// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
m = m.match(reUserpage);
if (!m || !m[2]) continue;
// Extract user
var userM = m[2],
user = userM.replace(/[/#].*/, ''),
isMainUserpageLink = user === userM;
user = decodeURIComponent(user);
// Two consecutive links to the same user? Don't mark followups!
previousUser = previousUser === user; // && !!m[1]; // isUsertalkLink
if (previousUser) continue; // only once
userM = marker[user];
if (userM === undefined) {
userM = '';
// User groups of selected user, polish user name
m = this.users[user.replace(/_/g, ' ')];
if (!m) continue;
for (var g = 0; g < m.length; g++) {
var grpCfg = enabledGroups[m[g]];
if (!grpCfg) continue;
// String concatenation is oftentimes faster in modern browsers,
// so using Arrays and joining them finally seems advantage.
// But we would need an additional IF, so there is no gain.
if (userM) userM += '/';
userM += grpCfg.label;
}
marker[user] = userM ? [userM] : userM;
}
// Are there markers at all?
if (!userM) continue;
// Don't mark certain pages, except link to user main page.
// Does the link go to the main user page or, if linking subpages is enabled,
// is it not a page that is just listing subpages?
if (!isMainUserpageLink && noSubpages) continue;
// Check finished, now append node
marker[user][1] = this.markUser(marker[user], a, node);
// Required for consecutive user link check
previousUser = user;
} // end loop
},
markUser: function (mark, a, node) {
if (mark[1]) {
node = mark[1].cloneNode(1);
} else {
node = node.cloneNode(1);
node.appendChild(document.createTextNode('\u00A0(' + mark[0] + ')'));
}
a.appendChild(node);
this.nodes.push(node); // for reInit
return node;
}
};
mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
1zvo0i2tl4u9lpn26hgxn4c0w70om28