Jump to content

MediaWiki:Centralnotice-template-spatton sandbox3

From Meta, a Wikimedia project coordination wiki

<style>

.ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ }

.ui-front { z-index: 100; }


/* Interaction Cues


*/

.ui-state-disabled { cursor: default !important; pointer-events: none; }


/* Icons


*/

.ui-icon { display: inline-block; vertical-align: middle; margin-top: -.25em; position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }

.ui-widget-icon-block { left: 50%; margin-left: -8px; display: block; }

/* Misc visuals


*/

/* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; font-size: 100%; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: 0; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { margin: 0; cursor: pointer; /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-item-wrapper { position: relative; padding: 3px 1em 3px .4em; } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; }

/* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item-wrapper { padding-left: 2em; }

/* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; }

/* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } .ui-button { padding: .4em 1em; display: inline-block; position: relative; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;

/* Support: IE <= 11 */ overflow: visible; }

.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }

/* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2em; box-sizing: border-box; text-indent: -9999px; white-space: nowrap; }

/* no icon support for input elements */ input.ui-button.ui-button-icon-only { text-indent: 0; }

/* button icon element(s) */ .ui-button-icon-only .ui-icon { position: absolute; top: 50%; left: 50%; margin-top: -8px; margin-left: -8px; }

.ui-button.ui-icon-notext .ui-icon { padding: 0; width: 2.1em; height: 2.1em; text-indent: -9999px; white-space: nowrap;

}

input.ui-button.ui-icon-notext .ui-icon { width: auto; height: auto; text-indent: 0; white-space: normal; padding: .4em 1em; }

/* workarounds */ /* Support: Firefox 5 - 40 */ input.ui-button::-moz-focus-inner, button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .ui-controlgroup { vertical-align: middle; display: inline-block; } .ui-controlgroup > .ui-controlgroup-item { float: left; margin-left: 0; margin-right: 0; } .ui-controlgroup > .ui-controlgroup-item:focus, .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { z-index: 9999; } .ui-controlgroup-vertical > .ui-controlgroup-item { display: block; float: none; width: 100%; margin-top: 0; margin-bottom: 0; text-align: left; } .ui-controlgroup-vertical .ui-controlgroup-item { box-sizing: border-box; } .ui-controlgroup .ui-controlgroup-label { padding: .4em 1em; } .ui-controlgroup .ui-controlgroup-label span { font-size: 80%; } .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { border-left: none; } .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { border-top: none; } .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { border-right: none; } .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { border-bottom: none; }

/* Spinner specific style fixes */ .ui-controlgroup-vertical .ui-spinner-input {

/* Support: IE8 only, Android < 4.4 only */ width: 75%; width: calc( 100% - 2.4em ); } .ui-controlgroup-vertical .ui-spinner .ui-spinner-up { border-top-style: solid; }

.ui-checkboxradio-label .ui-icon-background { box-shadow: inset 1px 1px 1px #ccc; border-radius: .12em; border: none; } .ui-checkboxradio-radio-label .ui-icon-background { width: 16px; height: 16px; border-radius: 1em; overflow: visible; border: none; } .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { background-image: none; width: 8px; height: 8px; border-width: 4px; border-style: solid; } .ui-checkboxradio-disabled { pointer-events: none; } .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; }

/* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; }

/* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; }

/* Icons */ .ui-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; left: .5em; top: .3em; } .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; outline: 0; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin-top: .5em; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-n { height: 2px; top: 0; } .ui-dialog .ui-resizable-e { width: 2px; right: 0; } .ui-dialog .ui-resizable-s { height: 2px; bottom: 0; } .ui-dialog .ui-resizable-w { width: 2px; left: 0; } .ui-dialog .ui-resizable-se, .ui-dialog .ui-resizable-sw, .ui-dialog .ui-resizable-ne, .ui-dialog .ui-resizable-nw { width: 7px; height: 7px; } .ui-dialog .ui-resizable-se { right: 0; bottom: 0; } .ui-dialog .ui-resizable-sw { left: 0; bottom: 0; } .ui-dialog .ui-resizable-ne { right: 0; top: 0; } .ui-dialog .ui-resizable-nw { left: 0; top: 0; } .ui-draggable .ui-dialog-titlebar { cursor: move; } .ui-draggable-handle { -ms-touch-action: none; touch-action: none; } .ui-resizable { position: relative; } .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px; } .ui-progressbar { height: 2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value { margin: -1px; height: 100%; } .ui-progressbar .ui-progressbar-overlay { background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); height: 100%; filter: alpha(opacity=25); /* support: IE8 */ opacity: 0.25; } .ui-progressbar-indeterminate .ui-progressbar-value { background-image: none; } .ui-selectable { -ms-touch-action: none; touch-action: none; } .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } .ui-selectmenu-menu { padding: 0; margin: 0; position: absolute; top: 0; left: 0; display: none; } .ui-selectmenu-menu .ui-menu { overflow: auto; overflow-x: hidden; padding-bottom: 1px; } .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { font-size: 1em; font-weight: bold; line-height: 1.5; padding: 2px 0.4em; margin: 0.5em 0 0 0; height: auto; border: 0; } .ui-selectmenu-open { display: block; } .ui-selectmenu-text { display: block; margin-right: 20px; overflow: hidden; text-overflow: ellipsis; } .ui-selectmenu-button.ui-button { text-align: left; white-space: nowrap; width: 14em; } .ui-selectmenu-icon.ui-icon { float: right; margin-top: 0; } .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }

/* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; }

.ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; }

.ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } .ui-sortable-handle { -ms-touch-action: none; touch-action: none; } .ui-spinner { position: relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } .ui-spinner-input { border: none; background: none; color: inherit; padding: .222em 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 2em; } .ui-spinner-button { width: 1.6em; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { border-top-style: none; border-bottom-style: none; border-right-style: none; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tooltip { padding: 8px; position: absolute; z-index: 9999; max-width: 300px; } body .ui-tooltip { border-width: 2px; } /* Component containers


*/

.ui-widget { font-family: Arial,Helvetica,sans-serif; font-size: 1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,Helvetica,sans-serif; font-size: 1em; } .ui-widget.ui-widget-content { border: 1px solid #c5c5c5; } .ui-widget-content { border: 1px solid #dddddd; background: #ffffff; color: #333333; } .ui-widget-content a { color: #333333; } .ui-widget-header { border: 1px solid #dddddd; background: #e9e9e9; color: #333333; font-weight: bold; } .ui-widget-header a { color: #333333; }

/* Interaction states


*/

.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button,

/* We use html here because we need a greater specificity to make sure disabled works properly when clicked or hovered */ html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { border: 1px solid #c5c5c5; background: #f6f6f6; font-weight: normal; color: #454545; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button { color: #454545; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus, .ui-button:hover, .ui-button:focus { border: 1px solid #cccccc; background: #ededed; font-weight: normal; color: #2b2b2b; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited, a.ui-button:hover, a.ui-button:focus { color: #2b2b2b; text-decoration: none; }

.ui-visual-focus { box-shadow: 0 0 3px 1px rgb(94, 158, 214); } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { border: 1px solid #003eff; background: #007fff; font-weight: normal; color: #ffffff; } .ui-icon-background, .ui-state-active .ui-icon-background { border: #003eff; background-color: #ffffff; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; }

/* Interaction Cues


*/

.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #dad55e; background: #fffa90; color: #777620; } .ui-state-checked { border: 1px solid #dad55e; background: #fffa90; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #777620; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #f1a899; background: #fddfdf; color: #5f3f3f; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #5f3f3f; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #5f3f3f; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ }

/* Icons


*/

/* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url("images/ui-icons_444444_256x240.png"); } .ui-widget-header .ui-icon { background-image: url("images/ui-icons_444444_256x240.png"); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-button:hover .ui-icon, .ui-button:focus .ui-icon { background-image: url("images/ui-icons_555555_256x240.png"); } .ui-state-active .ui-icon, .ui-button:active .ui-icon { background-image: url("images/ui-icons_ffffff_256x240.png"); } .ui-state-highlight .ui-icon, .ui-button .ui-state-highlight.ui-icon { background-image: url("images/ui-icons_777620_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url("images/ui-icons_cc0000_256x240.png"); } .ui-button .ui-icon { background-image: url("images/ui-icons_777777_256x240.png"); }

/* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-caret-1-n { background-position: 0 0; } .ui-icon-caret-1-ne { background-position: -16px 0; } .ui-icon-caret-1-e { background-position: -32px 0; } .ui-icon-caret-1-se { background-position: -48px 0; } .ui-icon-caret-1-s { background-position: -65px 0; } .ui-icon-caret-1-sw { background-position: -80px 0; } .ui-icon-caret-1-w { background-position: -96px 0; } .ui-icon-caret-1-nw { background-position: -112px 0; } .ui-icon-caret-2-n-s { background-position: -128px 0; } .ui-icon-caret-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -65px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -65px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 1px -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; }


/* Misc visuals


*/

/* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 3px; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 3px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 3px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 3px; }

/* Overlays */ .ui-widget-overlay { background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .ui-widget-shadow { -webkit-box-shadow: 0px 0px 5px #666666; box-shadow: 0px 0px 5px #666666; }


/* Hide when editing */ .action-edit #centralNotice, .ve-activated #centralNotice {

   display: none !important;

}

/* Fix fixed position z-index for de.wikipedia */ .mw-body { z-index: auto; }

  1. siteNotice { z-index: 2; }

/* Border-Box */

.frb *, .frb *:before, .frb *:after {

   -moz-box-sizing: border-box;
   -webkit-box-sizing: border-box;
   box-sizing: border-box;

}

/* Banner wide settings */

.frb input, .frb button {

   font-size: inherit;
   font-family: inherit;

}

.frb button {

   cursor: pointer;
   outline: 0;
   text-align: center;
   vertical-align: middle;

}

/* --- Main banner wrapper --- */

  1. siteNotice {
   z-index: 2;

}

.frb {

   display: none;
   top: -11px;
   right: 0;
   z-index: 110;
   background: transparent;
   margin-bottom: 20px;
   background-color: #fff;
   text-align: left;
   color: #000;
   font-size: 16px;
   line-height: 1.1875; /*19px @16px*/
   font-family: -apple-system, 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Lato', 'Helvetica', 'Arial', sans-serif;
   font-style: normal; /* needed for uk.wikipedia */

}

.frb--minimized, .frb--fixed {

   position: fixed;
   top: 0;
   left: 0;
   width: calc(100% - 16px);
   padding: 16px;
   background-color: #fff;
   border-bottom: 1px solid #c8ccd1;
   box-shadow: 0 1px 1px rgba(0,0,0,0.1);

}

.frb--in-article {

   position: relative;
   top: 0;
   width: calc(100% + 11px);

}

/* --- Window Styles --- */

.frb-main {

   position: relative;
   display: table;
   width: 100%;
   padding: 0;
   background-color: #FFFFFF;
   transition: background-color 0.5s ease;

}

body.rtl .frb-main {

   padding: 16px 8px 16px 0;

}

/* --- Close button --- */

.frb-close {

   display: inline-block;
   position: absolute;
   right: 4px;
   top: 0;
   z-index: 999;
   font-size: 12px;
   cursor: pointer;
   padding: 0;

} body.rtl .frb-close {

   right: auto;
   left: 0;

}

.frb--minimized .frb-close {

   top: -15px;
   right: 24px;

}

.frb--fixed .frb-close {

   right: 20px;

}

.frb-close:hover .frb-icon g {

   stroke: #000000;

}

.frb-icon-close {

   width: 16px;
   height: 16px;

}

/* --- RML Close button --- */

.close-rml {

   text-align: center;
   display: none;
   margin-left: -12px;
   padding-top: 4px;
   z-index: 999;
   font-size: 11px;
   line-height: 1;
   text-transform: uppercase;
   cursor: pointer;
   color: #72777d;

}

.frb--minimized.frb-rml-displayed .close-rml {

   display: block !important;

} .close-rml:hover {

   color: #000000;

} .close-rml:hover .frb-icon g {

   stroke: #000000;

}

/* --- Back button --- */ .frb-back {

   display: none;
   cursor: pointer;
   position: absolute;
   top: 0;
   left: 27px;

}

.frb-back:hover .frb-icon path {

   stroke: #000;

}

.frb-back:hover .frb-icon rect {

   fill: #000;

}

.frb-icon-back {

   height: 13px;
   width: 20px;

}

.frb--minimized .frb-back {

   display: none !important;

}

/* -------------- Message -------------- */

.frb-message {

   display: table-cell;
   width: auto;
   vertical-align: top;
   font-weight: normal;
   color: #000;
   font-size: 15px;
   line-height: 1.6; /*24px @15px*/
   transition: background-color 0.5s ease;

}

@media (min-width: 1100px) {

   .frb-message {
       font-size: 18px;
   }
   html[lang="en"] .frb-message { font-size: 19px; }

}

@media (min-width: 1300px) {

   .frb-message { font-size: 20px; }
   html[lang="en"] .frb-message { font-size: 21px; }

}

@media (min-width: 1500px) {

   .frb-message { font-size: 21px; }
   html[lang="en"] .frb-message { font-size: 22px; }

}

@media (min-width: 1700px) {

   .frb-message { font-size: 22px; }
   html[lang="en"] .frb-message { font-size: 23px; }

}

.frb-message-icon {

   float: left;
   margin-top: 4px; /*in px since margin is consistent on all bp*/
   margin-right: 2px;
   height: 1em;
   width: 1em;

}

.frb--minimized .frb-message-icon {

   margin-top: 3px;

}

@media all and (min-width: 1300px) {

   .frb--minimized .frb-message-icon {
       margin-top: 4px;
   }

}

body.rtl .frb-message-icon {

 float: right;
 margin-left: 2px;

}

.frb-message p {

   margin: 0;

}

.frb-highlight {

   border-bottom: 3px solid #900;
   padding-bottom: 2px;

}

/* Minimized styles */

.frb--minimized .frb-main {

   text-align: center;
   cursor: pointer;

}

@media (min-width: 1200px) { /*1600px*/

   .frb--minimized .frb-main {
       text-align: center;
   }

}

.frb--minimized .frb-message {

   padding: 0;
   background-color: transparent;
   border: none;
   display: table-cell;
   vertical-align: middle;

}

.frb-message-inner {

   position: relative;
   z-index: 1;
   background-color: #f8f9fa;
   border: 6px solid #900;
   padding: 12px 18px 14px;

}

@media all and (min-width: 1100px) {

   .frb-message-inner {
       padding: 15px 26px 19px;
   }

}

.frb--minimized .frb-message-inner {

   padding: 12px 18px;
   font-size: 14px;

}

@media (min-width: 1100px) {

   .frb--minimized .frb-message-inner {
       font-size: 16px;
   }

}

@media (min-width: 1400px) {

   .frb--minimized .frb-message-inner {
       padding: 16px 26px;
       font-size: inherit;
   }

}

.frb--minimized .frb-form {

   background-color: transparent;
   width: auto;
   padding: 2px 0;
   width: 360px;
   border-left: 6px solid transparent;
   overflow: visible;

}

@media (min-width: 1100px) {/*1600px*/

   .frb--minimized .frb-form {
       padding: 2px 12px 0 12px;
   }

}

@media all and (min-width: 1200px) {

   .frb--minimized .frb-form {
       width: 440px;
   }

}

/* -------------- Form -------------- */

.frb-form {

   vertical-align: top;
   display: table-cell;
   position: relative;
   width: 320px;
   height: 100%;
   vertical-align: top;
   background: #fff;

}

.frb--minimized .frb-form {

   vertical-align: middle;
   padding-top: 0;

}

/* Minimized styles */ .frb--minimized .frb-form {

   background-color: transparent;

}

/*Triangle*/ .frb--minimized .frb-message-inner:before {

   position: absolute;
   top: 50%;
   right: -26px;
   content: " ";
   margin: -10px 0 0 0;
   border: 10px solid transparent;
   border-left-color: #900;
   pointer-events: none;

}

/*RTL Triangle*/ body.rtl .frb--minimized .frb-message-inner:before {

   border-left-color: transparent;
   border-right-color: #900;
   right: auto;
   left: -28px;

}

/*Triangle in article and fixed expanded state*/

.frb-triangle:before {

   content: " ";
   position: absolute;
   top: 50%;
   left: -25px;
   margin-top: -13px;
   content: " ";
   border: 10px solid transparent;
   border-left-color: #900;
   pointer-events: none;

}

.frb-triangle--step2:before {

   top: 42px;

}

.frb--minimized .frb-buttons {

   display: table;
   width: 100%;

}

.frb-form fieldset {

   border: 0;
   margin: 0 auto;
   padding: 0 0 6px 0;

}

.frb-form .frb-amounts {

   padding: 0;
   margin-top: 8px;

}

.frb-form legend, .frb-rml-form-legend {

   position: relative;
   top: 0;
   width: 100%;
   margin: 0 0 2px;
   padding: 0 4px;
   font-weight: normal;
   text-align: left;
   font-size: 14px;
   line-height: 1.2142857143; /*17px @14px*/
   color: #555;
   transition: all .25s ease-in-out;

}

.frb-rml-form-legend {

   line-height: 1; /*14px @14px*/
   padding: 0 0 2px;

}

.frb-frequency legend, .frb-amounts legend {

   padding: 0 5px;

}

.frb--minimized .frb-form legend {

   text-align: left;

}

.frb-form fieldset:first-of-type legend {

   padding-top: 0;

}

.frb-form fieldset.frb-haserror legend {

   color: #d33;
   font-weight: bold;

}

.frb-form ul {

   display: table;
   table-layout: fixed;
   width: 100%;
   margin: 0;
   padding: 0;
   list-style: none;

}

.frb-form li {

   display: table-cell;
   vertical-align: top;

}

.frb-form .frb-methods li {

   padding: 4px !important;

}

  1. frb-form {
   padding-left: 25px;
   position: relative;
   overflow: hidden;

}

  1. frb-frequency-monthly:disabled + label {
   opacity: 0.4 !important;
   cursor: default;

} .frb-radio:disabled:hover + .frb-radio-label {

   color: #000;
   text-decoration: none;

}

.frb--fixed #frb-form {

   padding-right: 15px;

}

.frb--minimized #frb-form {

   height: 100% !important;

}

/* --- Common Button Styles --- */

/* Hide radio buttons */ .frb-form .frb-methods input[type="radio"], .frb-form input[type="checkbox"] {

   position: absolute;
   overflow: hidden;
   height: 1px;
   width: 1px;
   clip: rect(0 0 0 0);
   border: 0;
   margin: -1px;
   padding: 0;

}

.frb-btn {

   width: 100%;
   height: 48px;
   display: block;
   background-color: #f8f9fa;
   color: #000;
   font-size: 16px;
   line-height: 1.25; /*20px @16px*/
   padding: 13px 4px 15px 4px;
   border: 1px solid #9aa0a7;
   border-radius: 2px;
   outline: 0;
   text-align: center;
   cursor: pointer;
   font-family: inherit;
   font-weight: 500;
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

} .frb-btn:hover {

   background-color: #fff;
   color: #444;
   border-color: #a2a9b1;

} .frb-btn:active {

   background-color: #d9d9d9;
   color: #000;
   border-color: #7d8389;

} .frb-form input[type=radio]:checked + .frb-btn {

   background-color: #2a4b8d;
   color: #fff;
   border-color: #7d8389;

}

.frb-rml-link {

   font-size: 16px;
   line-height: 1.125; /*18px @16px*/
   color: #36c;
   margin: 8px 2px 0;
   padding: 8px 4px;
   text-align: center;
   cursor: pointer;
   font-weight: bold;

}

@media all and (min-width: 1700px) {

   .frb-rml-link {
       padding: 6px 4px;
   }

}

.frb-rml-link:hover, .frb-rml-link:focus {

   color: #447ff5;

}

.frb-radio, .frb-radio-label {

   font-size: 16px;
   line-height: 1.375; /*22px @16px*/

}

.frb-radio {

   cursor: pointer;
   float: left;
   height: 14px;
   margin: 7px 5px 0px 7px;

}

body.rtl .frb-radio {

   float: right;

}

.frb-radio-label {

   display: block;
   padding: 3px 2px;
   cursor: pointer;
   white-space: nowrap;
   font-weight: bold;

}

body.rtl .frb-radio-label {

   text-align: right;

}

@media all and (min-width: 1900px) {

   .frb-radio-label {
       padding: 2px;
   }

}

.frb-frequency .frb-radio-label {

   font-size: 16px;
   line-height: 1.375; /*22px @16px*/

}

/* Focus styles */

/*Outline reset*/ .frb-form input[type=radio]:focus, .frb-radio:focus + .frb-radio-label,

  1. frb-amt-other-input:focus,
  2. frb-rml-email:focus {
   outline: 0;

}

.frb a:focus, .frb button:focus, .frb-btn:focus, .frb-close:focus, .frb-back:focus, .frb-btn-submit:focus, .frb-form input[type=radio]:focus + .frb-btn, .frb-form input[type=radio]:focus + #frb-amt-other-label,

  1. frb-amt-other-input:focus,

.frb-rml-displayed .frb-rml-form input:focus,

  1. yes-button:focus,
  2. no-button:focus {
   outline: 0;
   border-color: #36c !important;
   box-shadow: inset 0 0 0 2px #36c;

}

.frb button.frb-submit:focus {

   box-shadow: inset 0 0 0 1px #447ff5, inset 0 0 0 2px #FFFFFF;

}

.frb-rml-displayed .frb-rml-form input:focus, .frb-rml-displayed .frb-rml-form .frb-btn-submit:focus {

   position: relative;

}

.frb-radio:focus + .frb-radio-label, .frb-radio:hover + .frb-radio-label {

   color: #36c;
   text-decoration: underline;

}

  1. frb-amt-other-input:focus,
  2. frb-amt-other-input:hover {
   border-color: #36c !important;
   box-shadow: none;
   color: #36c;

}

.frb-form input[type=radio]:focus + .frb-btn, .frb-form input[type=radio]:focus + #frb-amt-other-label, .frb-form input[type=radio]:checked + .frb-btn:focus, .frb-form input[type=radio]:checked + #frb-amt-other-label:focus, .frb-form .frb-btn-submit:focus,

  1. yes-button:focus {
   box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;

}

.frb-btn img {

   padding: 0 4px;
   max-width: 100%;
   max-height: 20px; /*must equal font line height of frb-btn*/

}

.frb-methods .frb-btn {

   height: 64px;
   line-height: 1.125; /*18px @16px*/

}

.frb-methods svg {

   max-width: 100%;
   width: 64px;

}

/*Slight adaption for Paypal logo with USD string*/ .frb-methods .frb-logo-payments--paypal-usd {

   width: 85px;
   margin-bottom: -6px;

}

/* Credit card logos */

/* Countries with 4 card types */ .frb-cc-logo-wrapper {

   display: block;
   margin: 0 auto;
   max-width: 89px;

}

.frb-pm-cc svg {

   width: 26px;
   max-height: 15px; /*height needed for IE11*/
   margin: 2px;
   display: none;

}

/* Countries with 3 card types */ .frb-cctypes-vma .frb-cc-logo-wrapper {

   width: 100%;

} .frb-cctypes-vma svg {

   width: 28%;
   max-height: 34px;

}

.frb-cc-logo-wrapper {

   display: none;
   font-size: 0; /* Remove spacing between icons */

}

.frb-cctypes-vmad .frb-cc-logo-wrapper, .frb-cctypes-vmaj .frb-cc-logo-wrapper, .frb-cctypes-vma .frb-cc-logo-wrapper, .frb-cctypes-vm .frb-cc-logo-wrapper {

   display: block;

}

.frb-cctypes-vmad .frb-pm-cc-label, .frb-cctypes-vmaj .frb-pm-cc-label, .frb-cctypes-vma .frb-pm-cc-label, .frb-cctypes-vm .frb-pm-cc-label {

   display: none;

}

.frb-cctypes-vmad .frb-cc-logo-visa, .frb-cctypes-vmad .frb-cc-logo-mastercard, .frb-cctypes-vmad .frb-cc-logo-amex, .frb-cctypes-vmad .frb-cc-logo-discover,

.frb-cctypes-vmaj .frb-cc-logo-visa, .frb-cctypes-vmaj .frb-cc-logo-mastercard, .frb-cctypes-vmaj .frb-cc-logo-amex, .frb-cctypes-vmaj .frb-cc-logo-jcb,

.frb-cctypes-vma .frb-cc-logo-visa, .frb-cctypes-vma .frb-cc-logo-mastercard, .frb-cctypes-vma .frb-cc-logo-amex,

.frb-cctypes-vm .frb-cc-logo-visa, .frb-cctypes-vm .frb-cc-logo-mastercard {

   display: inline-block;

}

/* Blue text buttons */ .frb-btn.frb-btn-btxt {

   color: #3366cc;

} .frb-btn.frb-btn-btxt:active {

   color: #2a4b8d;

}

/* Submit/Continue buttons (blue background) */ .frb-btn-submit {

   width: 100%;
   display: block;
   margin-top: 6px;
   padding: 8px;
   color: #fff;
   background-color: #3366cc;
   border-color: #3366cc;
   cursor: pointer;
   border: 0;
   border-radius: 2px;
   font-size: 16px;
   font-weight: bold;
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

} .frb-btn-submit:hover {

   background-color: #447ff5;
   border-color: #447ff5;

} .frb-btn-submit:active {

   background-color: #2a4b8d;
   border-color: #2a4b8d;
   box-shadow: none;

}

/* --- Other Amount --- */

  1. frb-amt-other-input::-webkit-input-placeholder {
   color: #000;

}

  1. frb-amt-other-input::-moz-placeholder {
   opacity: 1;
   color: #000;

}

  1. frb-amt-other-input:-ms-input-placeholder {
   color: #000;

}

  1. frb-amt-other-input:-moz-placeholder {
   opacity: 1;
   color: #000;

}

  1. frb-amt-other-input:focus::-webkit-input-placeholder {
   color: #666;

}

  1. frb-amt-other-input:focus::-moz-placeholder {
   opacity: 1;
   color: #666;

}

  1. frb-amt-other-input:focus:-ms-input-placeholder {
   color: #666;

}

  1. frb-amt-other-input:focus:-moz-placeholder {
   opacity: 1;
   color: #666;

}

  1. frb-amt-other-input:hover::-webkit-input-placeholder {
   color: #36c;

}

  1. frb-amt-other-input:hover::-moz-placeholder {
   opacity: 1;
   color: #36c;

}

  1. frb-amt-other-input:hover:-ms-input-placeholder {
   color: #36c;

}

  1. frb-amt-other-input:hover:-moz-placeholder {
   opacity: 1;
   color: #36c;

}

.frb-amt-other-label {

   display: none;

}

.frb-amt-other {

   width: 66.666666%;

}

  1. frb-amt-other-input {
   width: calc(100% - 33px);
   border: none;
   border-bottom: 1px solid #000;
   color: #000;
   font-size: 16px;
   font-weight: normal;
   padding: 5px 2px 7px 0;
   border-radius: 0;
   direction: ltr;
   text-align: left;
   font-family: inherit;
   font-weight: bold;

}

@media all and (min-width: 1280px) {

   .frb-amt-other #frb-amt-other-input {
       margin: 0;
   }

}

body.rtl #frb-amt-other-input {

   text-align: right;

}

/* --- Transaction fees options --- */


/*Checkbox styles*/ .frb-checkbox {

   cursor: pointer;
   float: left;
   width: 16px;
   height: 16px;
   padding: 0;
   margin: 13px 4px 0 6px;
   display: inline-block;

}

.frb-checkbox-label::before {

   left: 0;
   display: inline-block;
   content: "";
   height: 17px;
   width: 17px;
   border-radius: 2px;
   border: 1px solid #a2a9b1;
   background-color: #f8f9fa;

}

.frb-checkbox-label::after {

   content: "";
   top: 8px;
   left: 4px;
   display: inline-block;
   height: 5px;
   width: 9px;
   border-left: 2px solid;
   border-bottom: 2px solid;
   transform: rotate(-45deg);
   border-color: #fff;

}

.frb-checkbox-label {

   position: relative;
   display: inline-block;
   margin: 13px 0 0 5px;
   width: calc(100% - 10px);
   padding-left: 26px;
   padding-top: 2px;
   cursor: pointer;
   font-size: 14px;
   line-height: 1.3571428571; /*19px @14px*/


   color: #000;

}

.frb-checkbox-label::before, .frb-checkbox-label::after {

   position: absolute;

} /*Outer-box*/ .frb-checkbox-label::before {

   top: 3px;

} /*Checkmark*/ frb-checkbox-label::after {

   left: 4px;
   top: 8px;

}

body.rtl .frb-checkbox {

   float: right;

}

.frb-ptf-total {

   font-weight: bold;

}

/*Hide the checkmark by default*/ .frb-checkbox + .frb-checkbox-label::after {

   content: none;

} /*Unhide the checkmark on the checked state*/ .frb-checkbox:checked + .frb-checkbox-label::after {

   content: "";

}

.frb-checkbox:checked + .frb-checkbox-label:before {

   background-color: #36c;
   border-color: #36c;

}

/*Focus styles*/ /*Unchecked*/ .frb-checkbox:focus + .frb-checkbox-label::before {

   border-color: #36c;
   box-shadow: inset 0 0 0 1px #36c;

}

/*Checked*/ .frb-checkbox:focus:checked + .frb-checkbox-label::before {

   box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;

}

/*Hover*/ .frb-checkbox:hover + .frb-checkbox-label::before {

   background-color: #EAF3FF;

}

.frb-checkbox:checked:hover + .frb-checkbox-label:before {

   background-color: #447ff5;
   border-color: #447ff5;

}

/* --- Email opt-in --- */

.frb-form .frb-optin {

   display: none;
   margin-bottom: 3px;

}

.frb-form .frb-optin legend {

   margin-bottom: 8px;

}

.frb-form .frb-optin li {

   display: block;
   clear: both;

}

.frb-optin .frb-radio {

   margin: 6px 5px 0px 9px;

}

.frb-optin .frb-radio-label {

   float: right;
   width: calc(100% - 30px);
   white-space: normal;
   font-size: 14px;
   line-height: 1.3571428571; /*19px @14px*/
   font-weight: bold;

}

.frb-optin .frb-radio-label:hover, .frb-optin .frb-radio:hover + .frb-radio-label {

   text-decoration: none;

}

.frb-optin-prompt {

   display: none;
   margin: 8px;
   padding: 8px;
   border: 2px solid #900;
   border-radius: 2px;
   font-size: 14px;
   line-height: 1.2857142857; /*18px @14px*/
   font-weight: normal;

}

.frb-optin-prompt.is-positive {

   border-color: #14866d;
   font-weight: bold;

}

.frb-optin-prompt__yes {

   display: none;

}

.frb-optin-prompt__no {

   display: block;

}

.frb-optin-prompt.is-positive .frb-optin-prompt__yes {

   display: block;

}

.frb-optin-prompt.is-positive .frb-optin-prompt__no {

   display: none;

}

.frb-optin-smallprint {

   font-size: 12px;
   font-weight: normal;
   padding: 8px 8px 0 32px;
   line-height: 1.5;
   color: #666;

}

.frb-optin-smallprint a {

   text-decoration: underline;
   color: #666;

}

/* --- Payment method Buttons --- */

/* Hide methods which aren't monthly capable when monthly option is selected */ .form-monthly .no-monthly {

   opacity: 0.4 !important;

}

.form-monthly .no-monthly .frb-label {

   cursor: default;

}

.frb-form .frb-methods {

   margin-top: 12px;
   padding-bottom: 0;

}

@media all and (min-width: 1100px) {

   .frb-form .frb-methods {
       margin-top: 15px;
   }

}

@media all and (min-width: 1700px) {

   .frb-form .frb-methods {
       margin-top: 8px;
   }

}

/* Only where there are 4 methods, display 2x2 */ .frb-methods ul li:first-child:nth-last-child(4), .frb-methods ul li:first-child:nth-last-child(4) ~ li {

   float: left;
   width: 50%;

} .frb-methods ul li:first-child:nth-last-child(4) .frb-btn, .frb-methods ul li:first-child:nth-last-child(4) ~ li .frb-btn {

   height: 48px;
   padding: 13px 4px 15px 4px;

}

/* --- Footer / Small Print --- */ .frb-footer {

   padding-top: 10px;
   font-size: 12px;
   line-height:  1.3333333333; /*16px @12px*/
   color: #555;
   font-weight: normal;

}

/* Minimized styles */ .frb--minimized .frb-footer {

   display: none !important;

}

/* --- Show and Hiding (Minimize and Maximize) --- */

.frb-buttons {

   display: none;
   border-collapse: separate;
   border-spacing: 14px 0;
   margin: 0 auto;
   text-align: center;

}

.frb.frb-rml-displayed .frb-buttons {

   display: none;

}

.banner-button {

   display: table-cell;
   vertical-align: middle;
   width: 50%;
   height: 48px;
   padding: 5px 6px;
   line-height: 48px;
   background-color: white;
   border: 1px solid #9aa0a7;
   border-radius: 2px;
   outline: 0;
   color: #000;
   cursor: pointer;
   font-weight: normal;
   font-size: 13px;
   line-height: 1.3076923077; /*17px @14px*/
   transition: all 100ms;

}

@media all and (min-width: 1100px) {

   .banner-button {
       font-size: 14px;
   }

}

@media all and (min-width: 1200px) {

   .banner-button {
       font-size: 16px;
       line-height: 1.25; /*20px @16px*/
   }

}

.banner-button:hover {

   -moz-transform: scale(1.043478);
   -ms-transform: scale(1.043478);
   -webkit-transform: scale(1.043478);
   transform: scale(1.043478);

}

  1. yes-button {
   font-weight: bold;
   background-color: #36c;
   border: 1px solid #36c;
   color: white;

}

/*Minimized styles*/ /* Messages */ .frb-message__minimized {

   display: none;

} .frb-message__maximized {

   display: block;

} .frb-greeting {

   display: block;
   margin-bottom: 0.5em;

}

/* Minimized styles */ .frb--minimized .frb-message__minimized {

   display: block;
   text-align: left;

} .frb--minimized .frb-message__maximized, .frb--minimized .frb-step1, .frb--minimized .frb-step2, .frb--minimized .frb-rml {

   display: none;

}

/* --- Maybe later --- */

.frb-rml-disabled .frb-rml {

   display: none;

}

.frb-rml {

   position: relative;
   width: auto;
   padding: 0;
   margin: 4px 5px 0;
   width: calc(100% - 2px);

}

.frb-rml-form {

   display: none;
   position: absolute;
   width: 100%;
   padding: 16px;
   margin-top: 6px;
   text-align: center;
   background: white;
   border: 1px solid #888888;
   border-radius: 2px;
   box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.15);
   z-index: 10;

}

.frb-rml-form:after, .frb-rml-form:before {

   bottom: 100%;
   left: 50%;
   border: solid transparent;
   content: " ";
   height: 0;
   width: 0;
   position: absolute;
   pointer-events: none;

}

.frb-rml-form:after {

   border-bottom-color: #fff;
   border-width: 10px;
   margin-left: -10px;

}

.frb-rml-form:before {

   border-bottom-color: #888;
   border-width: 11px;
   margin-left: -11px;

}

.frb-rml-form input {

   width: 100%;
   padding: 6px 8px 7px;
   border: 1px solid #9aa0a7;
   border-radius: 2px;
   color: #000;
   font-size: 14px;

}

.frb-rml-form input.error, .frb-rml-displayed .frb-rml-form input.error {

   border-color: #d33;
   box-shadow: inset 0 0 0 1px #d33;

}

.frb-rml-form .frb-rml-error {

   color: #d33;
   padding-top: 6px;
   font-size: 14px;
   line-height: 1.2142857143; /*17px @14px*/
   text-align: left;

}




.frb-rml-ty {

   padding: 0 16px;
   text-align: center;
   cursor: default;

}

.frb--minimized.frb-rml-displayed .frb-rml-link {

   display: none;

}

.frb--minimized.frb-rml-displayed .frb-form:before {

   display: none;

}

.frb-rml-displayed .frb-rml-form {

   position: relative;
   z-index: 10;
   display: table !important;
   margin: -4px auto 0;
   padding: 0 12px;
   width: 100%;
   max-width: 340px;
   background: transparent;
   border: none;
   box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
   text-align: center;

}

.frb-rml-displayed .frb-rml-table {

   text-align: left;
   display: table;

}

.frb-rml-displayed .frb-rml-form:after, .frb-rml-displayed .frb-rml-form:before {

   display: none !important;

}

.frb-rml-displayed .frb-rml {

   display: block !important;
   margin-top: 0;

}

.frb-rml-displayed .frb-rml-form legend {

  font-size: 12px;
  line-height: 1; /*12px @12px*/
  padding-bottom: 4px;

}

@media all and (min-width: 1200px) {

   .frb-rml-displayed .frb-rml-form legend {
      font-size: 14px;
      line-height: 1.2142857143; /*17px @14px*/
   }

}

.frb-rml-displayed .frb-rml-form input {

   display: table-cell;
   vertical-align: middle;
   width: 200px;
   height: 32px;
   padding: 7px 8px;
   margin: 0;
   border: 1px solid #9aa0a7;
   border-radius: 2px;
   color: #000;
   direction: ltr;
   line-height: 1;

}

@media all and (min-width: 1200px) {

   .frb-rml-displayed .frb-rml-form input {
       font-size: 16px;
   }

}

.frb-rml-displayed .frb-rml-form .frb-btn-submit {

   display: table-cell;
   width: auto;
   height: 32px;
   margin-top: 0;
   margin-left: 2px;
   line-height: 1;
   padding: 9px 14px;
   font-size: 14px;
   border-radius: 2px;

}

@media all and (min-width: 1200px) {

   .frb-rml-displayed .frb-rml-form input {
       font-size: 16px;
   }

} .frb-rml-displayed .frb-rml-error {

   display: block;
   text-align: left;
   padding-top: 4px;
   font-size: 14px;
   line-height: 1.2142857143; /*17px @14px*/

}

/*Don’t show RML when fixed and expanded*/ .frb--fixed .frb-rml {

   display: none;

}

.frb-prevent-page-jump {

   display: none;

}

/* -- Submit/"Donate now" button -- */

.frb-submit {

   height: 52px;
   display: inline-block;
   cursor: default;
   margin: 4px 5px 0;
   padding: 3px 6px 5px;
   width: calc(100% - 9px);
   background-color: #f8f9fa;
   border: 1px solid #a2a9b1;
   border-radius: 2px;
   color: #36c;
   font-weight: bold;
   transition: background-color 0.5s ease;
   opacity: .5;

}

.frb-submit.active {

   background-color: #36c;
   border-color: #36c;
   color: #fff;
   cursor: pointer;
   opacity: 1;

}

.frb-submit.active:hover {

   background-color: #447ff5;
   border-color: #447ff5;

}

.frb-submit-amount {

   display: none;

} .frb-submit-label-monthly {

   display: none;

} .frb-submit-label-now {

   display: inline;

} .form-monthly .frb-submit-label-monthly {

   display: inline;

} .form-monthly .frb-submit-label-now {

   display: none;

} .frb-icon-lock {

   fill: #fff;
   width: 14px;
   height: 14px;

}

.frb-payment-options {

   display: table;
   table-layout: fixed;
   width: 100%;

}

.frb-payment-options .frb-button {

   width: 100%;

}

/* For 4 payment options, 2 rows of 2 */ .frb-payment-options .frb-button:first-child:nth-last-child(4), .frb-payment-options .frb-button:first-child:nth-last-child(4) ~ .frb-button {

   float: left;
   width: 50%;

}

.frb-methods .frb-button {

   display: table-cell;
   padding: 5px;
   float: none;
   vertical-align: top;

}

.frb-button-table {

   display: table;
   width: 100%;

}

.frb-label {

   display: table-cell; /* To vertical align content */
   vertical-align: middle;
   width: 100%;
   height: 52px;
   color: #36c;
   background-color: #f8f9fa;
   border-radius: 2px;
   border: 1px solid #a2a9b1;
   text-align: center;
   transition: background-color 0.5s ease;
   cursor: pointer;
   transition: all 0.5s ease;
   padding: 0 10px;

}

.frb-label:hover, .frb-rml-email:hover {

   background-color: #EAF3FF;

}

.form-monthly .no-monthly .frb-label:hover {

   background-color: #f8f9fa;

}

.frb-radio:checked + .frb-label {

   background-color: #2a4b8d;
   border-color: #2a4b8d;
   color: #FFFFFF;
   font-weight: bold;

}

.frb-radio:focus + .frb-label,

  1. frb-rml-email:focus {
   box-shadow: inset 0 0 0 1px #36c;
   border-color: #36c;

}

.frb-radio:focus:checked + .frb-label {

   box-shadow: inset 0 0 0 1px #2a4b8d, inset 0 0 0 2px #FFFFFF;

}

.frb-radio:checked + .frb-label .frb-logo-payments--paypal path, .frb-radio:checked + .frb-label .frb-logo-payments--paypal-usd path, .frb-radio:checked + .frb-label .frb-logo-payments--amazon path {

   fill: #FFFFFF;

}

/* Error messages */ .frb-form .frb-error {

   display: none;
   margin: 5px 0 5px 5px;
   font-size: 14px;
   color: #d33;

}

legend.error {

   color: #d33;
   font-weight: bold;

}

/* STEP 2 UPSELL*/

.frb-upsell, .frb-monthly-diff-amt .frb-amt-monthly {

   width: calc(100% + 8px) !important;
   transition: background-color 0.5s ease;
   padding: 10px 4px;
   text-align: center;

}

.frb-monthly-diff-amt .frb-amt-monthly {

   display: block;
   padding: 0 4px 10px 4px;

}

.frb-upsell-cta, .frb-upsell-ty {

   font-size: 17px;
   line-height: 1.3;
   font-weight: bold;
   text-align: center;

}

.frb-upsell-color, .frb-monthly-diff-amt .frb-amt-monthly label {

   display: block;
   font-size: 15px;
   line-height: 1.3;
   font-weight: normal;
   padding: 0 5%;
   margin: .5em 0;

}

.frb-monthly-diff-amt-link {

   font-size: 15px;
   line-height: 1.3;
   color: #36c;
   margin: 8px 2px;
   padding: 12px 10%;
   text-align: center;
   cursor: pointer;
   font-weight: bold;

}

.frb-monthly-diff-amt { display: none; }

  1. frb-amt-monthly-other-input {
   position: relative;
   text-align: center;
   font-size: 18px;

}

  1. frb-form .frb-step1,
  2. frb-form .frb-step2 {
   margin-top: 32px;

}

  1. frb-form .frb-step2 {
   position: absolute;
   width: 281px;
   top: 0;
   margin-left: 320px;
   background-color: #fff;

}

  1. frb-form .frb-step1 {
   position: relative;

} </style>

<script> var frb = frb || {};

frb.show = function() {

   $('#siteNotice').prepend($('#centralNotice'));
   $('.frb').css('display', 'block');
   $('.frb').css('height', $('.frb').height );

};

frb.hide = function() {

   /* Hide the banner, and remove the extra space which was added for it */
   /* Don't set a cookie: this is a large banner and only shown on first view anyway */
   $('.frb').hide();

};

frb.toggleMonthly = function( monthly ) {

   if( monthly.type === 'checkbox' ){
       monthly = monthly.checked;
   }
   if ( monthly ) {
       $('#frb-frequency-monthly').prop("checked", true);
       $('#frb-monthly-checkbox').prop("checked", true);
       $('#frb-form').addClass('form-monthly');
       $('.no-monthly input[type=radio]').attr('disabled', true);
       $('.no-monthly').prop('disabled', false);
       $('#frb-form').addClass('form-monthly');
       if( $( '.form-monthly .no-monthly input[type=radio]' ).is(':checked') ) {
           $('.form-monthly .no-monthly input[type=radio]').removeAttr('checked');
           frb.setMethod({});
       }
       $('.frb-cta-label-monthly').show();
   } else {
       $('#frb-frequency-onetime').prop("checked", true);
       $('#frb-monthly-checkbox').prop("checked", false);
       $('#frb-form').removeClass('form-monthly');
       $('.no-monthly input[type=radio]').attr('disabled', false);
       $('.frb-cta-label-monthly').hide();
   }

};

frb.rml = {

   post: function() {
       /* Create the iframe for the form and use it as the form's target */
       var frameName = 'remindFrame';
       var $form = $('#frb-rml-form');
       if ( $("iframe[name=" + frameName + "]").length === 0 ) {
           var $iframe = $('<iframe style="display: none;" name="' + frameName + '"></iframe>');
           $form.attr('target', $iframe.attr('name'));
           $form.after($iframe);
       }
       $form[0].submit();
   },
   getCurrentDate: function() {
       /* Get current date in correct format for Silverpop */
       var today = new Date();
       var dd = today.getDate();
       var mm = today.getMonth()+1; // January is 0!
       var yyyy = today.getFullYear();
       if( dd < 10 ) {
           dd = '0' + dd;
       }
       if( mm < 10 ) {
           mm = '0' + mm;
       }
       return mm+'/'+dd+'/'+yyyy;
   },
   init: function() {
       /* Prep the reminder form */
       var form = document.getElementById('frb-rml-form');
       form.rml_country.value    = mw.centralNotice.data.country;
       form.rml_language.value   = mw.centralNotice.data.uselang;
       form.rml_submitDate.value = frb.rml.getCurrentDate();
       form.rml_segment.value    = Math.floor((Math.random() * 100) + 1);
       $('.frb-rml-link').click(function() {
           $('.frb-rml-form').toggle();
           $('#frb-rml-email').focus();
       });
       $('#frb-rml-submit').click(function() {
           if ( mw.util.validateEmail( form.Email.value ) ) {
               frb.rml.post();
               $('.frb-rml-form, .frb-rml-link').attr('style','display:none !important');
               $('.frb-rml-ty').show();
               window.setTimeout( function() {
                   frb.hide();
               }, 2500);
               mw.centralNotice.internal.hide.setHideWithCloseButtonCookies(); // Hide future banners for 7 days
               return false;
           } else {
               $('#frb-rml-email').addClass('error').focus();
               $('.frb-rml-error').show();
               return false;
           }
       });
   }

};

/* jshint maxerr: 600 */ frb.amounts = frb.amounts || {};

// Hard minimum amounts that can be given // From https://github.com/wikimedia/wikimedia-fundraising-SmashPig/blob/master/PaymentData/ReferenceData/CurrencyRates.php // Updated 2023-12-12 frb.amounts.minimums = { 'USD' : 1, 'CAD' : 1.36, 'AUD' : 1.52, 'NZD' : 1.63, 'GBP' : 0.80, 'EUR' : 0.93, 'DKK' : 6.91, 'HUF' : 355, 'ILS' : 3.71, 'INR' : 10, // T309818 'JPY' : 146, 'MYR' : 4.68, 'NOK' : 11, 'PLN' : 4.02, 'CZK' : 23, 'RON' : 4.61, 'SEK' : 10, 'UAH' : 37, 'ZAR' : 19, // Latin America 'BRL' : 4.95, 'ARS' : 366, 'CLP' : 880, 'COP' : 3970, 'MXN' : 17, 'PEN' : 3.74, 'UYU' : 39, 'CHF' : 0.88 };

frb.amounts.options7 = { // Big English 'USD' : [2.75, 10, 15, 25, 50, 75, 100], 'CAD' : [2.75, 10, 15, 25, 50, 75, 100], 'AUD' : [2.75, 10, 15, 25, 50, 75, 100], 'NZD' : [2.75, 10, 15, 25, 50, 75, 100], 'GBP' : [2.75, 10, 15, 25, 50, 75, 100], 'EUR' : [2.75, 10, 15, 25, 50, 75, 100], // Others 'DKK' : [20, 75, 100, 200, 300, 500, 700], 'HUF' : [500, 1000, 2000, 4000, 5000, 7000, 10000], 'ILS' : [10, 35, 50, 100, 200, 300, 400], 'INR' : [25, 300, 500, 1000, 1500, 3000, 5000], 'JPY' : [300, 1000, 1500, 2000, 3000, 5000, 10000], 'MYR' : [10, 30, 50, 100, 200, 300, 500], 'NOK' : [30, 100, 150, 200, 500, 750, 1000], 'PLN' : [10, 20, 50, 100, 200, 300, 500], 'CZK' : [50, 100, 250, 500, 1000, 1500, 2500], 'RON' : [10, 50, 75, 100, 200, 300, 500], 'SEK' : [30, 100, 150, 200, 500, 750, 1000], 'UAH' : [50, 75, 150, 300, 500, 750, 1000], 'ZAR' : [30, 50, 100, 200, 300, 500, 1000], // Latin America 'BRL' : [10, 20, 30, 50, 100, 200, 300], 'ARS' : [200, 250, 500, 750, 1000, 1500, 2000], 'CLP' : [2000, 3000, 5000, 10000, 20000, 30000, 50000], 'COP' : [10000, 15000, 25000, 50000, 100000, 150000, 200000], 'MXN' : [40, 70, 150, 250, 500, 700, 1000], 'PEN' : [10, 15, 25, 50, 100, 150, 200], 'UYU' : [100, 200, 300, 500, 1000, 1500, 2000], 'CHF' : [3, 5, 10, 25, 50, 100, 200] };

// 5 amount options. Since 2020 6C, no longer used frb.amounts.options5 = { // Big English 'USD' : [2.75, 15, 20, 50, 100], 'CAD' : [2.75, 15, 20, 50, 100], 'AUD' : [2.75, 15, 20, 50, 100], 'NZD' : [2.75, 15, 20, 50, 100], 'GBP' : [2, 10, 20, 50, 100], 'EUR' : [2, 10, 20, 50, 100], // Others 'DKK' : [20, 100, 200, 500, 1000], 'HUF' : [500, 2500, 4000, 7000, 10000], 'ILS' : [10, 50, 200, 600, 1000], 'INR' : [150, 500, 1000, 3000, 5000], 'JPY' : [300, 1500, 2000, 5000, 10000], 'MYR' : [10, 50, 100, 300, 500], 'NOK' : [20, 100, 200, 500, 1000], 'PLN' : [10, 50, 100, 300, 500], 'RON' : [10, 50, 100, 200, 1000], 'SEK' : [30, 100, 200, 500, 1000], 'UAH' : [50, 150, 300, 750, 1000], 'ZAR' : [30, 100, 200, 500, 1000], // Latin America 'BRL' : [10, 30, 50, 100, 250], 'ARS' : [60, 200, 400, 1000, 2000], 'CLP' : [1500, 5000, 10000, 25000, 50000], 'COP' : [7000, 20000, 50000, 150000, 200000], 'MXN' : [35, 100, 200, 750, 1000], 'PEN' : [10, 50, 150, 300, 700], 'UYU' : [70, 200, 400, 1500, 2000], 'CHF' : [3, 10, 25, 50, 100] };

// "Average" donation frb.amounts.averages = { 'USD' : 13, 'CAD' : 12, 'AUD' : 11, 'NZD' : 12, 'GBP' : 6, 'EUR' : 8, // Others 'DKK' : 60, 'HUF' : 2500, 'ILS' : 50, 'INR' : 229, 'JPY' : 800, 'MYR' : 30, 'NOK' : 75, 'PLN' : 50, 'CZK' : 150, 'RON' : 50, 'SEK' : 85, 'UAH' : 150, 'ZAR' : 65, // Latin America 'BRL' : 25, 'ARS' : 780, 'CLP' : 10200, 'COP' : 35000, 'MXN' : 140, 'PEN' : 30, 'UYU' : 525, 'CHF' : 25 };

// 'If everyone gave X'. Mostly the same as first asks option. frb.amounts.ifEveryone = { // Big English 'USD' : 2.75, 'CAD' : 2.75, 'AUD' : 2.75, 'NZD' : 2.75, 'GBP' : 2.75, 'EUR' : 2.75, // Others 'DKK' : 20, 'HUF' : 500, 'ILS' : 10, 'INR' : 25, 'JPY' : 300, 'MYR' : 10, 'NOK' : 30, 'PLN' : 10, 'CZK' : 50, 'RON' : 10, 'SEK' : 30, 'UAH' : 50, 'ZAR' : 30, // Latin America 'BRL' : 10, 'ARS' : 175, 'CLP' : 1500, 'COP' : 7000, 'MXN' : 40, 'PEN' : 10, 'UYU' : 100, 'CHF' : 5 };

// Minimum fee/PTF amounts. Default is 0.35. // Updated 2018-07-05 based on Ppena's feedback // Updated 2019-05-21 to approx 0.35 USD equivalent frb.amounts.feeMinimums = { 'DKK' : 2, 'HUF' : 100, 'ILS' : 1.2, 'INR' : 4, 'JPY' : 35, 'MYR' : 1, 'NOK' : 3, 'PLN' : 1.35, 'CZK' : 7.5, 'RON' : 1.5, 'SEK' : 3, 'UAH' : 10, 'ZAR' : 5, // Latin America // Updated 2024-08-22 to approx 0.35 USD equivalent 'BRL' : 1.75, 'ARS' : 300, 'CLP' : 300, 'COP' : 1400, 'MXN' : 6, 'PEN' : 1.2, 'UYU' : 14 };

// If one-time amount <= left amount, suggest right amount for monthly // If changing these, please update spreadsheet // https://docs.google.com/spreadsheets/d/1z36zi8EegPLAvR5FYAgwz8ywKZ50QNB82SpwpTdk-xQ/edit#gid=1258723967 frb.amounts.monthlySuggest = { 'USD' : [ // also EUR, GBP, CAD, AUD, NZD [ 2.74, 0 ], [ 9, 1.75 ], [ 12, 2 ], [ 15, 2.5 ], [ 18, 3 ], [ 21, 3.5 ], [ 24, 4 ], [ 27, 4.5 ], [ 30, 5 ], [ 33, 5.5 ], [ 36, 6 ], [ 39, 6.5 ], [ 42, 7 ], [ 45, 7.5 ], [ 48, 8 ], [ 51, 8.5 ], [ 54, 9 ], [ 57, 9.5 ], [ 60, 10 ], [ 63, 10.5 ], [ 66, 11 ], [ 69, 11.5 ], [ 72, 12 ], [ 75, 12.5 ], [ 102, 17 ], [ 250, 25 ], [ 499, 50 ], [ Infinity, 0 ] ], 'JPY' : [ [ 299, 0 ], [ 900, 150 ], [ 1200, 200 ], [ 1500, 250 ], [ 1800, 300 ], [ 2100, 350 ], [ 2400, 400 ], [ 2700, 450 ], [ 3000, 500 ], [ 3300, 550 ], [ 3600, 600 ], [ 3900, 650 ], [ 4200, 700 ], [ 4500, 750 ], [ 4800, 800 ], [ 5100, 850 ], [ 5400, 900 ], [ 5700, 950 ], [ 6000, 1000 ], [ 6300, 1050 ], [ 6600, 1100 ], [ 6900, 1150 ], [ 7200, 1200 ], [ 7500, 1250 ], [ 10800, 1800 ], [ 18000, 3000 ], [ 50000, 6000 ], [ Infinity, 0 ] ], 'SEK' : [ // Also NOK [ 29, 0 ], [ 35, 20 ], [ 55, 25 ], [ 105, 30 ], [ 160, 40 ], [ 210, 50 ], [ 360, 60 ], [ 450, 75 ], [ 600, 100 ], [ 800, 125 ], [ 900, 150 ], [ 1200, 200 ], [ 1500, 250 ], [ 1800, 300 ], [ 2100, 350 ], [ Infinity, 0 ] ], 'HUF' : [ [ 499, 0 ], [ 3000, 500 ], [ 6000, 1000 ], [ 9000, 1500 ], [ 12000, 2000 ], [ 18000, 3000 ], [ 24000, 4000 ], [ 30000, 5000 ], [ 36000, 6000 ], [ 42000, 7000 ], [ 48000, 8000 ], [ 54000, 9000 ], [ 60000, 10000 ], [ Infinity, 0 ] ], 'ILS' : [ [ 9, 0 ], [ 10, 5 ], [ 60, 10 ], [ 90, 15 ], [ 120, 20 ], [ 180, 30 ], [ 240, 40 ], [ 300, 50 ], [ 360, 60 ], [ 420, 70 ], [ 480, 80 ], [ 540, 90 ], [ 600, 100 ], [ Infinity, 0 ] ], 'ZAR' : [ [ 29, 0 ], [ 30, 20 ], [ 50, 30 ], [ 100, 40 ], [ 300, 50 ], [ 450, 75 ], [ 600, 100 ], [ 900, 150 ], [ 1200, 200 ], [ 1500, 250 ], [ 1800, 300 ], [ 2400, 400 ], [ 3000, 500 ], [ 3600, 600 ], [ Infinity, 0 ] ], 'MYR' : [ // Also RON, PLN [ 9, 0 ], [ 30, 5 ], [ 50, 10 ], [ 120, 20 ], [ 180, 30 ], [ 240, 40 ], [ 300, 50 ], [ 360, 60 ], [ 420, 70 ], [ 480, 80 ], [ 540, 90 ], [ 600, 100 ], [ 900, 150 ], [ Infinity, 0 ] ], 'DKK' : [ [ 19, 0 ], [ 25, 10 ], [ 120, 20 ], [ 250, 40 ], [ 350, 50 ], [ 450, 75 ], [ 600, 100 ], [ 750, 125 ], [ 900, 150 ], [ 1200, 200 ], [ 1500, 250 ], [ 1800, 300 ], [ 2100, 350 ], [ Infinity, 0 ] ], 'CZK' : [ [ 49, 0 ], [ 180, 30 ], [ 300, 50 ], [ 600, 100 ], [ 900, 150 ], [ 1200, 200 ], [ 1500, 250 ], [ 1800, 300 ], [ 2100, 350 ], [ 2400, 400 ], [ 3000, 500 ], [ 3600, 600 ], [ 4200, 700 ], [ 4800, 800 ], [ Infinity, 0 ] ], 'CLP' : [ [ 1999, 0 ], [ 2300, 1000 ], [ 2700, 1100 ], [ 3300, 1200 ], [ 4200, 1300 ], [ 5500, 1400 ], [ 9000, 1500 ], [ 10500, 1700 ], [ 16000, 2600 ], [ 20800, 3400 ], [ 26000, 4200 ], [ 31200, 5000 ], [ 38400, 6400 ], [ 55000, 8500 ], [ Infinity, 0 ] ], 'UYU' : [ [ 99, 0 ], [ 120, 50 ], [ 170, 65 ], [ 220, 70 ], [ 320, 75 ], [ 480, 85 ], [ 520, 90 ], [ 750, 125 ], [ 1050, 170 ], [ 1350, 225 ], [ 1600, 250 ], [ 1800, 300 ], [ 2100, 320 ], [ Infinity, 0 ] ], 'PEN' : [ [ 9, 0 ], [ 12, 5 ], [ 17, 6 ], [ 26, 7 ], [ 48, 8 ], [ 55, 9 ], [ 78, 13 ], [ 105, 17 ], [ 130, 21 ], [ 160, 26 ], [ 180, 30 ], [ 210, 32 ], [ Infinity, 0 ] ], 'COP' : [ [ 9999, 0 ], [ 11300, 5000 ], [ 17000, 5200 ], [ 22000, 5500 ], [ 27000, 5800 ], [ 45000, 7500 ], [ 55000, 9000 ], [ 75000, 12500 ], [ 105000, 17000 ], [ 120000, 20000 ], [ 160000, 25000 ], [ 180000, 30000 ], [ 250000, 34000 ], [ Infinity, 0 ] ], 'BRL' : [ [ 9, 0 ], [ 12, 6 ], [ 22, 7 ], [ 35, 8 ], [ 45, 9 ], [ 55, 10 ], [ 80, 12 ], [ 105, 16 ], [ 160, 25 ], [ 210, 35 ], [ 270, 45 ], [ 320, 50 ], [ Infinity, 0 ] ], 'MXN' : [ [ 39, 0 ], [ 48, 25 ], [ 60, 28 ], [ 110, 30 ], [ 160, 35 ], [ 260, 45 ], [ 270, 50 ], [ 350, 60 ], [ 550, 85 ], [ 650, 90 ], [ 750, 120 ], [ 1500, 160 ], [ Infinity, 0 ] ], 'INR' : [ [ 29, 0 ], [ 75, 25 ], [ 79, 29 ], [ 104, 30 ], [ 208, 35 ], [ 312, 55 ], [ 416, 70 ], [ 520, 90 ], [ 624, 110 ], [ 728, 130 ], [ 832, 140 ], [ 936, 160 ], [ 1040, 175 ], [ 1144, 190 ], [ 1248, 210 ], [ 1352, 235 ], [ 1456, 245 ], [ 1560, 265 ], [ 2080, 350 ], [ 3120, 530 ], [ 4160, 700 ], [ 5200, 880 ], [ 7800, 1320 ], [ 10400, 1760 ], [ 15600, 2650 ], [ 20800, 3530 ], [ 26000, 4420 ], [ Infinity, 0 ] ] }; frb.amounts.monthlySuggest.EUR = frb.amounts.monthlySuggest.USD; frb.amounts.monthlySuggest.GBP = frb.amounts.monthlySuggest.USD; frb.amounts.monthlySuggest.CAD = frb.amounts.monthlySuggest.USD; frb.amounts.monthlySuggest.AUD = frb.amounts.monthlySuggest.USD; frb.amounts.monthlySuggest.NZD = frb.amounts.monthlySuggest.USD;

frb.amounts.monthlySuggest.RON = frb.amounts.monthlySuggest.MYR; frb.amounts.monthlySuggest.PLN = frb.amounts.monthlySuggest.MYR; frb.amounts.monthlySuggest.NOK = frb.amounts.monthlySuggest.SEK;

frb.amounts.test = function() {

/** * Check if amounts are less than minimum acceptable * * @param {string} desc - description for error message e.g. 'amount option' * @param {Object} dataObject - data to check e.g. frb.amounts.options7 * @param {Function} extractFunction - function to get test value e.g. d => d[0] for 1st amount */ var testMinimums = function( desc, dataObject, extractFunction = d => d ) { const errorMessage = 'Error %s %s %s is less than minimum %s'; for ( const currency in dataObject ) { let data = dataObject[currency].default || dataObject[currency], // need default for some EUR value = extractFunction(data), minimum = frb.amounts.minimums[currency]; console.assert( value >= minimum, errorMessage, currency, desc, value, minimum ); } };

testMinimums( 'if everyone', frb.amounts.ifEveryone, d => d ); testMinimums( 'average', frb.amounts.averages, d => d ); testMinimums( 'amount option', frb.amounts.options7, d => d[0] ); testMinimums( 'monthly suggestion', frb.amounts.monthlySuggest, d => d[1][1] );

};

frb.currencyFormats = { 'USD' : '$\t', 'CAD' : { 'fr' : '\t $', 'default' : '$\t' }, 'AUD' : '$\t', 'NZD' : '$\t', 'GBP' : '£\t', 'EUR' : { 'en' : '€\t', 'cy' : '€\t', 'ga' : '€\t', 'mt' : '€\t', 'nl' : '€ \t', 'lv' : '€ \t', 'tr' : '€ \t', 'default' : '\t €' }, // Others 'CZK' : '\t Kč', 'DKK' : '\t kr.', 'HUF' : '\t Ft', 'ILS' : { 'he' : '\t ₪', 'yi' : '\t ₪', 'ar' : '\t ₪', 'default' : '₪ \t' }, 'INR' : '₹ \t', 'JPY' : '¥\t', 'MYR' : 'RM\t', 'NOK' : '\t kr', 'PLN' : '\t zł', 'RON' : '\t lei', 'SEK' : '\t kr', 'UAH' : '₴\t', 'ZAR' : 'R \t', // Latin America 'BRL' : { 'en' : 'R$\t', 'default' : 'R$ \t' }, 'ARS' : '$\t', 'CLP' : '$\t', 'COP' : '$\t', 'MXN' : '$\t', 'PEN' : 'S/. \t', 'UYU' : '$U \t', 'CHF' : '\t CHF' };

// Check in user language first, then fall back to English frb.countryNames = { 'af' : { 'ZA' : 'Suid-Afrika' }, 'en' : { 'US' : 'the United States', 'CA' : 'Canada', 'GB' : 'the UK', 'IE' : 'Ireland', 'AU' : 'Australia', 'NZ' : 'New Zealand', 'AR' : 'Argentina', 'AT' : 'Austria', 'BE' : 'Belgium', 'BR' : 'Brazil', 'CH' : 'Switzerland', 'CL' : 'Chile', 'CO' : 'Colombia', 'CZ' : 'the Czech Republic', 'DK' : 'Denmark', 'ES' : 'Spain', 'FR' : 'France', 'GR' : 'Greece', 'HK' : 'Hong Kong', 'HU' : 'Hungary', 'IL' : 'Israel', 'IN' : 'India', 'IT' : 'Italy', 'JP' : 'Japan', 'LU' : 'Luxembourg', 'LV' : 'Latvia', 'MX' : 'Mexico', 'MY' : 'Malaysia', 'NL' : 'the Netherlands', 'NO' : 'Norway', 'PE' : 'Peru', 'PL' : 'Poland', 'PT' : 'Portugal', 'RO' : 'Romania', 'SE' : 'Sweden', 'SK' : 'Slovakia', 'UA' : 'Ukraine', 'UY' : 'Uruguay', 'ZA' : 'South Africa' }, 'ca' : { 'AT' : 'd’Àustria', 'BE' : 'de Bèlgica', 'DK' : 'de Dinamarca', 'ES' : 'a Espanya', 'HU' : 'd’Hongria', 'IL' : 'd’Israel', 'LV' : 'de Letònia', 'LU' : 'de Luxemburg', 'MY' : 'de Malàisia', 'NO' : 'de Noruega', 'PL' : 'de Polònia', 'PT' : 'de Portugal', 'RO' : 'de Romania', 'SK' : 'd’Eslovàquia', 'ZA' : 'de Sud-àfrica', 'UA' : 'd’Ucraïna' }, 'cs' : { 'CZ' : 'v České republice', 'AT' : 'v Rakousku', 'BE' : 'v Belgii', 'DK' : 'v Dánsku', 'GR' : 'v Řecku', 'IL' : 'v Izraeli', 'LU' : 'v Lucembursku', 'MY' : 'v Malajsii', 'NO' : 'v Norsku', 'PT' : 'v Portugalsku', 'SE' : 've Švédsku', 'ZA' : 'v Jihoafrické republice' }, 'es' : { 'AR' : 'en Argentina', 'AT' : 'en Austria', 'BE' : 'en Bélgica', 'BR' : 'en Brasil', 'CL' : 'en Chile', 'CO' : 'en Colombia', 'DK' : 'en Dinamarca', 'ES' : 'en España', 'HU' : 'en Hungría', 'IL' : 'en Israel', 'LU' : 'en Luxemburgo', 'LV' : 'en Letonia', 'MX' : 'en México', 'MY' : 'en Malasia ', 'NO' : 'en Noruega', 'PE' : 'en Perú', 'PL' : 'en Polonia', 'PT' : 'en Portugal', 'RO' : 'en Rumania', 'SK' : 'en Eslovaquia', 'UA' : 'en Ucrania', 'US' : 'en los Estados Unidos', 'UY' : 'en Uruguay', 'ZA' : 'en Sudafrica' }, 'da' : { 'AT' : 'i Østrig', 'BE' : 'i Belgien', 'CZ' : 'i Tjekkiet', 'DK' : 'i Danmark', 'ES' : 'i Spanien', 'GR' : 'i Grækenland', 'HU' : 'i Ungarn', 'IL' : 'i Israel', 'LV' : 'i Letland', 'LU' : 'i Luxembourg', 'MY' : 'i Malaysia', 'NO' : 'i Norge', 'PL' : 'i Polen', 'PT' : 'i Portugal', 'RO' : 'i Rumænien', 'SE' : 'i Sverige', 'SK' : 'i Slovakiet', 'ZA' : 'i Sydafrika', 'UA' : 'i Ukraine' }, 'nl' : { 'NL' : 'in Nederland', 'AT' : 'in Oostenrijk', 'BE' : 'in België', 'DK' : 'in Denemarken', 'CZ' : 'in Tsjechië', 'ES' : 'in Spanje', 'GR' : 'in Griekenland', 'HU' : 'in Hongarije', 'IL' : 'in Israël', 'LV' : 'in Letland', 'LU' : 'in Luxemburg', 'MY' : 'in Maleisië', 'NO' : 'in Noorwegen', 'PL' : 'in Polen', 'PT' : 'in Portugal', 'RO' : 'in Roemenië', 'SE' : 'in Zweden', 'SK' : 'in Slowakije', 'ZA' : 'in Zuid-Afrika', 'UA' : 'in Oekraïne' }, 'fr' : { 'AT' : 'en Autriche', 'BE' : 'en Belgique', 'CH' : 'en Suisse', 'CA' : 'au Canada', 'CZ' : 'en République tchèque', 'DK' : 'au Danemark', 'ES' : 'en Espagne', 'FR' : 'en France', 'GR' : 'en Grèce', 'HU' : 'en Hongrie', 'IL' : 'en Israël', 'LV' : 'en Lettonie', 'LU' : 'au Luxembourg', 'MY' : 'en Malaisie', 'NO' : 'en Norvège', 'PL' : 'en Pologne', 'PT' : 'au Portugal', 'RO' : 'en Roumanie', 'SE' : 'en Suède', 'SK' : 'en Slovaquie', 'ZA' : 'en Afrique du Sud', 'UA' : 'en Ukraine' }, 'de' : { 'AT' : 'in Österreich', 'BE' : 'in Belgien', 'CH' : 'in der Schweiz', 'CZ' : 'in Tschechien', 'DK' : 'in Dänemark', 'ES' : 'in Spanien', 'GR' : 'in Griechenland', 'HU' : 'in Ungarn', 'IL' : 'in Israel', 'LV' : 'in Lettland', 'LU' : 'in Luxemburg', 'MY' : 'in Malaysia', 'NO' : 'in Norwegen', 'PL' : 'in Polen', 'PT' : 'in Portugal', 'RO' : 'in Rumänien', 'SE' : 'in Schweden', 'SK' : 'in der Slowakei', 'ZA' : 'in Südafrika', 'UA' : 'in der Ukraine' }, 'el' : { 'AT' : 'στην Αυστρία', 'BE' : 'στο Βέλγιο', 'CZ' : 'στην Τσεχία', 'DK' : 'στη Δανία', 'ES' : 'στην Ισπανία', 'GR' : 'στην Ελλάδα', 'HU' : 'στην Ουγγαρία', 'IL' : 'στο Ισραήλ', 'LV' : 'στη Λετονία', 'LU' : 'στο Λουξεμβούργο', 'MY' : 'στη Μαλαισία', 'NO' : 'στη Νορβηγία', 'PL' : 'στην Πολωνία', 'PT' : 'στην Πορτογαλία', 'RO' : 'στη Ρουμανία', 'SE' : 'στη Σουηδία', 'SK' : 'στη Σλοβακία', 'ZA' : 'στη Νότια Αφρική', 'UA' : 'στην Ουκρανία' }, 'he' : { 'AT' : 'אוסטרליה', 'BE' : 'בלגיה', 'CZ' : "בצ'כיה", 'DK' : 'דנמרק', 'ES' : 'ספרד', 'GR' : 'ביוון', 'HU' : 'הונגריה', 'IL' : 'ישראל', 'LV' : 'לטביה', 'LU' : 'לוקסמבורג', 'MY' : 'מלזיה', 'NO' : 'נורווגיה', 'PL' : 'פולין', 'PT' : 'פורטוגל', 'RO' : 'רומניה', 'SE' : 'בשוודיה', 'SK' : 'סלובקיה', 'ZA' : 'דרום אפריקה', 'UA' : 'אוקראינה' }, 'hu' : { 'AT' : 'ausztriai', 'BE' : 'belgiumi', 'DK' : 'dániai', 'ES' : 'spanyolországi', 'HU' : 'magyarországi', 'IL' : 'izraeli', 'LV' : 'lettországi', 'LU' : 'luxemburgi', 'MY' : 'malajziai', 'NO' : 'norvégiai', 'PL' : 'lengyelországi', 'PT' : 'portugáliai', 'RO' : 'romániai', 'SK' : 'szlovákiai', 'ZA' : 'dél-afrikai', 'UA' : 'ukrajnai' }, 'it' : { 'IT' : 'Italia', 'CH' : 'Svizzera' }, 'lv' : { 'AT' : 'valstī Austrijā', 'BE' : 'valstī Beļģijā', 'DK' : 'valstī Dānijā', 'ES' : 'valstī Spānijā', 'HU' : 'valstī Ungārijā', 'IL' : 'Izraēlas valstī', 'LV' : 'valstī Latvijā', 'LU' : 'valstī Luksemburgā', 'MY' : 'valstī Malaizijā', 'NO' : 'valstī Norvēģijā', 'PL' : 'valstī Polijā', 'PT' : 'valstī Portugālē', 'RO' : 'valstī Rumānijā', 'SK' : 'valstī Slovākijā', 'ZA' : 'Dienvidāfrikas valstī', 'UA' : 'valstī Ukrainā' }, 'nb' : { 'AT' : 'i Østerrike', 'BE' : 'i Belgia', 'CZ' : 'i Tsjekkia', 'DK' : 'i Danmark', 'ES' : 'i Spania', 'GR' : 'i Hellas', 'HU' : 'i Ungarn', 'IL' : 'i Israel', 'LV' : 'i Latvia', 'LU' : 'i Luxembourg', 'MY' : 'i Malaysia', 'NO' : 'i Norge', 'PL' : 'i Polen', 'PT' : 'i Portugal', 'RO' : 'i Romania', 'SE' : 'i Sverige', 'SK' : 'i Slovakia', 'ZA' : 'i Sør-Afrika', 'UA' : 'i Ukraina' }, 'pl' : { 'AT' : 'w Austrii', 'BE' : 'w Belgii', 'DK' : 'w Danii', 'ES' : 'w Hiszpanii', 'HU' : 'na Węgrzech', 'IL' : 'w Izraelu', 'LV' : 'na Łotwie', 'LU' : 'w Luksemburgu', 'MY' : 'w Malezji', 'NO' : 'w Norwegii', 'PL' : 'w Polsce', 'PT' : 'w Portugalii', 'RO' : 'w Rumunii', 'SK' : 'na Słowacji', 'ZA' : 'w Republice Południowej Afryki', 'UA' : 'na Ukrainie' }, 'pt' : { 'AT' : 'na Áustria', 'BE' : 'na Bélgica', 'BR' : 'no Brasil', 'CZ' : 'na República Checa', 'DK' : 'na Dinamarca', 'ES' : 'na Espanha', 'GR' : 'na Grécia', 'HU' : 'na Hungria', 'IL' : 'em Israel', 'LV' : 'na Letónia', 'LU' : 'no Luxemburgo', 'MY' : 'na Malásia', 'NO' : 'na Noruega', 'PL' : 'na Polónia', 'PT' : 'em Portugal', 'RO' : 'na Roménia', 'SE' : 'na Suécia', 'SK' : 'na Eslováquia', 'ZA' : 'na África do Sul', 'UA' : 'na Ucrânia' }, 'ro' : { 'AT' : 'din Austria', 'BE' : 'din Belgia', 'DK' : 'din Danemarca', 'ES' : 'în Spania', 'HU' : 'din Ungaria', 'IL' : 'din Israel', 'LV' : 'din Latvia', 'LU' : 'din Luxemburg', 'MY' : 'din Malaezia', 'NO' : 'din Norvegia', 'PL' : 'din Polonia', 'PT' : 'din Portugalia', 'RO' : 'din România', 'SK' : 'din Slovacia', 'ZA' : 'din Africa de Sud', 'UA' : 'din Ucraina' }, 'ru' : { 'AT' : 'в Австрии', 'BE' : 'в Бельгии', 'DK' : 'в Дании', 'ES' : 'в Испании', 'HU' : 'в Венгрии', 'IL' : 'в Израиле', 'LV' : 'в Латвии', 'LU' : 'в Люксембурге', 'MY' : 'в Малайзии', 'NO' : 'в Норвегии', 'PL' : 'в Польше', 'PT' : 'в Португалии', 'RO' : 'в Румынии', 'SK' : 'в Словакии', 'ZA' : 'в Южной Африке', 'UA' : 'в Украине' }, 'sk' : { 'AT' : 'v Rakúsku', 'BE' : 'v Belgicku', 'DK' : 'v Dánsku', 'ES' : 'v Španielsku', 'HU' : 'v Maďarsku', 'IL' : 'v Izraeli', 'LV' : 'v Lotyšsku', 'LU' : 'v Luxembursku', 'MY' : 'v Malajzii', 'NO' : 'v Nórsku', 'PL' : 'v Poľsku', 'PT' : 'v Portugalsku', 'RO' : 'v Rumunsku', 'SK' : 'na Slovensku', 'ZA' : 'v Juhoafrickej republike', 'UA' : 'na Ukrajine' }, 'sv' : { 'SE' : 'i Sverige', 'AT' : 'i Österrike', 'BE' : 'i Belgien', 'CZ' : 'i Tjeckien', 'DK' : 'i Danmark', 'ES' : 'i Spanien', 'GR' : 'i Grekland', 'HU' : 'i Ungern', 'IL' : 'i Israel', 'LV' : 'i Lettland', 'LU' : 'i Luxemburg', 'MY' : 'i Malaysia', 'NO' : 'i Norge', 'PL' : 'i Polen', 'PT' : 'i Portugal', 'RO' : 'i Rumänien', 'SK' : 'i Slovakien', 'ZA' : 'i Sydafrika', 'UA' : 'i Ukraina' }, 'uk' : { 'AT' : 'у Австрії', 'BE' : 'у Бельгії', 'DK' : 'у Данії', 'ES' : 'в Іспанії', 'HU' : 'в Угорщині', 'IL' : 'в Ізраїлі', 'LV' : 'у Латвії', 'LU' : 'у Люксембургу', 'MY' : 'у Малайзії', 'NO' : 'у Норвегії', 'PL' : 'у Польщі', 'PT' : 'у Португалії', 'RO' : 'у Румунії', 'SK' : 'у Словаччині', 'ZA' : 'у ПАР', 'UA' : 'в Україні' } };

/* Most of the translations are actually using "in COUNTRY" or similar to account for grammar differences. So this makes English do the same, and allows us to use a clearer %in-country% variable, while avoiding breaking old content using %country%.

  • /

frb.inCountryNames = JSON.parse( JSON.stringify( frb.countryNames ) ); // deep copy frb.inCountryNames.en = { 'US' : 'in the United States', 'CA' : 'in Canada', 'GB' : 'in the UK', 'IE' : 'in Ireland', 'AU' : 'in Australia', 'NZ' : 'in New Zealand', 'AR' : 'in Argentina', 'AT' : 'in Austria', 'BE' : 'in Belgium', 'BR' : 'in Brazil', 'CH' : 'in Switzerland', 'CL' : 'in Chile', 'CO' : 'in Colombia', 'CZ' : 'in the Czech Republic', 'DK' : 'in Denmark', 'ES' : 'in Spain', 'FR' : 'in France', 'GR' : 'in Greece', 'HK' : 'in Hong Kong', 'HU' : 'in Hungary', 'IL' : 'in Israel', 'IN' : 'in India', 'IT' : 'in Italy', 'JP' : 'in Japan', 'LU' : 'in Luxembourg', 'LV' : 'in Latvia', 'MX' : 'in Mexico', 'MY' : 'in Malaysia', 'NL' : 'in the Netherlands', 'NO' : 'in Norway', 'PE' : 'in Peru', 'PL' : 'in Poland', 'PT' : 'in Portugal', 'RO' : 'in Romania', 'SE' : 'in Sweden', 'SK' : 'in Slovakia', 'UA' : 'in Ukraine', 'UY' : 'in Uruguay', 'ZA' : 'in South Africa' };

frb.dayNames = { 'en' : [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ], 'ca' : [ 'diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte' ], 'ja' : [ '日', '月', '火', '水', '木', '金', '土' ], 'es' : [ 'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado' ], 'sv' : [ 'söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag' ], 'da' : [ 'søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag' ], 'nb' : [ 'søndagen', 'mandagen', 'tirsdagen', 'onsdagen', 'torsdagen', 'fredagen', 'lørdagen' ], 'it' : [ 'domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato' ], 'nl' : [ 'zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag' ], 'fr' : [ 'dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi' ], 'de' : [ 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag' ], 'he' : [ 'ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת' ], 'lv' : [ 'svētdienā', 'pirmdienā', 'otrdienā', 'trešdienā', 'ceturtdienā', 'piektdienā', 'sestdienā' ], 'pl' : [ 'niedzielę', 'poniedziałek', 'wtorek', 'środę', 'czwartek', 'piątek', 'sobotę' ], 'pt' : [ 'neste domingo', 'nesta segunda-feira', 'nesta terça-feira', 'nesta quarta-feira', 'nesta quinta-feira', 'nesta sexta-feira', 'neste sábado' ], 'ru' : [ 'воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу' ], 'uk' : [ 'неділі', 'понеділка', 'вівторка', 'середи', 'четверга', 'п’ятниц', 'суботи' ], 'hu' : [ 'vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat' ], 'ro' : [ 'duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă' ], 'af' : [ 'Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag' ], 'aa' : [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ] };

// "This fooday" translations. Needed for some languages where gender varies and "this" must agree frb.dayNamesThis = { 'en' : [ 'this Sunday', 'this Monday', 'this Tuesday', 'this Wednesday', 'this Thursday', 'this Friday', 'this Saturday' ], 'el' : [ 'Αυτήν την Κυριακή', 'Αυτή τη Δευτέρα', 'Αυτήν την Τρίτη', 'Αυτήν την Τετάρτη', 'Αυτήν την Πέμπτη', 'Αυτήν την Παρασκευή', 'Αυτό το Σάββατο' ], 'jp' : [ 'この日曜日', 'この月曜日', 'この火曜日', 'この水曜日', 'この木曜日', 'この金曜日', 'この土曜日' ], 'it' : [ 'questa domenica', 'questo lunedì', 'questo martedì', 'questo mercoledì', 'questo giovedì', 'questo venerdì', 'questo sabato'], 'pl' : [ 'w tę niedzielę', 'w ten poniedziałek', 'w ten wtorek', 'w tę środę', 'w ten czwartek', 'w ten piątek', 'w tę sobotę' ], 'ru' : [ 'в это воскресенье', 'в этот понедельник', 'в этот вторник', 'в эту среду', 'в этот четверг', 'в эту пятницу', 'в эту субботу' ], 'uk' : [ 'цієї неділі', 'цього понеділка', 'цього вівторка', 'цієї середи', 'цього четверга', 'цієї п’ятниці', 'цієї суботи' ], 'pt' : [ 'este domingo', 'esta segunda-feira', 'esta terça-feira', 'esta quarta-feira', 'esta quinta-feira', 'esta sexta-feira', 'este sábado'], 'sk' : [ 'túto nedeľu', 'tento pondelok', 'tento utorok', 'túto stredu', 'tento štvrtok', 'tento piatok', 'túto sobotu'], 'cs' : [ 'tuto neděli', 'toto pondělí', 'toto úterý', 'tuto středu', 'tento čtvrtek', 'tento pátek', 'tuto sobotu'] };

frb.iPadTranslations = { 'en' : 'iPad' }; /* jshint maxerr: 600 */ /* MediaWiki:FundraisingBanners/CoreJS-2018.js

* Core code for banner forms, with new inline error messages
*/

var frb = frb || {};

/**

* Test for general ES6 and <dialog> support
*
* Checks for arrow functions, default parameters, NodeList.prototype.forEach(), <dialog> support
* Should be roughly Chrome 51+, Firefox 98+, Edge 79+, Safari 15.4+
* Based on https://gist.github.com/bendc/d7f3dbc83d0f65ca0433caf90378cd95
* @return {boolean}
*/

frb.supportedBrowser = function() { try { new Function('(a = 0) => a'); document.querySelectorAll('.frb').forEach(a => a); if ( typeof HTMLDialogElement === 'function' ) { return true; } else { return false; } } catch (err) { return false; } }();

if ( !mw.centralNotice.adminUi ) { // T262693 frb.loadedTime = Date.now(); frb.didSelectAmount = false; frb.optinRequiredCountries = [ 'AR', 'AT', 'BE', 'BR', 'CL', 'CO', 'CZ', 'DK', 'ES', 'FR', 'GB', 'GR', 'HU', 'IE', 'IT', 'IL', 'LU', 'LV', 'MX', 'NL', 'NO', 'PE', 'PL', 'PT', 'RO', 'SE', 'SK', 'UA', 'UY' ]; frb.optinRequired = frb.optinRequiredCountries.indexOf(mw.centralNotice.data.country) !== -1; frb.maxUSD = 25000; frb.reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; }

// Keyboard shortcut to go from banner preview to editor - Ctrl+Shift+E if ( mw.config.get('wgUserName') ) { if ( mw.config.get('wgUserName').match(/\(WMF\)/) ) { window.addEventListener('keydown', function(e) { if ( e.ctrlKey && e.shiftKey && e.keyCode === 69 ) { window.open( 'https://meta.wikimedia.org/wiki/Special:CentralNoticeBanners/Edit/' + mw.centralNotice.data.banner ); } }); } }

/**

* Main function to submit to paymentswiki
*
* @param  {Object} options
* - method (required)
* - submethod (optional)
* - gateway (optional)
* - skipValidation (optional boolean, for pp-usd. Not yet implemented.)
* @param  {Boolean} isEndowment - deprecated, set frb.isEndowment instead
*/

frb.submitForm = function( options, isEndowment ) {

var url = new URL('https://payments.wikimedia.org/index.php/Special:GatewayChooser'); var params = {};

if ( !frb.validateForm( options ) ) { frb.extraData.validateError = 1; // Flag they had an error, even if fixed later return false; // Error, bail out of submitting }

if ( frb.isDarkMode() ) { frb.extraData.darkMode = 1; }

// Skip form chooser for Venmo if ( options.method === 'venmo' && options.gateway !== 'gravy' ) { url = new URL('https://payments.wikimedia.org/index.php/Special:BraintreeGateway'); }

// Form selection data params.payment_method = options.method; if ( options.submethod ) { params.payment_submethod = options.submethod; } if ( options.gateway ) { params.gateway = options.gateway; } if ( options.variant ) { params.variant = options.variant; } params.recurring = frb.getRecurring();

if ( params.recurring && params.variant && params.variant.match( /monthlyConvert/ ) ) { // Post-payments monthly convert makes no sense if it's already recurring // Avoid things like T312905 delete params.variant; }

params.currency = frb.getCurrency(mw.centralNotice.data.country) || 'USD';

params.uselang = mw.centralNotice.data.uselang || 'en'; params.country = mw.centralNotice.data.country || 'XX';

if ( params.uselang === 'pt' && params.country === 'BR' ) { params.uselang = 'pt-br'; } if ( params.uselang === 'es' && ( params.country === 'AR' || params.country === 'CL' || params.country === 'CO' || params.country === 'MX' || params.country === 'PE' || params.country === 'UY' || params.country === 'US' ) ) { params.uselang = 'es-419'; }

// dLocal override for South Africa if ( params.payment_method === 'cc' && params.country === 'ZA' ) { params.gateway = 'astropay'; }

// Amount var amount = frb.getAmount(); if ( $('#frb-ptf-checkbox').prop('checked') ) { amount = amount + frb.calculateFee(amount); frb.extraData.ptf = 1; } params.amount = amount;

// Email optin if ( frb.optinRequired && $('input[name="opt_in"]').length > 0 ) { var opt_inValue = $('input[name="opt_in"]:checked').val(); params.opt_in = opt_inValue; // frb.validateForm() already checked it's 1 or 0 }

// Tracking info if ( isEndowment || frb.isEndowment ) { params.wmf_medium = 'endowment'; params.appeal = 'EndowmentQuote'; } else { params.wmf_medium = 'sitenotice'; } params.wmf_campaign = mw.centralNotice.data.campaign || 'test'; params.wmf_source = frb.buildTrackingSource(params);

frb.extraData.time = Math.round( (Date.now() - frb.loadedTime)/1000 );

if ( !$.isEmptyObject( frb.extraData ) ) { params.wmf_key = frb.buildTrackingKey( frb.extraData ); }

// Link to Banner History if enabled var mixins = mw.centralNotice.getDataProperty( 'mixins' ); if ( mixins && mixins.bannerHistoryLogger ) { params.bannerhistlog = mw.centralNotice.bannerHistoryLogger.id; }

for ( var key of Object.keys( params ) ) { url.searchParams.set( key, params[key] ); }

// Set a cookie with current location so we can return here from TY page mw.loader.using( [ 'mediawiki.cookie', 'mediawiki.util' ] ).then( function () { // Exclude URL parameters like banner, but cope with paths like /w/index.php?title=Foo var returnToUrl = window.location.origin + mw.util.getUrl(); mw.cookie.set( 'fundraising_returnTo', returnToUrl, { expires: 300, prefix: , domain: '.wikipedia.org', secure: true } ); });

if ( mixins && mixins.bannerHistoryLogger ) { mw.centralNotice.bannerHistoryLogger.ensureLogSent().always(function() { frb.goToPayments( url ); }); } else { frb.goToPayments( url ); }

};

frb.goToPayments = function( url ) { if ( window.top !== window.self ) { // banner is in a frame, open payments in a new tab window.open( url.toString() ); } else { window.location.href = url.toString(); } };

/**

* Check the form for errors.
*
* Called on submission, can also be called on input
*
* @param {object} options
* @return {boolean} Whether form is error-free
*/

frb.validateForm = function( options ) { var error = false;

/* Reset all errors */ $('.frb-haserror').removeClass('frb-haserror'); $('.frb-error').hide();

if ( !options.method ) { error = true; $('.frb-methods').addClass('frb-haserror'); $('.frb-error-method').show(); }

if ( !frb.validateAmount() ) { error = true; }

/* Email optin */ if ( frb.optinRequired && $('.frb-optin').is(':visible') ) { var opt_inValue = $('input[name="opt_in"]:checked').val(); if ( opt_inValue !== '1' && opt_inValue !== '0' ) { $('.frb-optin').addClass('frb-haserror'); $('.frb-error-optin').show(); error = true; } }

return !error; };

/**

* Check if selected amount is valid i.e. a positive number, between minimum and maximum.
* If not, show an error and return false.
*/

frb.validateAmount = function() {

var amount = frb.getAmount(), currency = frb.getCurrency( mw.centralNotice.data.country ), minAmount = frb.amounts.minimums[ currency ], maxAmount = Math.round( frb.maxUSD * minAmount ); // Math.round to account for floating point math errors: https://phabricator.wikimedia.org/T246262

if ( amount === null || isNaN(amount) || amount <= 0 || amount < minAmount ) { $('fieldset.frb-amounts').addClass('frb-haserror'); $('.frb-error-bigamount').hide(); $('.frb-error-smallamount').show(); return false; } else if ( amount > Math.round( maxAmount ) ) { $('fieldset.frb-amounts').addClass('frb-haserror'); $('.frb-error-bigamount').show(); return false; } else { $('fieldset.frb-amounts').removeClass('frb-haserror'); $('.frb-error-smallamount, .frb-error-bigamount').hide(); return true; } };

/**

* Build the wmf_source for analytics.
*
* Own function so it can be overriden for weird tests
*
* @param  {Object} params
* @return {string} wmf_source
*/

frb.buildTrackingSource = function(params) {

var wmf_source; var fullDottedPaymentMethod = params.payment_method; if ( params.recurring ) { fullDottedPaymentMethod = 'r' + fullDottedPaymentMethod; } if ( params.payment_submethod ) { fullDottedPaymentMethod = fullDottedPaymentMethod + '.' + params.payment_submethod; }

wmf_source = mw.centralNotice.data.banner;

// Keeping opt-in in wmf_source for safety for now // Eventually remove it, or move to wmf_key? if ( params.opt_in ) { wmf_source += '_optIn' + params.opt_in; }

wmf_source += '.no-LP.' + fullDottedPaymentMethod;

return wmf_source; };

/**

* Build a string for wmf_key from extra tracking data
*
* @param  {Object} data
* @return {string} wmf_key
*/

frb.buildTrackingKey = function(data) { var dataArray = []; for (var key in data) { if (data.hasOwnProperty(key)) { dataArray.push( key + '_' + data[key] ); } } return dataArray.join('~'); };

/**

* Determine if we should show recurring choice on step 2
*
* NOTE 2023-12-07: we don't currently use this for step 2, since there are no
*	banners where users select method before frequency. However it is used by
*	frb.shouldShowMonthlyConvert()
*
* @param  {Object} options     Including method and optional gateway
* @param  {String} country
* @return {boolean}
*/

frb.shouldShowRecurring = function( options, country ) {

if ( frb.isEndowment ) { return false; } if ( frb.noRecurringCountries.indexOf( country ) !== -1 ) { // Defined in LocalizeJS-2017.js return false; } if ( options.method === undefined ) { return true; // Show if a method hasn't been selected yet } if ( [ 'cc', 'venmo', 'apple', 'google' ].indexOf( options.method ) !== -1 ) { return true; } if ( options.method === 'paypal' ) { if ( [ 'AR', 'BR', 'CL', 'CO', 'MX', 'PE', 'UY' ].includes( country ) ) { return false; } else { return true; } } // Adyen iDEAL if ( options.submethod === 'rtbt_ideal' ) { return true; } // SEPA if ( options.submethod === 'sepadirectdebit' ) { return true; } if ( options.submethod === 'upi' || options.submethod === 'paytmwallet' ) { return true; } return false; };

/* Is recurring method selected? This function can be overriden for different forms */ frb.getRecurring = function() { // Can't use simple form.frequency.value, doesn't work in IE var selected = $('#frb-form input[name="frequency"]:checked').val(); return selected === 'monthly'; };

/* Return amount selected */ frb.getAmount = function() { var form = document.getElementById('frb-form'); var amount = null; frb.extraData.otherAmt = 0;

// If there are some amount radio buttons, then look for the checked one if (form.amount) { for (var i = 0; i < form.amount.length; i++) { if (form.amount[i].checked) { amount = form.amount[i].value; } } }

// Check the "other" amount box if (form.otherAmount.value !== ) { var otherAmount = form.otherAmount.value; otherAmount = otherAmount.replace(/[,.](\d)$/, ':$10'); otherAmount = otherAmount.replace(/[,.](\d)(\d)$/, ':$1$2'); otherAmount = otherAmount.replace(/[$£€¥,.]/g, ); otherAmount = otherAmount.replace(/:/, '.'); amount = otherAmount; frb.extraData.otherAmt = 1; }

amount = parseFloat(amount);

if ( isNaN(amount) ) { return 0; } else { return amount; }

};

/* Localize the amount errors. Call when initialising banner. */ frb.localizeErrors = function() { var currency = frb.getCurrency( mw.centralNotice.data.country ), language = mw.centralNotice.data.uselang, minAmount = frb.amounts.minimums[ currency ], maxAmount = Math.round( frb.maxUSD * minAmount ); // Math.round to account for floating point math errors: https://phabricator.wikimedia.org/T246262

$('.frb-error-smallamount').text( function( index, oldText ) { return oldText.replace( '$1', frb.formatCurrency(currency, minAmount, language) ); });

$('.frb-error-bigamount').text( function( index, oldText ) { // We cannot accept donations greater than $1 $2 through our website. Please contact our major gifts staff at $3. return oldText.replace( '$1', maxAmount ) .replace( '$2', currency ) .replace( '$3', 'benefactors@wikimedia.org' ); }); };

/**

* Shared code for amount input handling
*/

frb.initAmountOptions = function() {

// Reset "Other" input if user clicks a preset amount $('#frb-form [id^=frb-amt-ps]').click(function() { $('#frb-amt-other-input').val(); });

// Track if they selected and then later changed amount var checkAmountChange = function(e) { if ( frb.didSelectAmount ) { frb.extraData.changedAmt = 1; } // check if amount radio button is selected OR there is a value in the other amount if ( $('.frb-amounts input[type="radio"]:checked').val() !== 'Other' || $('#frb-amt-other-input').val().length > 0 ) { frb.didSelectAmount = true; } return; };

$('.frb-amounts input[type="radio"]').on('change', checkAmountChange); $('#frb-amt-other-input').on('focusout', checkAmountChange);

// Block typing non-numerics in input field, otherwise Safari allows them and then chokes // https://phabricator.wikimedia.org/T118741, https://phabricator.wikimedia.org/T173431 var blockNonNumeric = function(e) { // Allow special keys in Firefox if ((e.code == 'ArrowLeft') || (e.code == 'ArrowRight') || (e.code == 'ArrowUp') || (e.code == 'ArrowDown') || (e.code == 'Delete') || (e.code == 'Backspace')) { return; } var chr = String.fromCharCode(e.which); if ("0123456789., ".indexOf(chr) === -1) { return false; } }; $('#frb-amt-other-input').on('keypress', blockNonNumeric); $('#frb-amt-monthly-other-input').on('keypress', blockNonNumeric);

};

/**

* Calculate approximate transaction fee on given amount
*
* @param  {number} amount
* @return {number}        Rounded to 2 decimal places
*/

frb.calculateFee = function(amount) { var currency = frb.getCurrency(mw.centralNotice.data.country), feeMultiplier = 0.04, feeMinimum = frb.amounts.feeMinimums[currency] || 0.35, feeAmount = amount * feeMultiplier;

if ( feeAmount < feeMinimum ) { feeAmount = feeMinimum; } return parseFloat(feeAmount.toFixed(2)); };

frb.updateFeeDisplay = function() { var currency = frb.getCurrency(mw.centralNotice.data.country), language = mw.centralNotice.data.uselang, amount, feeAmount, totalAmount;

amount = frb.getAmount(); feeAmount = frb.calculateFee(amount); if ( $('#frb-ptf-checkbox').prop('checked') ) { totalAmount = amount + feeAmount; } else { totalAmount = amount; }

var feeAmountFormatted = frb.formatCurrency(currency, feeAmount, language); $('.frb-ptf-fee').text(feeAmountFormatted);

var totalAmountFormatted = frb.formatCurrency(currency, totalAmount, language); $('.frb-ptf-total').text(totalAmountFormatted);

$('.frb-ptf').slideDown( frb.reduceMotion ? 0 : 400 ); };

/**

* Custom hide cookie function
*
* Purposely sets only for this domain.
* CentralNotice builtin method seems buggy - see T270401
*
* @param {string} reason Reason to store in the hide cookie
* @param {number} duration Cookie duration, in seconds
*/

frb.altSetHideCookie = function ( reason, duration ) {

mw.loader.using( 'mediawiki.cookie' ).then( function () {

var cookieName = 'centralnotice_hide_fundraising', date = new Date(), hideData = { v: 1, created: Math.floor( date.getTime() / 1000 ), reason: reason };

// Re-use the same date object to set the cookie's expiry time date.setSeconds( date.getSeconds() + duration );

mw.cookie.set( cookieName, JSON.stringify( hideData ), { expires: date, path: '/', domain: 'wikipedia.org', prefix: } );

});

};

frb.showDonateLinkTooltip = function ( content ) { try { mw.loader.using( [ 'oojs-ui-core' ] ).done( function () {

let $donateLink = $( '#pt-sitesupport-2 a, #pt-sitesupport a, #n-sitesupport a, #p-donation a' ); $donateLink.attr( 'href', ( i, oldUrl ) => { let url = new URL( oldUrl, 'https://donate.wikimedia.org' ); // base needed because some links are protocol relative url.searchParams.delete( 'utm_source' ); // Until we have updated sidebar links url.searchParams.set( 'wmf_source', 'tooltipOnBannerClose' ); return url.toString(); });

let popupOptions = {

$content: $( '

' + content + '

' ),

padded: true, autoclose: true, align: 'forwards', autoFlip: false };

if ( document.querySelector( '#p-donation a' ) ) { // Minerva popupOptions.$floatableContainer = $( '.navigation-drawer' ); popupOptions.position = 'below'; } else if ( $( '#pt-sitesupport-2 a:visible' ).length > 0 ) { // Vector 2022 user tools popupOptions.$floatableContainer = $( '#pt-sitesupport-2 a' ); popupOptions.position = 'below'; } else if ( document.querySelector( '#pt-sitesupport a' ) ) { // Vector 2022 user tools collapsed in menu popupOptions.$floatableContainer = $( '#vector-user-links-dropdown' ); popupOptions.position = 'below'; } else if ( document.querySelector( '#vector-main-menu-dropdown #n-sitesupport a') ) { // Vector 2022 main menu (only when logged in, so mostly here for testing) popupOptions.$floatableContainer = $( '#vector-main-menu-dropdown' ); popupOptions.position = 'below'; } else if ( document.querySelector( '#n-sitesupport a' ) ) { // Legacy Vector (sidebar) popupOptions.$floatableContainer = $( '#n-sitesupport a' ); popupOptions.position = 'after'; }

let popup = new OO.ui.PopupWidget( popupOptions );

popup.$element.css('z-index', 5); // Fix so it shows above header $( document.body ).append( popup.$element ); popup.toggle( true );

setTimeout( () => { popup.$element.fadeOut( frb.fadeDuration ); }, 5000 ); } ); } catch (e) { console.log('Problem showing banner close tooltip'); } };

frb.showSidebarTooltip = frb.showDonateLinkTooltip; // Alias for old name

frb.isDarkMode = function() { let rootClasses = document.documentElement.classList, osDark = window.matchMedia('(prefers-color-scheme: dark)').matches; return rootClasses.contains( 'skin-theme-clientpref-night' ) || ( rootClasses.contains( 'skin-theme-clientpref-os' ) && osDark ); };

/**

* Determine if banner should be shown, and set correct data for impression logging
*
* @return {boolean} Show banner?
*/

frb.shouldShowBanner = function() {

mw.centralNotice.bannerData.hideResult = false;

/* Hide in unsupported browsers */ if ( !frb.supportedBrowser ) { mw.centralNotice.bannerData.hideResult = true; mw.centralNotice.bannerData.hideReason = 'browser'; }

/* Hide outside main namespace (except Main Page, for sites where it isn't in main namespace) */ if ( mw.config.get('wgNamespaceNumber') > 0 && !mw.config.get('wgIsMainPage') ) { mw.centralNotice.bannerData.hideResult = true; mw.centralNotice.bannerData.hideReason = 'namespace'; }

// Hide banner on sensitive articles // TODO - possibly add wgWikibaseItemId for multilingual support and resilience to moves? var hideTitles = [ 'Murder of Don Banfield', 'Asian News International', 'Asian News International vs. Wikimedia Foundation' ]; var pageTitle = mw.config.get('wgTitle'); if ( hideTitles.indexOf( pageTitle ) !== -1 ) { mw.centralNotice.bannerData.hideResult = true; mw.centralNotice.bannerData.hideReason = 'article'; }

/* Hide banner if on wrong site (desktop/mobile) in case wrong device settings were chosen */ var bannerName = mw.centralNotice.data.banner, skin = mw.config.get('skin'), siteName = mw.config.get('wgSiteName'); if ( ( bannerName.indexOf('_dsk_') !== -1 && skin === 'minerva' ) || ( bannerName.indexOf('_m_') !== -1 && skin !== 'minerva' ) || skin === 'wikimediaapiportal' || // workaround for T270308 siteName === 'Wikitech' ) { mw.centralNotice.bannerData.hideResult = true; mw.centralNotice.bannerData.hideReason = 'other'; console.warn('Hiding fundraising banner on wrong site (desktop/mobile)'); }

return !mw.centralNotice.bannerData.hideResult;

};

/* Debug function to highlight dynamically replaced elements */ frb.highlightReplacements = function() { $('.frb [class^="frb-replace"], .frb-ptf-fee, .frb-ptf-total, .frb-upsell-ask, frb-amt').css('background-color', '#fa0'); };

if ( !mw.centralNotice.adminUi ) { // T262693 /** * Provides alterImpressionData hook for CentralNotice * This info will be sent back with Special:RecordImpression * TODO: check if/when we can remove this (and RecordImpression) */ mediaWiki.centralNotice.bannerData.alterImpressionData = function( impressionData ) { // Returning true from this function indicates the banner was shown if (mediaWiki.centralNotice.bannerData.hideReason) { impressionData.reason = mediaWiki.centralNotice.bannerData.hideReason; } if (mediaWiki.centralNotice.bannerData.cookieCount) { impressionData.banner_count = mediaWiki.centralNotice.bannerData.cookieCount; }

return !mediaWiki.centralNotice.bannerData.hideResult; }; }

/* End of MediaWiki:FundraisingBanners/CoreJS-2018.js */ /* jshint maxerr: 600 */ /* == MediaWiki:FundraisingBanners/LocalizeJS-2017.js == */ /* Note this has been replaced with MediaWiki:FundraisingBanners/LocalizeJS-2022.js */

/**

* Get the currency for a given country
*
* NOTE: The following currency mapping is WMF-specific based on payment
* provider availability, NOT necessarily the official currency of the country
*
* @param  {string} country code
* @return {string} currency code
*/

frb.getCurrency = function(country) {

   switch ( country ) {
       // Big 6
       case 'US': return 'USD';
       case 'CA': return 'CAD';
       case 'AU': return 'AUD';
       case 'NZ': return 'NZD';
       case 'GB': return 'GBP';
       case 'IE': return 'EUR';
       // Euro countries
       case 'AT':
       case 'BE':
       case 'ES':
       case 'FR':
       case 'IE':
       case 'IT':
       case 'LU':
       case 'LV':
       case 'NL':
       case 'PT':
       case 'SK':
           return 'EUR';
       // Others
       case 'DK': return 'DKK';
       case 'HU': return 'HUF';
       case 'IL': return 'ILS';
       case 'IN': return 'INR';
       case 'JP': return 'JPY';
       case 'MY': return 'MYR';
       case 'NO': return 'NOK';
       case 'PL': return 'PLN';
       case 'RO': return 'RON';
       case 'SE': return 'SEK';
       case 'UA': return 'UAH';
       case 'ZA': return 'ZAR';
       // Latin America
       case 'BR': return 'BRL';
       case 'AR': return 'ARS';
       case 'CL': return 'CLP';
       case 'CO': return 'COP';
       case 'MX': return 'MXN';
       case 'PE': return 'PEN';
       case 'UY': return 'UYU';
       case 'CH': return 'CHF';
       // Fall back to USD
       default:
           return 'USD';
   }

};

/**

* Format a currency value
*
* @param  {string} currency code. Leave undefined to get without symbol.
* @param  {number} amount
* @param  {string} language code
* @return {string} formatted string e.g. '$3', '£5', '10 €'
*/

frb.formatCurrency = function(currency, amount, language) {

   var locale, formatterOptions, formatter, fmAmount, supportsIntl;
   if ( isNaN(amount) || amount ===  ) {
       // Not a number, it's probably the 'other' string or box
       // TODO: better way of doing this?
       fmAmount = amount;
   } else {
       // Check browser support
       try {
           supportsIntl = typeof window.Intl === 'object';
       } catch (e) {
           supportsIntl = false; // T265396
       }
       if ( supportsIntl ) {
           // Use Intl for fancy number formatting - thousands separators etc
           locale = language + '-' + mw.centralNotice.data.country;
           if ( amount % 1 !== 0 ) {
               formatterOptions = { minimumFractionDigits: 2 };
           } else {
               formatterOptions = {};
           }
           formatter = new Intl.NumberFormat(locale, formatterOptions);
       } else {
           // Bad browser i.e. IE. Just do the basics: 2 decimal places if needed, or none
           formatter = {};
           formatter.format = function(number) {
               if ( amount % 1 !== 0 ) {
                   return number.toFixed(2);
               } else {
                   return number.toString();
               }
           };
       }
       fmAmount = formatter.format(amount);
   }
   // No symbol needed
   if ( currency === undefined ) {
       return fmAmount;
   }
   // Better dive into the formatting object
   if ( frb.currencyFormats[currency] === undefined ) {
       return currency + ' ' + fmAmount;
   }
   if ( frb.currencyFormats[currency] instanceof Object ) { // not a string
       if ( frb.currencyFormats[currency][language] !== undefined ) {
           return frb.currencyFormats[currency][language].replace('\t', fmAmount);
       }
       return frb.currencyFormats[currency]['default'].replace('\t', fmAmount);
   }
   return frb.currencyFormats[currency].replace('\t', fmAmount);

};

/*

* Select the correct amount or array of amounts from object in "source"
*
* @param {Object} source   - the amounts data object e.g. frb.amounts.options7, frb.amounts.averages
* @param {string} currency - ISO code of currency
* @param {string} country  - ISO code of country (optional)
* @return {array/number}   - depending on source
*/

frb.pickAmounts = function(source, currency, country) {

   if ( source[currency]['default'] ) { // we need to go deeper
       if ( source[currency][country] !== undefined ) {
           return source[currency][country];
       } else {
           return source[currency]['default'];
       }
   } else {
       return source[currency];
   }

};

/* Credit card types so we can show the correct logos */ frb.cardTypes = {

   // Big 6
   'US' : 'vmad',
   'CA' : 'vma',
   'GB' : 'vmaj',
   'IE' : 'vmaj',
   'AU' : 'vmaj',
   'NZ' : 'vma',
   // Euro countries
   'AT' : 'vmaj',
   'BE' : 'vmaj',
   'ES' : 'vmaj',
   'FR' : 'vma', // Adyen
   'IT' : 'vmaj',
   'LU' : 'vmaj',
   'LV' : 'vma',
   'NL' : 'vmaj', // Adyen
   'PT' : 'vmaj',
   'SK' : 'vmaj',
   // Others
   'DK' : 'vma',
   'HU' : 'vma',
   'IL' : 'vmad', // Adyen
   'JP' : 'vmj',
   'MY' : 'vmaj',
   'NO' : 'vma',
   'PL' : 'vma',
   'RO' : 'vma',
   'SE' : 'vma',
   'UA' : 'vma', // Adyen
   'ZA' : 'vm',
   'IN' : 'vmar' // dLocal

};

/**

* Should we show Apple Pay?
*
* Note there is a ~500ms delay in Safari when checking, so only call this if needed
*
* @param  {string} country
* @return {boolean}
*/

frb.shouldShowApplePay = function ( country ) {

   // https://support.apple.com/en-us/HT207957 - minus China mainland
   var appleCountries = [
       'ZA',
       'AU', 'HK', 'JP', 'MO', 'NZ', 'SG', 'TW',
       'AM', 'AT', 'AZ', 'BY', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 
       'EE', 'FO', 'FI', 'FR', 'GE', 'DE', 'GR', 'GL', 'GG', 'HU', 
       'IS', 'IE', 'IM', 'IT', 'KZ', 'JE', 'LV', 'LI', 'LT', 'LU', 
       'MT', 'MC', 'ME', 'NL', 'NO', 'PL', 'PT', 'RO', 'RU', 'SM', 
       'RS', 'SK', 'SI', 'ES', 'SE', 'CH', 'UA', 'GB', 'VA', 
       'CO', 'CR', 'BR', 'MX', 
       'BH', 'IL', 'PS', 'QA', 'SA', 'AE', 
       'CA', 'US'
   ];
   if ( appleCountries.indexOf( country ) === -1 ) {
       return false;
   }
   if ( location.search.match('forceApplePay') ) {
       return true;
   }
   if ( window.ApplePaySession ) {
       if ( ApplePaySession.canMakePayments() ) {
           return true;
       }
   }
   return false;

};

/**

* Display the correct payment methods for current country
*
* Methods should be labeled with class 'frb-pm-xxxx'
* TODO: clean this function up more
*
* @param  {string} country
*/

frb.localizeMethods = function(country) {

   // Test country with *all the methods*
   if ( country === 'ZZ' ) {
       $('.frb-payment-options > div').show();
       return;
   }
   // Hide recurring completely for some countries and endowment
   if ( frb.isEndowment || frb.noRecurringCountries.indexOf(country) !== -1 ) {
       $('.frb-frequency, .recurring-details').hide();
   }
   // Remove any leftover WorldPay and Adyen
   $('.frb-pm-cc-wp').remove();
   $('.frb-pm-cc-adyen').remove();
   // Monthly Adyen credit card is allowed now
   // if ( frb.ccAdyenCountries.indexOf( country ) !== -1 ) {
   //     $('.frb-pm-cc').addClass('no-monthly');
   // }
   // Countries with no PayPal option
   var noPP = ['IN', 'RU', 'SG', 'AE', 'QA', 'OM', 'BD', 'BO', 'PA',
               'PY', 'GT', 'JM', 'TT', 'DZ'];
   if ($.inArray(country, noPP) !== -1) {
       $('.frb-pm-pp').remove();
       $('.frb-pm-pp-usd').remove();
   }
   // Countries with no PayPal for mobile only - https://phabricator.wikimedia.org/T173001
   var noPPmobile = ['PH', 'ID', 'TH', 'KR', 'MY', 'VN'];
   var mobileRegex = /(_mob_|_ipd_|_m_)/;
   if ($.inArray(country, noPPmobile) !== -1) {
       if (mw.centralNotice.data.banner.search(mobileRegex) !== -1) {
           $('.frb-pm-pp').remove();
           $('.frb-pm-pp-usd').remove();
       }
   }
   // Countries where PayPal must be in USD
   var ppUSD = ['BG', 'HR', 'LT', 'MK', 'RO', 'UA', 'SA', 'CN', 'ID', 'KR',
                'KZ', 'MY', 'VN', 'AR', 'CL', 'DO', 'CO', 'NI', 'UY', 'ZA',
                'BH', 'LB', 'VE', 'TR', 'IS', 'BA', 'MV', 'BB', 'BM', 'BZ',
                'CR', 'CW', 'SX', 'HN', 'KN', 'DM', 'AG', 'LC', 'GD', 'FJ',
                'TN', 'BJ', 'BF', 'CI', 'GW', 'ML', 'NE', 'SN', 'TG', 'BR',
                'PE'];
   if ($.inArray(country, ppUSD) !== -1) {
       $('.frb-pm-pp').remove();
       $('.frb-pm-pp-usd').show();
   } else {
       $('.frb-pm-pp').show();
       $('.frb-pm-pp-usd').remove();
   }
   // Show any extra local payment methods, or remove them if not needed
   var extrapaymentmethods = {
       'amazon'   : ['US'],
       'bpay'     : [],
       'ideal'    : ['NL'],
       'bt'       : ['BR', 'AR', 'CO', 'CL', 'PE', 'IN', 'ZA'], // Bank Transfer (Astropay)
       'cash'     : ['BR', 'MX', 'AR', 'CO', 'PE', 'UY'],  // 'Cash' methods (Astropay)
       'pix'      : ['BR']
   };
   // Methods with different labels per country
   var language = mw.config.get('wgUserLanguage');
   var cashTranslation = 'Cash';
   var btTranslation = 'Bank Transfer';
   if (language === 'en') {
       if (country === 'BR') {
           cashTranslation = 'Boleto';
       }
   } else if (language === 'pt') {
       if (country === 'BR') {
           btTranslation   = 'Transferência Bancária';
           cashTranslation = 'Boleto';
       }
   } else if (language === 'es') {
       if (country === 'AR') {
           btTranslation   = 'Transferencia Bancaria';
           cashTranslation = 'Efectivo';
       }
       if (country === 'CL') {
           btTranslation   = 'WebPay';
       }
       if (country === 'CO') {
           btTranslation   = 'PSE Pagos';
           cashTranslation = 'Efectivo';
       }
       if (country === 'MX') {
           cashTranslation = 'Efectivo';
       }
       if (country === 'PE') {
           btTranslation   = 'Transferencia Bancaria';
           cashTranslation = 'Efectivo';
       }
       if (country === 'UY') {
           cashTranslation = 'Efectivo';
       }
   }
   $('.frb-pm-bt button,   .frb-pm-bt label,   button.frb-pm-bt'  ).text( btTranslation );
   $('.frb-pm-cash button, .frb-pm-cash label, button.frb-pm-cash').text( cashTranslation );
   for (var method in extrapaymentmethods) {
       var $methodbutton = $('.frb-pm-' + method);
       if ( $.inArray(country, extrapaymentmethods[method]) !== -1 && !frb.isEndowment ) {
           $methodbutton.show();
       } else {
           $methodbutton.remove();
       }
   }
   // Google Pay - separated from extrapaymentmethods as we want to show on Endowment too
   var googlePayCountries = [
       'AE', 'AT', 'AU', 'BE', 'BG', 'BR', 'CA', 'CH', 'CL', 'CO',
       'CZ', 'DE', 'DK', 'EE', 'ES', 'FR', 'GB', 'GR', 'HK', 'HR',
       'HU', 'IE', 'IL', 'IT', 'JP', 'LU', 'LV', 'MX', 'MY', 'NL',
       'NO', 'NZ', 'OM', 'PL', 'PT', 'QA', 'RO', 'RU', 'SA', 'SE',
       'SG', 'SK', 'TH', 'TR', 'TW', 'UA', 'US', 'VN', 'ZA'
   ];
   if ( $.inArray(country, googlePayCountries) !== -1 ) {
       $('.frb-pm-google').show();
   } else {
       $('.frb-pm-google').remove();
   }
   // Apple Pay
   if ( $('.frb-pm-applepay').length > 0 ) {
       if ( !frb.shouldShowApplePay( country ) ) {
           $('.frb-pm-applepay').remove();
       }
   }
   /* Add card types class to credit card button, so we can show correct logos */
   if ( frb.cardTypes[country] ) {
       $('.frb-pm-cc').addClass('frb-cctypes-' + frb.cardTypes[country] );
   }

};

/**

* Check scheduled payment method outages and hide buttons if needed
*
* Data at https://meta.wikimedia.org/wiki/MediaWiki:FR2013/Resources/PaymentOutages.js
* Methods should be labeled with class 'frb-pm-xxxx'
*
* @param  {string} country code
*/

frb.checkMethodOutages = function(country) {

   // TODO - can we load this a better way?
   /* This file can be used to schedule hiding of individual payment methods from banners
* e.g. if they have scheduled downtime.
*
* Valid methods are:
*	ideal, cc, pp, amazon, bpay, webmoney, cash, pp-usd
* (most of the time it's 'ideal'...)
* Can also limit outage to a specific country with country: "XX" (where XX is an ISO code)
*
* Note that in JavaScript dates the months (and only the months) start at 0.
* Jan=0, Feb=1, Mar=2, Apr=3 etc. How hateful.
*
* Be sure to also update donatewiki if needed e.g. by commenting the method templates
* found at https://donate.wikimedia.org/wiki/Template:2012FR/Form-section/Paymentmethods
* 
*/

var outages = [

   {
       start:      new Date(Date.UTC(2016, 8, 18, 1)),
       end:        new Date(Date.UTC(2016, 8, 18, 7)),
       method:     "ideal"
   }

]; // jshint ignore:line

   var now = new Date();
   for (var i = outages.length - 1; i >= 0; i--) {
       if ( now > outages[i].start && now < outages[i].end ) {
           if (outages[i].country === undefined || outages[i].country == country) {
               $('.frb-pm-' + outages[i].method).hide();
           }
       }
   }

};

/**

* Adjust the amount options and their labels
*
* Inputs should have id frb-amt-psX where X is the index number (starting from 1)
*
* @param  {Object}  source     - object with amounts e.g. frb.amounts.options7
* @param  {string}  currency   - currency code e.g. 'USD'
* @param  {string}  country    - country code  e.g. 'FR' Some currencies can have different options per country.
* @param  {string}  language   - language code e.g. 'en' For symbol formatting
* @param  {boolean} useSymbols - use currency symbols on labels or not? (3 vs $3)
*/

frb.localizeAmountOptions = function(source, currency, country, language, useSymbols) {

   var amountOptions = frb.pickAmounts(source, currency, country);
   $('#frb-form input[name="amount"]').each(function(index) {
       var $input = $(this);
       var $label = $input.siblings('label');
       var i = $input.attr('id').replace('frb-amt-ps', );
       var amount = amountOptions[i-1]; // because IDs start from 1
       if ( amount ) {
           $input.val( amount );
           if ( useSymbols ) {
               $label.text( frb.formatCurrency( currency, amount, language) );
           } else {
               $label.text( frb.formatCurrency( undefined, amount, language) );
           }
       }
   });

};

/**

* Make an element into a link
*
* @param  {string} selector    CSS selector for elements to convert to a link
* @param  {string} language    Code of language (could be es-419 or pt-br)
* @param  {string} baseUrl     URL of link (function will add language parameter)
*/

frb.makeLink = function( selector, language, baseUrl ) {

   var url = baseUrl + '&language=' + language;
   $( selector ).each( function() {
       var $link = $( '<a></a>' );
       $link.html( $( this ).html() );
       $link.attr( { href: url, target: '_blank' } );
       $( this ).replaceWith( $link );
   });

};

/**

* Get the number of banners seen from localStorage
* @return {number} Number of banners seen
*/

frb.getSeenCount = function () {

   // Force with URL parameter 'impression'
   if ( typeof URLSearchParams === 'function' ) { // not available in old browsers
       var urlParams = new URLSearchParams( window.location.search );
       if ( urlParams.has( 'impression' ) ) {
           return urlParams.get( 'impression' );
       }
   }
   try {
       if ( localStorage ) {
           var identifier = mw.centralNotice.internal.state.campaign.mixins.impressionDiet.cookieName,
               lsName = 'CentralNoticeKV|global|impression_diet_' + identifier,
               diet = JSON.parse( localStorage.getItem( lsName ) );
           if ( diet ) {
               return diet.val.seenCount;
           }
       }
   } catch ( ex ) {
       // do nothing - localStorage is configured not to let us read it, or mixin not set
       return;
   }

};

/**

* Replace placeholders with number of banners seen
* @param {string} Language code
*/

frb.replaceSeenCount = function( language ) {

   var ordinalNums = {
           'en' : [ , '1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th', '10th' ],
           'ja' : [ , '初めて', '2回目', '3回目', '4回目', '5回目', '6回目', '7回目', '8回目', '9回目', '10回目' ],
           'fr':  [ , '1er', '2e', '3e', '4e', '5e', '6e', '7e', '8e', '9e', '10e' ],
           'nl' : [ , '1e', '2e', '3e', '4e', '5e', '6e', '7e', '8e', '9e', '10e' ]
       },
       ordinalWords = {
           'en' : [ , 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth' ],
           'it' : [ , 'la prima', 'la seconda', 'la terza', 'la quarta', 'la quinta', 'la sesta', 'la settima', "l'ottava", 'la nona', 'la decima' ],
           'sv' : [ , 'första', 'andra', 'tredje', 'fjärde', 'femte', 'sjätte', 'sjunde', 'åttonde', 'nionde', 'tionde' ],
           'es' : [ , 'primera', 'segunda', 'tercera', 'cuarta', 'quinta', 'sexta', 'séptima', 'octava', 'novena', 'décima' ],
           'pt' : [ , 'primeira', 'segunda', 'terceira', 'quarta', 'quinta', 'sexta', 'sétima', 'oitava', 'nona', 'décima' ],
           'aa' : [ , 'primera', 'segunda', 'tercera', 'cuarta', 'quinta', 'sexta', 'séptima', 'octava', 'novena', 'décima' ],
           'ja' : [ , '初めて', '2回目', '3回目', '4回目', '5回目', '6回目', '7回目', '8回目', '9回目', '10回目' ],
           'fr' : [ , 'première', 'deuxième', 'troisième', 'quatrième', 'cinquième', 'sixième', 'septième', 'huitième', 'neuvième', 'dixième' ],
           'de' : [ , 'erste', 'zweite', 'dritte', 'vierte', 'fünfte', 'sechste', 'siebente', 'achte', 'neunte', 'zehnte' ]
       },
       textFragments = {
           'en' : [
               'for the 1st time recently',
               'for the 2nd time recently',
               'for the 3rd time recently',
               'for the 4th time recently',
               'for the 5th time recently',
               'for the 6th time recently',
               'for the 7th time recently',
               'for the 8th time recently',
               'for the 9th time recently',
               'for the 10th time recently'
           ]
       };
   var getReplaceText = function( data, language, seenCount ) {
       if ( data[ language ] ) {
           return data[ language ][ seenCount ];
       } else {
           return data[ 'en' ][ seenCount ];
       }
   };
   var seenCount = frb.getSeenCount();
   if ( seenCount ) {
       $( '.frb-replace-seenCount' ).text( seenCount );
       $( '.frb-replace-seenCount-ordinalNum' ).text( getReplaceText( ordinalNums, language, seenCount ) );
       $( '.frb-replace-seenCount-ordinalWord' ).text( getReplaceText( ordinalWords, language, seenCount ) );
       $( '.frb-replace-seenCount-textFragment' ).text( getReplaceText( textFragments, language, seenCount ) );
   }

};

/**

* Replace elements with preset ask string amounts
*
* e.g. class="frb-replace-amt-ps4" will be replaced with amount #4, currently $25 in the US
*
* @param  {string} currency - currency code e.g. 'USD'
* @param  {string} country  - country code  e.g. 'FR'
* @param  {string} language - language code e.g. 'en' For symbol formatting
*/

frb.replaceCustomAmounts = function( currency, country, language ) {

   var amountOptions = frb.pickAmounts( frb.amounts.options7, currency, country );
   $( '.frb [class^="frb-replace-amt-ps"]' ).each( function() {
       var i = $( this ).attr( 'class' ).replace( 'frb-replace-amt-ps',  ),
           amount = amountOptions[ i - 1 ],
           formattedAmount = frb.formatCurrency( currency, amount, language );
       $( this ).html( '<frb-amt>' + formattedAmount + '</frb-amt>' );
   });

};

frb.noRecurringCountries = ['AR', 'CL', 'CO', 'MX', 'PE', 'UY', 'BR', 'IN']; frb.ccAdyenCountries = ['FR', 'IL', 'UA'];

/* These countries use potentially ambiguous $ sign. Use ISO code instead in text (but still $ for buttons) */ frb.textAmountIsoCountries = ['AR', 'CL', 'CO', 'MX'];

$(function() {

   if ( mw.centralNotice.adminUi ) { // T262693
       return;
   }
   var language = mw.centralNotice.data.uselang;
   var variantLanguage; // for pt-br and es-419, note we can only use these for certain links
   var country  = mw.centralNotice.data.country;
   var currency = frb.getCurrency(country);
   if ( language === 'pt' && country === 'BR' ) {
       variantLanguage = 'pt-br';
   } else if ( language === 'es' && ['AR', 'CL', 'CO', 'PE', 'MX', 'UY'].indexOf( country ) !== -1 ) {
       variantLanguage = 'es-419';
   } else {
       variantLanguage = language;
   }
   // Payment methods
   frb.localizeMethods(country);
   frb.checkMethodOutages(country);
   // Preset amounts
   frb.replaceCustomAmounts( currency, country, language );
   // Basic replacements
   $('.frb-replace-currencysymbol').text( frb.formatCurrency( currency, , language ).replace(' ', ) );
   $('.frb-replace-currencycode').text( currency );
   // Count banners seen
   frb.replaceSeenCount( language );
   // Country name
   var countryName;
   if ( frb.countryNames[language] ) {
       countryName = frb.countryNames[language][country] || frb.countryNames.en[country];
   } else {
       countryName = frb.countryNames.en[country];
   }
   $('.frb-replace-countryname').text( countryName );
   // Day of week
   var now = new Date();
   var dayNumber = now.getDay();
   var capitalizeText = function( text ) {
       // Capitalize first letter, for use at start of sentence
       return text.charAt(0).toUpperCase() + text.slice(1);
   };
   if ( $('.frb-replace-dayofweek, .frb-replace-dayofweek-capitalize').length > 0 ) {
       if ( frb.dayNames[language] ) {
           $('.frb-replace-dayofweek').text( frb.dayNames[language][dayNumber] );
           $('.frb-replace-dayofweek-capitalize').text( capitalizeText( frb.dayNames[language][dayNumber] ) );
       } else {
           console.log('Warning: banner should contain a day of the week, but no translations found.');
       }
   }
   if ( $('.frb-replace-dayofweek-this, .frb-replace-dayofweek-this-capitalize').length > 0 ) {
       if ( frb.dayNamesThis[language] ) {
           $('.frb-replace-dayofweek-this').text( frb.dayNamesThis[language][dayNumber] );
           $('.frb-replace-dayofweek-this-capitalize').text( capitalizeText( frb.dayNamesThis[language][dayNumber] ) );
       } else {
           console.log('Warning: banner should contain "this DAY", but no translations found.');
       }
   }
   // Capitalize
   $('.frb-capitalize').text(function( index, text ) {
       return text.charAt(0).toUpperCase() + text.slice(1);
   });
   // Replace device with iPad if needed
   var ua = navigator.userAgent;
   if ( ua.match( /ipad/i ) ) {
       $('.frb-replace-device').text( frb.iPadTranslations[language] || frb.iPadTranslations.en );
   }
   // Replace %AVERAGE% and %MINIMUM%
   var average = frb.pickAmounts( frb.amounts.averages, currency, country ),
       ifEveryone = frb.pickAmounts( frb.amounts.ifEveryone, currency, country ),
       avgString,
       ifString;
   if ( frb.textAmountIsoCountries.indexOf(country) !== -1 ) {
       avgString = frb.formatCurrency( undefined, average, language ) + ' ' + currency;
       ifString  = frb.formatCurrency( undefined, ifEveryone, language ) + ' ' + currency;
   } else {
       avgString = frb.formatCurrency( currency, average, language ).replace( /\.$/,  ); // strip any period from end for use in running text
       ifString  = frb.formatCurrency( currency, ifEveryone, language ).replace( /\.$/,  );
   }
   $( '.frb' ).each( function( index ) {
       var newHtml = $(this).html();
       newHtml = newHtml.replace( /%AVERAGE%/g, '<frb-amt>' + avgString + '</frb-amt>' );
       newHtml = newHtml.replace( /%MINIMUM%/g, '<frb-amt>' + ifString + '</frb-amt>' );
       $( this ).html( newHtml );
   });
   /**
    * Call a function on every text node contained by a root node.
    *
    * Used so we can do text replacements without accidentally clobbering html and scripts
    *
    * @param  {Node}     rootNode The Node object whose descendants will be recursed through
    * @param  {Function} callback Callback function that receives a Node as its only argument
    */
   function eachTextNode( rootNode, callback ) {
       for ( var node = rootNode.firstChild; node !== null; node = node.nextSibling ) {
           if ( node.nodeType === Node.TEXT_NODE ) {
               callback( node );
           } else if ( node.nodeType === Node.ELEMENT_NODE ) {
               eachTextNode( node, callback );
           }
       }
   }
   // French spacing: replace space before punctuation with  
   if ( language === 'fr' ) {
       var bannerRootElements = document.getElementsByClassName( 'frb' );
       for ( var i = 0; i < bannerRootElements.length; i++ ) {
           eachTextNode( bannerRootElements[i], function( node ) {
               node.textContent = node.textContent.replace( / ([!?;:%])/g, '\u00a0$1' );
           });
       }
   }
   // Links (in smallprint) TODO: merge with frb.makeLink()
   $('.frb-localize-links a').each(function() {
       // Add parameters for LandingCheck
       var uri = new mw.Uri( $(this).attr('href') );
       uri.extend({
           country:      country,
           language:     variantLanguage,
           uselang:      variantLanguage,
           utm_medium:   'sitenotice',
           utm_campaign: mw.centralNotice.data.campaign || 'test',
           utm_source:   mw.centralNotice.data.banner
       });
       $(this).attr('href', uri.toString());
       $(this).attr('target', '_blank'); // Make links open in new tab
   });
   // Add links
   frb.makeLink( '.frb-link-privacy', variantLanguage, 'https://foundation.wikimedia.org/wiki/Special:LandingCheck?basic=true&landing_page=Donor_privacy_policy' );
   frb.makeLink( '.frb-link-tax',     variantLanguage, 'https://donate.wikimedia.org/wiki/Special:LandingCheck?basic=true&landing_page=Tax_deductibility' );
   frb.makeLink( '.frb-link-cancel',  variantLanguage, 'https://donate.wikimedia.org/wiki/Special:LandingCheck?basic=true&landing_page=Cancel_or_change_recurring_giving' );
   // Legal text variants
   if (country === 'US') {
       $('.frb-legal-US').show();
       $('.frb-legal-nonUS, .frb-legal-NL').hide();
   } else if (country === 'NL') {
       $('.frb-legal-NL').show();
       $('.frb-legal-US, .frb-legal-nonUS').hide();
   } else {
       $('.frb-legal-nonUS').show();
       $('.frb-legal-US, .frb-legal-NL').hide();
   }
   // Quick hack for American/British/Commonwealth English differences
   if ( country === 'US' ) {
       $('.frb-lang-enUS').show();
       $('.frb-lang-en5C').hide();
   } else {
       $('.frb-lang-enUS').hide();
       $('.frb-lang-en5C').show();
   }
   // Where Remind Me Later should be shown
   var rmlCountries = ['US', 'CA', 'GB', 'IE', 'AU', 'NZ',
                       'IT', 'NL', 'JP', 'FR', 'SE', 'ZA', 'IN',
                       'AR', 'BR', 'CL', 'CO', 'PE', 'UY', 'MX'];
   var rmlLanguages = ['en', 'fr', 'nl', 'ja', 'it', 'sv', 'pt', 'es'];
   var rmlEnabled = !frb.isEndowment && rmlCountries.indexOf(country) !== -1 && rmlLanguages.indexOf(language) !== -1;
   if ( rmlEnabled ) {
       $('.frb').addClass('frb-rml-enabled');
   } else {
       $('.frb').addClass('frb-rml-disabled');
   }

});

/* == end of MediaWiki:FundraisingBanners/LocalizeJS-2017.js == */

/** Provides alterImpressionData hook for CentralNotice

*  This info will be sent back with Special:RecordImpression
*/

mediaWiki.centralNotice.bannerData.alterImpressionData = function( impressionData ) {

   // Returning true from this function indicates the banner was shown
   if (mediaWiki.centralNotice.bannerData.hideReason) {
       impressionData.reason = mediaWiki.centralNotice.bannerData.hideReason;
   }
   if (mediaWiki.centralNotice.bannerData.cookieCount) {
       impressionData.banner_count = mediaWiki.centralNotice.bannerData.cookieCount;
   }
   
   return !mediaWiki.centralNotice.bannerData.hideResult;

};


/**

* Determine if we should show recurring choice on step 2
* @param  {Object} options     Including method and optional gateway
* @param  {String} country
* @return {boolean}
*/

frb.shouldShowRecurring = function(options, country) {

   if( frb.noRecurringCountries.indexOf( country ) !== -1 ) { // Defined in LocalizeJS-2017.js
       return false;
   }
   if( options.method === 'paypal' ) {
       return true;
   }
   if( options.method === 'cc' ) {
       if ( options.gateway === 'adyen' || frb.ccAdyenCountries.indexOf( country ) !== -1 ) { // Defined in LocalizeJS-2017.js
           return false;
       } else {
           return true;
       }
   }
   return false;

};

$(function() {

   var language = mw.centralNotice.data.uselang;
   var country  = mw.centralNotice.data.country;
   var currency = frb.getCurrency(country);
   var validAmount;
   var validMethod;
   var validOptin;
   var form = document.getElementById('frb-form');
   mw.loader.using(['mediawiki.util']).then(function() {
       frb.rml.init();
   });
   frb.initAmountOptions();
   frb.localizeAmountOptions( frb.amounts.options7, currency, country, language, true );
   frb.localizeErrors();
   frb.storedOptions = {};
   frb.extraData = {};
   // Set frequency to onetime to begin
   frb.setMethod = function (options, frequency) {
       if( frequency === 'no-monthly' ) {
           $('#frb-frequency-monthly').attr('disabled', true);
       } else {
           $('#frb-frequency-monthly').attr('disabled', false);
       }
       frb.storedOptions = options; // Default to credit card
   };
   /* Begin step functionality */
   // Update the step 1 selections on step 2.
   frb.updateUpsellAsk = function() {
       var amount, upsellAmount;
       if (form.otherMonthlyAmount.value !== ) {
           upsellAmount = form.otherMonthlyAmount.value;
       } else {
           amount = frb.getAmount(form);
           feeAmount = frb.calculateFee(amount);
           if ( $('#frb-ptf-checkbox').prop('checked') ) {
              totalAmount = amount + feeAmount;
           } else {
             totalAmount = amount;
           }
           if (totalAmount <= 5 ) {
               upsellAmount = 2.75;
           }
           else if (totalAmount <= 10 ) {
               upsellAmount = 3;
           }
           else if (totalAmount <= 20 ) {
               upsellAmount = 5;
           }
           else if (totalAmount <= 30 ) {
               upsellAmount = 7;
           }
           else if (totalAmount <= 50 ) {
               upsellAmount = 9;
           }
           else if (totalAmount <= 100 ) {
               upsellAmount = 11;
           }
           else if (totalAmount <= 250 ) {
               upsellAmount = 25;
           }
           else if (totalAmount <= 500 ) {
               upsellAmount = 50;
           }
           else {
               upsellAmount = 100;
           }
           //update other monthly input
           form.otherMonthlyAmount.value = upsellAmount;
       }
       var upsellAmountFormatted = frb.formatCurrency(currency, upsellAmount, language);
       $('.frb-upsell-ask').text(upsellAmountFormatted);
       // Save totalAmount as extraData
       frb.extraData.step1Amount = totalAmount;
   };


   $('.frb-amounts').on('input change', function(e) {
       var target = $(e.target);
       if ( target.attr('id') !== 'input_amount_other' ) {
           if ( frb.validateAmount() ) {
               validAmount = 1;
           } else {
               validAmount = 0;
           }
       }
       frb.updateFeeDisplay();
       frb.activateCTA();
   });
   $('.frb-methods').on('change', function() {
       $('.frb-methods').removeClass('frb-haserror');
       $('.frb-error-method').hide();
       validMethod = 1;
       frb.activateCTA();
   });


   // Hide Banner when on click and enter when focused
   $('.frb-close').on('click keypress', function(e){
       if (e.which === 13 || e.type === 'click') {
           frb.hide();
           e.stopPropagation();
       }
   });
   // Go to the second step of the form
   $('#frb-continue').on('click', function(e) {
       e.preventDefault();
       var status = {amount: false, method: false};
       // Validate amount
       if( frb.validateAmount() ){
           status.amount = true;
       } else {
            frb.extraData.validateError = 1;
       }
       // Validate method
       if ($('input[name="frb-methods"]:checked').length === 1) {
           status.method = true;
       } else {
           frb.extraData.validateError = 1;
           $('.frb-methods').addClass('frb-haserror');
           $('.frb-error-method').show();
       }
       if (status.amount === true && status.method === true) {
           if ( $('#frb-frequency-monthly').prop("checked") ) {
               frb.extraData.step1Frequency = 'monthly';
           } else {
               frb.extraData.step1Frequency = 'onetime';
           }
           // Only do step 2 if gift is one-time and payment method supports monthly
           if( frb.getRecurring(document.getElementById('frb-form')) || $('#frb-frequency-monthly').prop('disabled') ) {
               frb.submitForm(frb.storedOptions);
           } else {
               $('.frb-rml').fadeOut();
               $('.frb-close').fadeOut();
               $('.frb-step1').animate({
                   'left': -320
               }, 300);
               $('#frb-step1').attr("hidden");
               frb.updateUpsellAsk();
           
               $('.frb-step2').animate({
                   'margin-left': 0
               }, 300);
               $('.close-optin').show();
               $('#frb-step2').removeAttr("hidden");
           }
       }
   });
   // Go back to Step 1
   $('body').on('click', '.close-optin', function(e) {
       $('.frb-step1').animate({
           'left': 0
       }, 300);
       $('#frb-step1').removeAttr("hidden");
       $('.frb-step2').animate({
           'margin-left': 320
       }, 300);
       $('#frb-step2').attr("hidden");
       $('.frb-back').hide();
       $('.frb-rml').fadeIn();
       $('.frb-close').fadeIn();
   });
   // Go back from diff amount
   $('body').on('click', '.close-optin2', function(e) {
       validAmount = 1;
       frb.activateCTA();
       frb.toggleMonthly(false);
       $('.frb-monthly-diff-amt, .close-optin2').hide();
       $('.frb-upsell, .frb-monthly-buttons, .frb-monthly-diff-amt-link, .close-optin3').show();
   });
   // Donate monthly other amount
   $('.frb-monthly-diff-amt-link').on('click keypress', function(e) {
       if(e.which === 13 || e.type === 'click') {
           e.stopPropagation();
           document.getElementById('frb-form').otherMonthlyAmount.value = ;
           validAmount = 0;
           frb.activateCTA();
           frb.toggleMonthly(true);
           $('.frb-upsell, .frb-monthly-buttons, .frb-monthly-diff-amt-link, .close-optin3').hide();
           $('.frb-monthly-diff-amt, .close-optin2').show();
       }
   });
   // Validate monthly other amount
   $('#frb-amt-monthly-other-input').on('input change', function(e) {
       if ( frb.validateMonthlyAmount() ) {
           validAmount = 1;
           frb.updateUpsellAsk();
       } else {
           validAmount = 0;
       }
       frb.activateCTA();
   });
   frb.getMonthlyAmount = function() {
       var amount = null;
       // Check the "monthly other" amount box
       if (form.otherMonthlyAmount.value !== ) {
           var otherMonthlyAmount = form.otherMonthlyAmount.value;
           otherMonthlyAmount = otherMonthlyAmount.replace(/[,.](\d)$/, ':$10');
           otherMonthlyAmount = otherMonthlyAmount.replace(/[,.](\d)(\d)$/, ':$1$2');
           otherMonthlyAmount = otherMonthlyAmount.replace(/[$£€¥,.]/g, );
           otherMonthlyAmount = otherMonthlyAmount.replace(/:/, '.');
           amount = otherMonthlyAmount;
       }
       amount = parseFloat(amount);
       if ( isNaN(amount) ) {
           return 0;
       } else {
           var totalMonthlyAmountFormatted = frb.formatCurrency(currency, amount, language);
           $('.frb-monthly-total').text(totalMonthlyAmountFormatted);
           return amount;
       }
   };
   frb.validateMonthlyAmount = function() {
       var amount = frb.getMonthlyAmount();
       var currency  = frb.getCurrency( mw.centralNotice.data.country );
       var minAmount = frb.amounts.minimums[ currency ];
       if ( amount === null || isNaN(amount) || amount <= 0 || amount < minAmount ) {
           $('.frb-error-smallamount').show();
           return false;
       } else if ( amount > 10000 * minAmount ) {
           $('.frb-error-bigamount').show();
           return false;
       } else {
           $('.frb-error-smallamount, .frb-error-bigamount').hide();
           return true;
       }
   };
   // Submit form
   $('#frb-monthly-donate-yes, #frb-donate-monthly').on('click keypress', function(e) {
       if(e.which === 13 || e.type === 'click') {
           e.stopPropagation();
           frb.toggleMonthly(true);
           document.getElementById('input_amount_other').checked = true;
           document.getElementById('frb-ptf-checkbox').checked = false;
           form.otherAmount.value = form.otherMonthlyAmount.value;
           frb.submitForm(frb.storedOptions);
       }
   });
   $('#frb-monthly-donate-no').on('click keypress', function(e) {
       if(e.which === 13 || e.type === 'click') {
           e.stopPropagation();
           frb.submitForm(frb.storedOptions);
       }
   });
   $('#frb-donate').on('click keypress', function(e) {
       if ( e.which === 13 || e.type === 'click' ) {
           e.stopPropagation();
           // Only do step 3 if gift is one-time and payment method supports monthly
           if( frb.getRecurring(document.getElementById('frb-form')) || $('#frb-frequency-monthly').prop('disabled') ) {
               frb.submitForm(frb.storedOptions);
           } else if ( frb.validateForm(frb.storedOptions) ) {
               $('.frb-step1').animate({
                   'margin-left': -320
               }, 300);
               $('.close-optin').hide();
               $('.close-optin3').show();
               $('.frb-step2').animate({
                   'margin-left': 0
               }, 300);
           }
       }
   });
   /* End step functionality */
   // Make sure form elements don't overflow if expanded
   frb.stepVisible = function(){
       var divHeight = $('.frb-step2').height();
       $('#frb-form').animate({'height': divHeight + 60},100);
   };


   // Show RML form on Enter
   $('.frb-rml-link').keyup(function(e){
       if (e.keyCode == 13) {
           $('.frb-rml-form').toggle();
           $('#frb-rml-email').focus();
       }
   });
   // Focus for #input_amount_other
   $('.frb-amt-other').click(function() {
       document.getElementById('input_amount_other').checked = true;
       frb.updateFeeDisplay();
       $('#frb-amt-other-input').focus();
   });
   // Activate #input_amount_other radio when tabbing into #frb-amt-other-input
   $('#frb-amt-other-input').focus(function() {
       document.getElementById('input_amount_other').checked = true;
       frb.updateFeeDisplay();
   });
   frb.activateCTA = function(){
       if ( validAmount && validMethod ) {
           $('#frb-continue, #frb-monthly-donate-yes, #frb-monthly-donate-no, #frb-donate-monthly').addClass('active');
           if (validOptin) {
               $('#frb-donate').addClass('active');
           }
       } else {
           $('.frb-submit').removeClass('active');
       }
   };


   /* --- Nag/minimized banner functionality --- */
   // On Load
   var onLoad = true;
   var bannerOuterHeight = $('.frb').outerHeight( true );
   var stickyHeaderTop = bannerOuterHeight + $('.frb').offset().top + 200;
   // Intercept TOC clicks
   $('#toc ul > li a').on('click', function(e) {
       e.preventDefault();
       var anchor = $(this).attr('href').replace('#',);
       var offsetTop = parseFloat($("[id='"+anchor+"']").offset().top) - 120;
       $('body, html').animate({ scrollTop: offsetTop }, 10);
       window.location.hash = $(this).attr('href');
   });
   if (window.location.hash) {
       var agent = navigator.userAgent;
       setTimeout(function() {
           $('.frb-prevent-page-jump').css({
               'height' : bannerOuterHeight + 'px',
               'display': 'block'
           });
       }, 150);
       var hash = decodeURI(window.location.hash).replace('#',);
       hash = $("[id='"+hash+"']");
       var offsetTop = hash.offset().top - 120;
       offsetTop = (agent.indexOf('Chrome') > -1 || agent.indexOf('Firefox') > -1 || agent.indexOf('MSIE') > -1) ? offsetTop : offsetTop + bannerOuterHeight;
       offsetTop = (agent.indexOf('Edge') > -1) ? offsetTop + bannerOuterHeight : offsetTop;
       $('body, html').animate({ scrollTop: offsetTop }, 100, function() {
           onLoad = false;
       });
   } else {
       onLoad = false;
   }
   $(window).on('resize', function() {
       bannerOuterHeight = $('.frb').outerHeight( true );
       stickyHeaderTop = bannerOuterHeight + $('.frb').offset().top + 200;
   });
   function minimizeScrollFunction() {
       if( $(window).scrollTop() > stickyHeaderTop ) {
           $('.frb-prevent-page-jump').css({
               'height'  : bannerOuterHeight + 'px'
           });
           if (!onLoad) {
               // No onload, show jump
               $('.frb-prevent-page-jump').show();
           }
           $('.frb').addClass('frb--minimized');
           $('.frb').removeClass('frb--in-article');
       } else {
           $('.frb').addClass('frb--in-article');
           $('.frb-prevent-page-jump').css('display', 'none');
           $('.frb').removeClass('frb--minimized frb-rml-displayed');
       }
   }
   var scrollPos;
   frb.clicked = false;
   $(window).on('load scroll resize', function() {
       scrollPos = $(window).scrollTop();
       // Keep frb minimized until clicked or the user scrolls to the top of the page.
       if ( frb.clicked === false ) {
           minimizeScrollFunction();
       }
       // Restore default state
       if ( scrollPos === 0 ) {
           $('.frb').addClass('frb--in-article');
           $('.frb').removeClass('frb--minimized frb--fixed frb-rml-displayed');
           $('.frb-prevent-page-jump').css('display', 'none');
           frb.clicked = false;
       }
   });
   frb.clickedYes = function(e) {
       if ( $('.frb').hasClass('frb--minimized') ) {
           $('.frb').addClass('frb--fixed');
           $('.frb').removeClass('frb--minimized frb--in-article frb-rml-displayed');
           frb.clicked = true;
           frb.extraData.clickedNag = 1;
       }
   };
   frb.clickedNo = function(e) {
       e.stopPropagation();
       $('.frb').addClass('frb-rml-displayed');
       frb.removeMinimizedListener();
   };
   frb.addMinimizedListener = function(){
       $('body').on('click keypress', '.frb--minimized', function(e){
           if (e.which === 13 || e.type === 'click') {
               frb.clickedYes(e);
           }
       });
   };
   frb.addMinimizedListener(); // Enable by default
   frb.removeMinimizedListener = function(){
       $('body').off('click keypress', '.frb--minimized');
   };
   // The nag’s yes/no functionality
   $('#yes-button').on('click keypress', function(e) {
       if (e.which === 13 || e.type === 'click') {
           frb.clickedYes(e);
       }
   });
   $('#no-button').on('click keypress', function(e) {
       if (e.which === 13 || e.type === 'click') {
           frb.clickedNo(e);
       }
   });
   $('.close-rml').on('click keypress', function(e) {
       if (e.which === 13 || e.type === 'click') {
           $('.frb').removeClass('frb-rml-displayed');
           frb.clicked = false;
       }
   });
   /* Hide banner outside of main namespace (and Main Page, for sites where that isn't in main namespace) */
   if ( mw.config.get('wgNamespaceNumber') > 0 && !mw.config.get('wgIsMainPage') ) {
       mw.centralNotice.bannerData.hideResult = true;
       mw.centralNotice.bannerData.hideReason = 'namespace';
   }
   /* Hide banner on mobile site, in case wrong device settings were chosen */
   if ( mw.config.get('skin') === 'minerva' ) {
       mw.centralNotice.bannerData.hideResult = true;
       mw.centralNotice.bannerData.hideReason = 'other';
   }
   if (!mw.centralNotice.bannerData.hideResult) {
       frb.show();
   }
   $( function() {
     $( "#progressbar" ).progressbar({
       value: 37
     });
   } );

}); </script>