MediaWiki:Centralnotice-template-B1920 120220 en6C dsk p2 sm amt cnt

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search

<style> /* Hide when editing */ .action-edit .frb, .ve-activated .frb {

   display: none !important;

}

/* Hide when printed */ @media print {

   .frb {
       display: none !important;
   }

}

.frb {

   font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Oxygen-Sans", Ubuntu, Cantarell, Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;

}

  1. centralNotice.collapsed .frb {
   display: none;

}

/* z-index override for #siteNotice now having .mw-body-content class [1] */

  1. siteNotice {
   z-index: auto;

}

/* z-index override for German Wikipedia */ .mw-body {

   z-index: auto;

}

  1. toc,

.toc {

   clear: left;

}

/* Box-sizing */ .frb, .frb *, .frb *:before, .frb *:after {

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

}

.frb button {

   background: transparent;
   border: 0;
   cursor: pointer;

}

/* Inline banner styles


*/

  1. frb-inline {
   display: table;
   position: relative;
   background: white;
   color: black;
   font-size: 14px;
   margin: 12px 0 38px;
   border: 5px solid #900;
   -webkit-transition: all .2s ease-in-out;
   -moz-transition: all .2s ease-in-out;
   -o-transition: all .2s ease-in-out;
   -ms-transition: all .2s ease-in-out;
   transition: all .2s ease-in-out;

}

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

   #frb-inline {
       float: left;
       width: 40%;
       margin-top: 5px;
       /*align with article text*/
       margin-right: 16px;
   }
   body.rtl #frb-inline {
       float: right;
       margin-right: 0;
       margin-left: 16px;
   }
   /* Override for where it should be full width e.g. on Main Page */
   #frb-inline.frb-fullwidth {
       float: none;
       width: 100%;
       margin-top: 0;
       margin-right: 0;
   }

}

/* --- Top bar --- */

.frb-inline-topbar {

   width: 100%;
   padding: 6px 10px 9px 10px;
   text-align: center;
   background-color: #900;
   color: #fff;
   display: inline-block;
   z-index: 999;
   font-weight: 600;
   font-size: 16px;
   line-height: 1.125;
   /*18px @16px*/

}

/* --- Main content --- */

.frb-inline-main {

   padding: 14px 16px 16px;

}

.frb-inline-message {

   font-size: 16px;
   line-height: 1.5625;
   /*25px @16px*/
   display: block;

}

.frb-inline-message .frb-icon-info {

   margin-bottom: -2px;
   margin-right: 2px;

}

/* --- Form legends --- */ .frb-form {

   position: relative;

}

.frb-legend {

   margin: 0;
   padding: 6px 0 8px;
   width: 100%;
   text-align: center;
   font-size: 14px;
   line-height: 1.2142857143;
   /*17px @14px*/
   color: #54595d;
   font-weight: normal;
   text-transform: none;

}

.frb-form fieldset.frb-haserror legend {

   color: #d33;
   display: block;
   font-weight: 600;

}

  1. frb-inline ul {
   margin: 0;

}

.frb-form fieldset {

   width: 100%;
   margin: 12px auto 0;
   padding: 0;
   border: none;

}

/*less padding to use less vertical height*/ .frb-form .frb-methods {

   margin-top: 6px;

}

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

.frb-btn-wrapper {

   margin-left: -6px !important;
   width: calc(100% + 12px) !important;

}

.frb-optin ul.frb-btn-wrapper {

   margin-top: 12px;

}

.frb .frb-btn,

  1. frb-amt-other-label {
   display: block;
   min-height: 48px;
   margin: 0 auto;
   padding: 15px 6px;
   background-color: #f8f9fa;
   color: #222;
   border: 1px solid #9aa0a7;
   border-radius: 2px;
   outline: 0;
   text-align: center;
   line-height: 1;
   /*16px @16px*/
   cursor: pointer;
   font-weight: 600;
   transition: background 100ms, color 100ms, border-color 100ms, box-shadow 100ms;

}

.frb .frb-btn:hover,

  1. frb-amt-other-label:hover {
   background-color: #fff;
   color: #444;
   border-color: #a2a9b1;

}

.frb .frb-btn:active,

  1. frb-amt-other-label:active {
   background-color: #d9d9d9;
   color: #000;
   border-color: #7d8389;

}

/* Adjust padding for buttons with logo, e.g. payment methods */ .frb-methods .frb-btn-logo {

   padding: 2px 4px;

}

.frb-btn svg {

   max-width: 100%;

}

.frb-logo-paypal-usd {

   margin-bottom: -6px;

}

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

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

}

.frb-form input[type="radio"]:checked+#frb-amt-other-label #frb-amt-other-input {

   border: none;
   color: #fff;
   box-shadow: 0 1px 0 0 #fff;

}

.frb-btn:focus, .frb-submit:focus, .frb-input:focus,

  1. frb-amt-other-label:focus {
   outline: 0;
   border-color: #36c;
   box-shadow: inset 0 0 0 1px #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-submit:focus {

   box-shadow: inset 0 0 0 2px #36c, inset 0 0 0 3px #fff;
   border-color: #36c !important;

}

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

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

}

.frb-form input[type="radio"]:checked+#frb-amt-other-label #frb-amt-other-input {

   background-color: transparent;
   color: #fff;

}

/* Blue buttons */ .frb-methods .frb-btn,

  1. frb-nag .frb-btn {
   color: #36c;

}

.frb-methods .frb-btn:active,

  1. frb-nag .frb-btn:active {
   color: #2a4b8d;

}

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

   width: 100%;
   display: block;
   margin-top: 8px;
   padding: 16px 2px;
   color: #36c;
   background-color: #f8f9fa;
   border: 1px solid #a2a9b1;
   cursor: default;
   border-radius: 2px;
   font-size: 16px;
   font-weight: 600;
   line-height: 1;
   transition: background 100ms, color 100ms, border-color 100ms, box-shadow 100ms;

}

.frb-submit.active {

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

} .frb-submit.active:hover {

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

}

.frb-inline-rml-form .frb-submit {

   padding: 9px 2px;
   font-size: 14px;

}

/* Hide radio buttons. Based on http://jqueryui.com/button/#radio */ .frb-frequency li input[type="radio"], .frb-amounts li input[type="radio"], .frb-optin li 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;

}

/* --- Buttons layout --- */

.frb-form fieldset ul {

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

}

.frb-form fieldset ul li {

   display: table-cell;
   vertical-align: top;
   padding: 0 6px;

}

/* --- Frequency buttons appearance --- */

.frb-frequency li {

   display: table-cell;
   padding: 0 7px 0 0;
   vertical-align: top;

}

.frb-frequency label {

   display: block;
   width: 100%;

}

.frb-frequency label, .frb-amounts li label {

   font-size: 16px;
   line-height: 1;

}

/* --- Other amount --- */

  1. frb-amt-other-label {
   position: relative;
   padding: 18px 8px 8px;

}

  1. frb-amt-other-input {
   margin: 0;
   background: transparent;
   border: none;
   width: 100%;
   font-size: 16px;
   text-align: center;
   direction: ltr;
   -moz-appearance: textfield;
   /* remove number spinner in Firefox */
   box-shadow: 0 1px 0 0 #444;

}

  1. frb-amt-other-input:focus {
   outline: none;

}

.frb-amt-other-span {

   position: absolute;
   top: 5px;
   font-size: 12px;
   width: 100%;
   line-height: 1;
   left: 0;
   text-align: center;

}

/* Remove number spinner Safari and Chrome */

  1. frb-amt-other-input::-webkit-inner-spin-button,
  2. frb-amt-other-input::-webkit-outer-spin-button {
   -webkit-appearance: none;
   margin: 0;

}

/* --- 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-top: 16px;
   width: 100%;
   padding-left: 26px;
   padding-top: 1px;
   cursor: pointer;
   font-size: 14px;
   font-weight: 600;
   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;

}

/* --- Payment method buttons appearance --- */

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

   display: none !important;

}

.frb-methods .frb-btn {

   width: 100%;
   font-size: 16px;
   font-weight: bold;

}

.frb-methods .frb-btn img {

   display: block;
   margin: 0 auto;
   max-height: 16px;
   max-width: 100%;

}

/* --- Credit card logos --- */

.frb-pm-cc .frb-btn {

   padding: 0px;

}

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

   .frb-pm-cc .frb-btn {
       padding: 0 2px;
   }

}

.frb-pm-cc svg {

   display: none;
   width: 20%;
   min-width: 30px;
   max-width: 40px;
   max-height: 24px;
   margin: 0 3px;
   border-radius: 2px;
   box-shadow: 0 1px 1px #aaa;

}

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

   .frb-pm-cc svg {
       min-width: 26px;
   }

}

.frb-cctypes-vmad .frb-btn, .frb-cctypes-vmaj .frb-btn, .frb-cctypes-vma .frb-btn, .frb-cctypes-vm .frb-btn {

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

}

.frb-cctypes-vmad span, .frb-cctypes-vmaj span, .frb-cctypes-vma span, .frb-cctypes-vm span {

   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;

}

/* --- Footer / Small Print --- */

.frb-smallprint {

   margin-top: 12px;
   font-size: 12px;
   line-height: 1.5; /*18px @12px*/
   color: #54595d;
   font-weight: normal;

}

.frb-smallprint a {

   color: #54595d;
   text-decoration: underline;

}

.frb-smallprint a:hover, .frb-smallprint a:focus {

   color: #000;

}

.recurring-details {

   display: none;

}

.frb-optin .frb-smallprint {

   margin-top: 8px;
   font-size: 11px;
   line-height: 1.4;

}

/* --- Close and RML Options --- */

.frb-inline-bottombar {

   position: absolute;
   width: 100%;
   text-align: center;

}

.frb-inline-rml-wrapper {

   display: inline;
   position: relative;

}

.frb-inline-close, .frb-inline-rml-form-close {

   color: #54595d;

} .frb-inline-close:hover, .frb-inline-close:focus, .frb-inline-rml-form-close:hover, .frb-inline-rml-form-close:focus {

   color: #000;

}

.frb-inline-close, .frb-inline-rml-link, .frb-inline-rml-form-close {

   text-transform: uppercase;
   line-height: 1.2857142857;

}

.frb-inline-close, .frb-inline-rml-link {

   margin-top: 8px;
   padding: 5px 8px 6px;
   font-size: 12px;
   letter-spacing: 0.25px;

}

/* Close button icon */ .frb-inline-close-icon {

   margin-bottom: -2px;
   width: 10px;

} .frb-inline-close-icon g {

   stroke: currentColor;

}

/* RML text color */ .frb-inline-rml-link {

   color: #36c;
   font-weight: bold;

} .frb-inline-rml-link:hover {

   color: #447ff5;

}

/* RML clock icon */ .frb-inline-rml-icon {

   margin-bottom: -3px;
   width: 13px;

} .frb-inline-rml-icon path {

   fill: currentColor;

} .frb-inline-rml-icon circle {

   stroke: currentColor;

}

/* --- Remind Me Later (inline) --- */ .frb-rml-disabled .frb-inline-rml-wrapper {

   display: none;

}

.frb-inline-rml-link {

   position: relative;
   text-transform: uppercase;
   display: inline-block;

}

.frb-inline-rml {

   display: none;
   position: absolute;
   cursor: default;
   text-align: left;
   padding: 7px 14px;
   top: 28px;
   right: -142px;
   z-index: 10000;
   width: 320px;
   background: #fff;
   color: #000;
   border: 1px solid #aaa;
   border-radius: 2px;
   box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.15);
   text-transform: none;

}

body.rtl .frb-inline-rml {

   left: -142px;
   right: auto;

}

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

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

}

body.rtl .frb-inline-rml-form:before, body.rtl .frb-inline-rml-form:after {

   left: 148px;
   right: auto;

}

.frb-inline-rml-form:before {

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

}

.frb-inline-rml-form:after {

   border-bottom-color: #fff;
   border-width: 10px;
   margin-right: 1px;
   /*Triangle pixel glitch fix (margin left and right)*/
   margin-left: 0;

}

/* Triangle pixel glitch fix for RTL */ body.rtl .frb-inline-rml-form:after {

   margin-right: 0;
   margin-left: 1px;

}

.frb-input {

   background: #fff;
   width: 100%;
   display: block;
   padding: 7px 7px 6px;
   margin: 0;
   font-size: inherit;
   color: #000;
   border: 1px solid #9aa0a7;
   border-radius: 2px;

} .frb-input.frb-haserror {

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

}

.frb-inline-rml-done {

   text-align: left;

}

body.rtl .frb-inline-rml-done {

   text-align: right;

}

.frb-inline-rml-form-close-wrapper {

   padding-top: 4px;
   text-align: center;

}

.frb-inline-rml-form-close-icon {

   width: 10px;
   height: 10px;
   margin-bottom: -1px;

}

.frb-inline-rml-form-close-icon g {

   stroke: currentColor;

}

/* "Nag" banner styles


*/

div#frb-nag {

   display: none;
   position: fixed;
   width: 100%;
   bottom: 0;
   left: 0;
   z-index: 110;
   background: transparent;
   background-color: #fff;
   border-top: 1px solid black;
   text-align: center;
   color: #000;
   font-size: 15px;
   line-height: 1.2;
   transition: background-color 0.5s ease;
   font-family: -apple-system, 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'Lato', 'Helvetica', 'Arial', sans-serif;
   font-weight: 500;
   font-style: normal; /* needed for uk.wikipedia */
   -webkit-transition: margin .5s ease-in-out;
   -moz-transition: margin 1s ease-in-out;
   -o-transition: margin 1s ease-in-out;
   -ms-transition: margin 1s ease-in-out;
   transition: margin 1s ease-in-out;

}

  1. frb-nag {
   margin-bottom: -100%;

}

  1. frb-nag.reveal {
   margin-bottom: 0;

}


  1. frb-nag .frb-nag-link {
   position: relative;
   width: 100%;
   padding: 12.5px;
   max-width: 1200px;
   margin: auto;
   cursor: pointer;
   display: block;

}

  1. frb-nag:hover .frb-nag-link {
   text-decoration: none;

}

  1. frb-nag a {
   color: black !important;
   transition: color 0.5s ease;

}

  1. frb-nag a:hover {
   text-decoration: none !important;

}

  1. frb-nag.frb--color-change a {
   color: white !important;

}

  1. frb-nag.frb--color-change {
   background-color: #54595D;

}

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

  1. frb-nag .frb-nag-close {
   display: inline-block;
   position: absolute;
   right: 12.5px;
   top: 12.5px;
   z-index: 999;
   font-size: 12px;
   cursor: pointer;
   padding: 0;

} body.rtl #frb-nag .frb-nag-close {

   right: auto;
   left: 12.5px;

}

  1. frb-nag.frb--minimized .frb-nag-close {
   top: 50%;
   -moz-transform:    translateY(-50%);
   -ms-transform:     translateY(-50%);
   -webkit-transform: translateY(-50%);
   transform:         translateY(-50%);  

}

  1. frb-nag .frb-nag-close:hover .frb-icon g {
   stroke: #000000;
   transition: all 0.5s ease;

}

  1. frb-nag.frb--color-change .frb-nag-close .frb-icon {
   opacity: .75;

}

  1. frb-nag.frb--color-change .frb-nag-close:hover .frb-icon {
   opacity: 1;

}

  1. frb-nag.frb--color-change .frb-nag-close .frb-icon g,
  2. frb-nag.frb--color-change .frb-nag-close:hover .frb-icon g {
   stroke: white;

}

  1. frb-nag .frb-icon-close {
   width: 16px;
   height: 16px;

}


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

  1. frb-nag .frb-message {
   transition: background-color 0.5s ease;

}

  1. frb-nag .frb-message p {
   margin: 0;

}

/* Minimized styles */

  1. frb-nag.frb--minimized .frb-main {
   text-align: center;

}

/* --- Plea --- */

  1. frb-nag .frb-plea {
   background-color: #FFC9C9;
   border-radius: 10px;
   padding: 15px 30px;
   display: table;
   margin-top: 10px;

}

  1. frb-nag .frb-wikipedia-logo,
  2. frb-nag .frb-plea-message,
  3. frb-nag .frb-plea-button {
   display: table-cell;
   vertical-align: middle;

}

  1. frb-nag .frb-wikipedia-logo {
   width: 130px;

}

  1. frb-nag .frb-wikipedia-logo svg {
   width: 100%;
   opacity: .75;

}


  1. frb-nag .frb-plea-message {
   text-align: left;
   line-height: 1.4;
   width: calc(100% - 305px);
   padding: 0 20px;

}

  1. frb-nag .frb-plea-button {
   width: 160px;

}


/* --- Button Style --- */

  1. frb-nag .frb-donate-button {
   display: block;
   background-color: #990000;
   color: white;
   font-size: 18px;
   white-space: nowrap;
   line-height: 1;
   text-transform: uppercase;
   padding: 8px 12px;
   border-radius: 5px;
   outline: 0;
   text-align: center;
   cursor: pointer;
   font-family: inherit;
   font-weight: 700;
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

}

  1. frb-nag .frb-donate-button:hover {
   background-color: #fff;
   color: #444;

}

  1. frb-nag .frb-donate-button:active {
   background-color: black;
   color: white;

}

  1. frb-nag .frb--minimized strong {
   font-size: 16px;

}

/*Minimized styles*/ /* Messages */

  1. frb-nag .frb-message__minimized {
   display: none;

}

  1. frb-nag .frb-message__maximized {
   display: block;

}

/* Minimized styles */

  1. frb-nag.frb--minimized .frb-message__minimized {
   display: block;

}

  1. frb-nag.frb--minimized .frb-message__maximized {
   display: none;

}

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

   display: none;
   margin-top: 8px;
   font-size: 14px;
   color: #d33;
   font-weight: 600;
   line-height: 1.3;

}

/* --- opt-in and email --- */

  1. frb-form fieldset.frb-optin {
   margin: 12px auto;

}

.frb-radio {

   cursor: pointer;
   float: left;
   height: 15px;
   margin: 6px 6px 0px 9px;

} body.rtl .frb-radio {

   float: right;

}

.frb-radio-label {

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

} body.rtl .frb-radio-label {

   text-align: right;

}

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

   color: #36c;

}

.frb-form .frb-optin {

   margin-bottom: 1px;

}

/* .frb-form .frb-optin li {

   display: block;
   clear: both;

} */

.frb-optin .frb-radio {

   margin: 4px 6px 0 0;

}

.frb-optin .frb-radio-label {

   float: right;
   width: calc(100% - 22px);
   white-space: normal;
   font-size: 14px;
   line-height: 19px;
   font-weight: normal;

}

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

   text-decoration: none;

}

.frb-optin-no-prompt {

   display: none;
   clear: both;
   margin-top: 8px;
   padding: 6px 6px 5px 6px;
   border: 1px solid #b32424;
   background-color: #fee7e6;
   border-radius: 2px;
   font-size: 14px;
   line-height: 1.2857142857; /*18px @14px*/
   font-weight: normal;

}

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

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

}

.frb-optin-no-prompt__yes {

   display: none;

}

.frb-optin-no-prompt__no {

   display: block;

}

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

   display: block;

}

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

   display: none;

}

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

   position: absolute;
   left: 0;
   top: 10px;
   padding: 0;
   color: #72777d;

} .frb-back:hover {

   color: #000;

}

.frb-icon-back path {

   stroke: currentColor;

} .frb-icon-back rect {

   fill: currentColor;

}

.frb-icon-back {

   height: 13px;
   width: 20px;

}

.frb-icon-lock {

   fill: currentColor;
   width: 14px;
   height: 14px;

}

/* --- Recurring upsell --- */

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

   padding-top: 24px;
   text-align: center;

}

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

   font-size: 17px;
   font-weight: bold;

}

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

   display: block;
   max-width: 380px;
   margin: 8px auto;
   display: block;
   font-size: 15px;
   line-height: 1.3;
   font-weight: normal;
   margin: 8px auto;

}

.frb-monthly-buttons {

   padding-top: 8px;

}

.frb-step-monthly-diff-amt-link {

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

} .frb-step-monthly-diff-amt-link:hover {

   color: #447ff5;

}

  1. frb-amt-monthly-other-input {
   width: auto;
   margin: 0 auto;
   text-align: center;

} </style>

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


/* 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 frb.amounts.minimums = {

   'USD' : 1,
   'CAD' : 1.33,
   'AUD' : 1.51,
   'NZD' : 1.58,
   'GBP' : 0.78,
   'EUR' : 0.93,
   'DKK' : 6.42,
   'HUF' : 282,
   'ILS' : 3.61,
   'INR' : 108,
   'JPY' : 112,
   'MYR' : 4.15,
   'NOK' : 8.4,
   'PLN' : 3.72,
   'RON' : 3.99,
   'SEK' : 9.08,
   'UAH' : 28,
   'ZAR' : 15,
   // Note Latam Astropay currencies have higher minimums - 1.50 USD
   'BRL' : 6.23,
   'ARS' : 58.5,
   'CLP' : 1035,
   'COP' : 4640,
   'MXN' : 28.5,
   'PEN' : 3.3,
   'UYU' : 57,
   'CHF' : 1

};

frb.amounts.options7 = {

   // Big English
   'USD' : [2.75, 5, 10, 20, 30, 50, 100],
   'CAD' : [2.75, 5, 10, 20, 30, 50, 100],
   'AUD' : [2.75, 5, 10, 20, 30, 50, 100],
   'NZD' : [2.75, 5, 10, 20, 30, 50, 100],
   'GBP' : [2, 5, 10, 20, 30, 50, 100],
   'EUR' : {
       'default' : [2, 5, 10, 20, 30, 50, 100]
   },
   // Others
   'DKK' : [20, 100, 150, 200, 300, 500, 1000],
   'HUF' : [500, 1000, 2000, 4000, 5000, 7000, 10000],
   'ILS' : [10, 50, 100, 200, 300, 500, 1000],
   'INR' : [150, 300, 500, 1000, 1500, 3000, 5000],
   'JPY' : [300, 1000, 1500, 2000, 3000, 5000, 10000],
   'MYR' : [10, 30, 50, 100, 200, 300, 500],
   'NOK' : [20, 100, 150, 200, 500, 750, 1000],
   'PLN' : [10, 20, 50, 100, 200, 300, 500],
   'RON' : [10, 50, 75, 100, 200, 300, 500],
   'SEK' : [30, 50, 100, 200, 300, 500, 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, 250, 500],
   'ARS' : [60, 100, 200, 400, 1000, 1500, 2000],
   'CLP' : [1500, 2500, 5000, 10000, 15000, 25000, 50000],
   'COP' : [7000, 10000, 20000, 50000, 100000, 150000, 200000],
   'MXN' : [35, 50, 100, 200, 500, 750, 1000],
   'PEN' : [10, 30, 50, 150, 200, 275, 700],
   'UYU' : [70, 100, 200, 400, 1000, 1500, 2000],
   'CHF' : [3, 5, 10, 25, 50, 100, 200]

};

// 5 amount options. Used e.g. on mobile // Usual formula: take 1st, 3rd, 4th, 6th and 7th from asks7 */ frb.amounts.options5 = {

   // Big English
   'USD' : [2.75, 16.36, 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' : 16.36,
   'CAD' : 15,
   'AUD' : 15,
   'NZD' : 15,
   'GBP' : 10,
   'EUR' : 10,
   // Others
   'DKK' : 100,
   'HUF' : 2500,
   'ILS' : 50,
   'INR' : 1000,
   'JPY' : 1500,
   'MYR' : 50,
   'NOK' : 100,
   'PLN' : 50,
   'RON' : 50,
   'SEK' : 100,
   'UAH' : 150,
   'ZAR' : 150,
   // Latin America
   'BRL' : 25,
   'ARS' : 200,
   'CLP' : 8000,
   'COP' : 30000,
   'MXN' : 150,
   'PEN' : 40,
   'UYU' : 300,
   'CHF' : 15

};

// '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,
   'EUR' : {
       'default' : 2
   },
   // Others
   'DKK' : 20,
   'HUF' : 500,
   'ILS' : 10,
   'INR' : 150,
   'JPY' : 300,
   'MYR' : 10,
   'NOK' : 20,
   'PLN' : 10,
   'RON' : 10,
   'SEK' : 30,
   'UAH' : 50,
   'ZAR' : 30,
   // Latin America
   'BRL' : 10,
   'ARS' : 60,
   'CLP' : 1500,
   'COP' : 7000,
   'MXN' : 35,
   'PEN' : 10,
   'UYU' : 70,
   'CHF' : 3

};

// 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' : 25,
   'JPY' : 35,
   'MYR' : 1,
   'NOK' : 3,
   'PLN' : 1.35,
   'RON' : 1.5,
   'SEK' : 3,
   'UAH' : 10,
   'ZAR' : 5,
   // Latin America
   'BRL' : 1.5,
   'ARS' : 15,
   'CLP' : 250,
   'COP' : 1000,
   'MXN' : 6,
   'PEN' : 1.2,
   'UYU' : 12

};

// If one-time amount <= left amount, suggest right amount for monthly frb.amounts.monthlySuggest = {

   'USD' : [ // also 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 ],
       [ 480, 50 ],
       [ Infinity, 0 ]
   ],
   'GBP' : [ // also EUR
       [ 1.99, 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 ],
       [ 480, 50 ],
       [ Infinity, 0 ]
   ],
   'INR' : [
       [ 300, 150 ],
       [ 500, 175 ],
       [ 1000, 250 ],
       [ 1500, 350 ],
       [ 3000, 500 ],
       [ 5000, 750 ],
       [ 10000, 1000 ],
       [ 25000, 2500 ],
       [ Infinity, 5000 ]
   ],
   'JPY' : [
       [ 1000, 300 ],
       [ 1500, 450 ],
       [ 2000, 500 ],
       [ 3000, 700 ],
       [ 5000, 900 ],
       [ 10000, 1100 ],
       [ 25000, 2500],
       [ 50000, 5000],
       [ 100000, 12000],
       [ 250000, 25000],
       [ 500000, 50000],
       [ 750000, 75000],
       [ Infinity, 100000]
   ],
   'SEK' : [
       [ 50, 25 ],
       [ 100, 30 ],
       [ 200, 50 ],
       [ 300, 70 ],
       [ 500, 90 ],
       [ 1000, 110 ],
       [ 2500, 250 ],
       [ 5000, 500 ],
       [ Infinity, 1000 ]
   ]

}; frb.amounts.monthlySuggest.EUR = frb.amounts.monthlySuggest.GBP; 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.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
   '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' : '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 = {

   'en' : {
       'US' : 'the U.S.',
       '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',
       'DK' : 'Denmark',
       'ES' : 'Spain',
       'FR' : 'France',
       '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' : 'd’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'
   },
   'es' : {
       'MX' : 'México',
       'PE' : 'Perú',
       'ES' : 'España'
   },
   'da' : {
       'AT' : 'i Østrig',
       'BE' : 'i Belgien',
       'DK' : 'i Danmark',
       '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',
       'SK' : 'i Slovakiet',
       'ZA' : 'i Sydafrika',
       'UA' : 'i Ukraine'
   },
   'nl' : {
       'NL' : 'in Nederland',
       'AT' : 'in Oostenrijk',
       'BE' : 'in België',
       'DK' : 'in Denemarken',
       '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ë',
       'SK' : 'in Slowakije',
       'ZA' : 'in Zuid-Afrika',
       'UA' : 'in Oekraïne'
   },
   'fr' : {
       'AT' : 'en Autriche',
       'BE' : 'en Belgique',
       'CH' : 'en Suisse',
       'DK' : 'au Danemark',
       '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',
       'SK' : 'en Slovaquie',
       'ZA' : 'en Afrique du Sud',
       'UA' : 'en Ukraine'
   },
   'de' : {
       'AT' : 'in Österreich',
       'BE' : 'in Belgien',
       'CH' : 'in der Schweiz',
       'DK' : 'in Dänemark',
       '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',
       'SK' : 'in der Slowakei',
       'ZA' : 'in Südafrika',
       'UA' : 'in der Ukraine'
   },
   'he' : {
       'AT' : 'באוסטרליה',
       'BE' : 'בבלגיה',
       'DK' : 'בדנמרק',
       'ES' : 'בספרד',
       'HU' : 'בהונגריה',
       'IL' : 'בישראל',
       'LV' : 'בלטביה',
       'LU' : 'בלוקסמבורג',
       'MY' : 'במלזיה',
       'NO' : 'בנורווגיה',
       'PL' : 'בפולין',
       'PT' : 'בפורטוגל',
       'RO' : 'ברומניה',
       'SK' : 'בסלובקיה',
       'ZA' : 'בדרום אפריקה',
       'UA' : 'באוקראינה'
   },
   'hu' : {
       'AT' : 'ausztriai',
       'BE' : 'belgiumi',
       'DK' : 'dániai',
       '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ā',
       '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',
       'DK' : 'i Danmark',
       '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',
       'SK' : 'i Slovakia',
       'ZA' : 'i Sør-Afrika',
       'UA' : 'i Ukraina'
   },
   'pl' : {
       'AT' : 'w Austrii',
       'BE' : 'w Belgii',
       'DK' : 'w Danii',
       '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',
       'DK' : 'na Dinamarca',
       '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',
       'SK' : 'na Eslováquia',
       'ZA' : 'na África do Sul',
       'UA' : 'na Ucrânia'
   },
   'ro' : {
       'AT' : 'din Austria',
       'BE' : 'din Belgia',
       'DK' : 'din Danemarca',
       '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' : 'в Дании',
       'HU' : 'в Венгрии',
       'IL' : 'в Израиле',
       'LV' : 'в Латвии',
       'LU' : 'в Люксембурге',
       'MY' : 'в Малайзии',
       'NO' : 'в Норвегии',
       'PL' : 'в Польше',
       'PT' : 'в Португалии',
       'RO' : 'в Румынии',
       'SK' : 'в Словакии',
       'ZA' : 'в Южной Африке',
       'UA' : 'в Украине'
   },
   'sk' : {
       'AT' : 'v Rakúsku',
       'BE' : 'v Belgicku',
       'DK' : 'v Dánsku',
       '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'
   },
   'uk' : {
       'AT' : 'у Австрії',
       'BE' : 'у Бельгії',
       'DK' : 'у Данії',
       'HU' : 'в Угорщині',
       'IL' : 'в Ізраїлі',
       'LV' : 'у Латвії',
       'LU' : 'у Люксембургу',
       'MY' : 'у Малайзії',
       'NO' : 'у Норвегії',
       'PL' : 'у Польщі',
       'PT' : 'у Португалії',
       'RO' : 'у Румунії',
       'SK' : 'у Словаччині',
       'ZA' : 'у ПАР',
       'UA' : 'в Україні'
   }

};

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øndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag' ],
   '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ę' ],
   'ru' : [ 'воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу' ],
   'uk' : [ 'неділі', 'понеділка', 'вівторка', 'середи', 'четверга', 'п’ятниц', 'суботи' ],
   'hu' : [ 'vasárnapon', 'hétfőn', 'kedden', 'szerdán', 'csütörtökön', 'pénteken', 'szombaton' ],
   'ro' : [ 'duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă' ],
   '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' ],
   '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' : [ 'neste domingo', 'nesta segunda-feira', 'nesta terça-feira', 'nesta quarta-feira', 'nesta quinta-feira', 'nesta sexta-feira', 'neste sábado'],
   'sk' : [ 'túto nedeľu', 'tento pondelok', 'tento utorok', 'túto stredu', 'tento štvrtok', 'tento piatok', 'túto 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 || {};

if ( !mw.centralNotice.adminUi ) { // T262693

   frb.loadedTime = Date.now();
   frb.didSelectAmount = false;
   frb.optinRequiredCountries =
       [ 'AT', 'BE', 'DK', 'ES', 'FR', 'GB', 'HU', 'IE', 'IT', 'IL',
         'LU', 'LV', 'NL', 'NO', 'PL', 'PT', 'RO', 'SE', 'SK', 'UA' ];
   frb.optinRequired = frb.optinRequiredCountries.indexOf(mw.centralNotice.data.country) !== -1;
   frb.maxUSD = 12000;
   frb.reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

}

/**

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

frb.submitForm = function(options, isEndowment) {

   var uri = new mw.Uri('https://payments.wikimedia.org/index.php/Special:GatewayFormChooser');
   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
   }
   /* 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.ffname ) {
       params.ffname = options.ffname;
   }
   if ( options.variant ) {
       params.variant = options.variant;
   }
   params.recurring = frb.getRecurring();
   params.currency_code = 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.uselang = 'es-419';
   }
   /* Adyen override. frb.ccAdyenCountries is defined in LocalizeJS-2017.js */
   if ( params.payment_method === 'cc' && frb.ccAdyenCountries.indexOf( params.country ) !== -1 ) {
       params.gateway = 'adyen';
   }
   /* 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 ( $('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 ) {
       params.utm_medium = 'endowment';
       params.appeal = 'EndowmentQuote';
   } else {
       params.utm_medium = 'sitenotice';
   }
   params.utm_campaign = mw.centralNotice.data.campaign || 'test';
   params.utm_source   = frb.buildUtmSource(params);
   frb.extraData.vw = window.innerWidth;
   frb.extraData.vh = window.innerHeight;
   frb.extraData.time = Math.round( (Date.now() - frb.loadedTime)/1000 );
   if ( !$.isEmptyObject( frb.extraData ) ) {
       params.utm_key = frb.buildUtmKey( frb.extraData );
   }
   /* Link to Banner History if enabled */
   var mixins = mw.centralNotice.getDataProperty( 'mixins' );
   if ( mixins && mixins.bannerHistoryLogger ) {
       params.bannerhistlog = mw.centralNotice.bannerHistoryLogger.id;
   }
   uri.extend(params);
   // Set a cookie with current location so we can return here
   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( uri );
       });
   } else {
       frb.goToPayments( uri );
   }

};

frb.goToPayments = function( uri ) {

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

};

/**

* Check the form for errors.
* Called on submission, can also be called on input.
*/

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 utm_source for analytics.
*
* Own function so it can be overriden for weird tests
*
* @param  {Object} params
* @return {string} utm_source
*/

frb.buildUtmSource = function(params) {

   var utm_source;
   var fullDottedPaymentMethod = params.payment_method;
   if ( params.recurring ) {
       fullDottedPaymentMethod = 'r' + fullDottedPaymentMethod;
   }
   if ( params.payment_submethod ) {
       fullDottedPaymentMethod = fullDottedPaymentMethod + '.' + params.payment_submethod;
   }
   utm_source = mw.centralNotice.data.banner;
   // Keeping opt-in in utm_source for safety for now
   // Eventually remove it, or move to utm_key?
   if ( params.opt_in ) {
       utm_source += '_optIn' + params.opt_in;
   }
   utm_source += '.no-LP.' + fullDottedPaymentMethod;
   return utm_source;

};

/**

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

frb.buildUtmKey = 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
* @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;
   }
   // Adyen iDEAL
   if ( options.submethod === 'rtbt_ideal' ) {
       return true;
   }
   if ( options.method === 'cc' ) {
       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 );

};

/**

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

frb.shouldShowBanner = function() {

   mw.centralNotice.bannerData.hideResult = false;
   /* 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 if on wrong site (desktop/mobile) in case wrong device settings were chosen */
   var bannerName = mw.centralNotice.data.banner,
       skin = mw.config.get('skin');
   if (
        ( bannerName.indexOf('_dsk_') !== -1 && skin === 'minerva' ) ||
        ( bannerName.indexOf('_m_') !== -1 && skin !== 'minerva' )
   ) {
       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 == */

/**

* 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' : 'vmaj',
   'MY' : 'vmaj',
   'NO' : 'vma',
   'PL' : 'vma',
   'RO' : 'vma',
   'SE' : 'vma',
   'UA' : 'vma', // Adyen
   'ZA' : 'vm',
   'IN' : 'vmar' // dLocal

};

/**

* 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) {

   // Hide recurring completely for some countries
   if ( 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', 'IN'], // Bank Transfer (Astropay)
       'cash'     : ['BR', 'MX', 'AR', 'CO', 'UY']  // 'Cash' methods (Astropay)
   };
   // 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 = 'Boletos';
       }
       if (country === 'UY') {
           cashTranslation = 'RedPagos';
       }
   } else if (language === 'pt') {
       if (country === 'BR') {
           btTranslation   = 'Transferência Bancária';
           cashTranslation = 'Boletos';
       }
   } else if (language === 'es') {
       if (country === 'AR') {
           btTranslation   = 'Transferência Bancária';
           cashTranslation = 'Efectivo';
       }
       if (country === 'CL') {
           btTranslation   = 'WebPay';
       }
       if (country === 'CO') {
           btTranslation   = 'PSE Pagos';
           cashTranslation = 'Efectivo';
       }
       if (country === 'MX') {
           cashTranslation = 'Efectivo';
       }
       if (country === 'UY') {
           cashTranslation = 'RedPagos';
       }
   }
   $('.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 ) { // country is in the list
           $methodbutton.show();
       } else {
           $methodbutton.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} baseUrl     URL of link (function will add language parameter)
*/

frb.makeLink = function( selector, baseUrl ) {

   var url = baseUrl + '&language=' + mw.config.get( 'wgUserLanguage' ); // TODO: pt-br and es-419
   $( selector ).each( function() {
       var $link = $( '<a></a>' );
       $link.html( $( this ).html() );
       $link.attr( { href: url, target: '_blank' } );
       $( this ).replaceWith( $link );
   });

};

/**

* 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' ]
       },
       ordinalWords = {
           'en' : [ , 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth' ]
       },
       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 ];
       }
   };
   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 ) {
               var seenCount = diet.val.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 ) );
           }
       }
   } catch ( ex ) {
       // do nothing - localStorage is configured not to let us read it, or mixin not set
   }

};

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 country  = mw.centralNotice.data.country;
   var currency = frb.getCurrency(country);
   // Payment methods
   frb.localizeMethods(country);
   frb.checkMethodOutages(country);
   // 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% with formatted "average" amount
   var avgString, 
       average = frb.pickAmounts(frb.amounts.averages, currency, country);
   if ( frb.textAmountIsoCountries.indexOf(country) !== -1 ) {
       avgString = average + ' ' + currency;
   } else {
       avgString = frb.formatCurrency(currency, average, language).replace(/\.$/, ); // strip any period from end for use in running text
   }
   $('.frb').each(function(index){
       var newHtml = $(this).html().replace(/%AVERAGE%/g, '<frb-amt>' + avgString + '</frb-amt>');
       $(this).html(newHtml);
   });
   // Replace %MINIMUM% with formatted "if everyone" amount
   var ifString,
       ifEveryone = frb.pickAmounts(frb.amounts.ifEveryone, currency, country);
   if ( frb.textAmountIsoCountries.indexOf(country) !== -1 ) {
       ifString = ifEveryone + ' ' + currency;
   } else {
       ifString = frb.formatCurrency(currency, ifEveryone, language).replace(/\.$/, ); // strip any period from end for use in running text
   }
   $('.frb').each(function(index){
       var newHtml = $(this).html().replace(/%MINIMUM%/g, '<frb-amt>' + ifString + '</frb-amt>');
       $(this).html(newHtml);
   });
   /* 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:     language,
           uselang:      language,
           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', 'https://foundation.wikimedia.org/wiki/Special:LandingCheck?basic=true&landing_page=Donor_privacy_policy' );
   frb.makeLink( '.frb-link-tax',     'https://donate.wikimedia.org/wiki/Special:LandingCheck?basic=true&landing_page=Tax_deductibility' );
   frb.makeLink( '.frb-link-cancel',  '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();
   }
   // Where Remind Me Later should be shown
   var rmlCountries = ['US', 'CA', 'GB', 'IE', 'AU', 'NZ',
                       'SE', 'IT', 'NL', 'JP', 'FR'];
   var rmlLanguages = ['en', 'fr', 'nl', 'ja', 'it', 'sv'];
   var rmlEnabled = 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;

};


frb.storedOptions = {};

frb.setMethod = function (options) {

   frb.storedOptions = options;
   $('.frb-step-1').fadeOut('fast', function () {
       if ( frb.shouldShowRecurring(frb.storedOptions, mw.centralNotice.data.country) ) {
           $('.frb-frequency, .recurring-details').show();
       }
       if ( frb.optinRequired ) {
           $('.frb-optin').show();
       }
       $('.frb-step-2').fadeIn('fast');
   });

};

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({});
       }
   } 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.postReminderForm = function () {

   // Create the iframe for the form and use it as the form's target
   var frameName = "remindFrame";
   var $form = $(".frb-inline-rml-form 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();

};

frb.postNagReminderForm = function () {

   // Create the iframe for the form and use it as the form's target
   var frameName = "nagRemindFrame";
   var $form = $(".frb-nag-rml-form 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();

};

frb.getCurrentDate = function () {

   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;
   }
   today = mm + '/' + dd + '/' + yyyy;
   return today;

};

frb.initReminderForm = function () {

   $('.frb-inline-rml-form input[name=rml_country]').val(mw.centralNotice.data.country);
   $('.frb-inline-rml-form input[name=rml_language]').val(mw.config.get('wgUserLanguage'));
   $('.frb-inline-rml-form input[name=rml_submitDate]').val(frb.getCurrentDate());
   $('.frb-inline-rml-form input[name=rml_segment]').val(Math.floor((Math.random() * 100) + 1));
   $('.frb-nag-rml-form input[name=rml_country]').val(mw.centralNotice.data.country);
   $('.frb-nag-rml-form input[name=rml_language]').val(mw.config.get('wgUserLanguage'));
   $('.frb-nag-rml-form input[name=rml_submitDate]').val(frb.getCurrentDate());
   $('.frb-nag-rml-form input[name=rml_segment]').val(Math.floor((Math.random() * 100) + 1));
   $('.frb-inline-rml-link').on('click', function (e) {
       $('.frb-inline-rml').toggle();
       // Use standard JS focus() method not jQuery, because of IE10 scrolling bug
       // https://phabricator.wikimedia.org/T162049
       $('.frb-inline-rml .email_input').get(0).focus();
       return false;
   });
   $('.frb-nag-rml-link').on('click', function (e) {
       $('.frb-nag-rml').toggle();
       $('.frb-nag-rml .email_input').get(0).focus();
       return false;
   });
   $('.frb-inline-rml-form form button').bind('click', function (e) {
       if (mw.util.validateEmail($('.frb-inline-rml-form form input[name="Email"]').val())) {
           frb.postReminderForm();
           $('.frb-inline-rml-form form').hide();
           $('.frb-inline-rml-done').show();
           $('.frb-inline-rml').delay(2000).fadeOut(1000, function () {
               $('#frb-inline').hide();
               $('#frb-nag').hide();
           });
           mw.centralNotice.internal.hide.setHideWithCloseButtonCookies(); // Hide future banners for 7 days
           return false;
       } else {
           $('.frb-inline-rml-form form input[name="Email"]').addClass('frb-haserror');
           $('.frb-inline-rml-form .frb-error-invalidemail').show();
           $('.frb-inline-rml .email_input').get(0).focus();
           return false;
       }
   });
   $('.frb-nag-rml-form form button').bind('click', function (e) {
       if (mw.util.validateEmail($('.frb-nag-rml-form form input[name="Email"]').val())) {
           frb.postNagReminderForm();
           $('.frb-nag-rml-form form').hide();
           $('.frb-nag-rml .frb-inline-rml-done').show();
           $('.frb-nag-rml-done').show();
           $('.frb-nag-rml').delay(2000).fadeOut(1000, function () {
               $('#frb-nag').hide();
           });
           mw.centralNotice.internal.hide.setHideWithCloseButtonCookies(); // Hide future banners for 7 days
           return false;
       } else {
           $('.frb-nag-rml-form form input[name="Email"]').addClass('frb-haserror');
           $('.frb-nag-rml-form .frb-error-invalidemail').show();
           $('.frb-nag-rml .email_input').get(0).focus();
           return false;
       }
   });

};

frb.initNag = function () {

   function minimizeScrollFunction(nagRevealPosition) {
       if( $(window).scrollTop() > nagRevealPosition + 3000) {
           $('#frb-nag').addClass('frb--minimized');
       }
       if( $(window).scrollTop() > nagRevealPosition + 4000) {
           $('#frb-nag').addClass('frb--color-change');
       }
   }
   /* --- Code for sticky "nag" banner --- */
   $(window).scroll(function () {
       // Check if element exists on scroll
       // This check is important after email has been submitted in RML nag
       if ($('#frb-inline').length) {
           var nagRevealPosition = $('#frb-inline').offset().top + $('#frb-inline').outerHeight();
           if ($(window).scrollTop() < nagRevealPosition) {
               $('#frb-nag').finish();
               $('#frb-nag').removeClass('reveal');
               $('.frb-nag-rml').hide();
           } else {
               minimizeScrollFunction(nagRevealPosition);
               
               setTimeout(function () {
                   if (!$('#frb-nag').hasClass('reveal') && $(window).scrollTop() > nagRevealPosition) {
                       $('#frb-nag').addClass('reveal');
                   }
               }, 500);
           }
       }
   });
   $('.frb-nag-close').on('click', function (e) {
       $('#frb-nag').remove();
       return false;
   });
   $('#frb-nag').click(function () {
       frb.extraData.clickedNag = 1;
   });
   $('#frb-nag').show();

};

frb.insertInlineBanner = function () {

   // Place frb-inline in article: before first paragraph, or at top
   var $inlineBanner = $('#frb-inline');
   var $firstPara = $('#mw-content-text .mw-parser-output > p:first-of-type').first();
   var $infobox      = $('#mw-content-text .mw-parser-output > .infobox').first();
   var $thumb = $('#mw-content-text .mw-parser-output > .thumb').first();
   var mainPage = mw.config.get('wgIsMainPage');
   if ($infobox.length > 0 && !mainPage) {
       $infobox.after($inlineBanner);
   } else if ($firstPara.length > 0 && !mainPage) {
       $firstPara.before($inlineBanner);
   } else {
       $('#mw-content-text .mw-parser-output').prepend($inlineBanner);
       $inlineBanner.addClass('frb-fullwidth');
   }
   $inlineBanner.show().addClass('frb-country-' + mw.centralNotice.data.country);

};

$(function () {

   var language = mw.centralNotice.data.uselang;
   var country  = mw.centralNotice.data.country;
   var currency = frb.getCurrency(country);
   var validAmount, validStayInTouch;
   if ( !frb.optinRequired ) {
       validStayInTouch = 1;
   }
   var form = document.getElementById('frb-form');
   frb.extraData = {};
   frb.initReminderForm();
   frb.initAmountOptions();
   frb.localizeAmountOptions(frb.amounts.options7, currency, country, language, true);
   frb.localizeErrors();
   // new
   frb.activateCTA = function () {
       if (validAmount && validStayInTouch) {
           $('.frb-submit').addClass('active');
       } else {
           $('.frb-submit:not(#frb-btn-first-submit)').removeClass('active');
       }
   };
   // new
   $('.frb-amounts').on('input change', function () {
       frb.validateAmount();
       validAmount = 1;
       frb.updateFeeDisplay();
       frb.activateCTA();
   });
   $('.frb-optin').on('input change', function () {
       validStayInTouch = 1;
       frb.activateCTA();
   });
   frb.getMonthlyAmount = function () {
       var form = document.getElementById('frb-form');
       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-bigamount').hide();
           $('.frb-error-smallamount').show();
           return false;
       } else if ( amount > frb.maxUSD * minAmount ) {
           $('.frb-error-bigamount').show();
           return false;
       } else {
           $('.frb-error-smallamount, .frb-error-bigamount').hide();
           return true;
       }
   };
   frb.submitMonthly = function() {
       frb.extraData.monthlyUpsell = 1;
       frb.extraData.originalAmt = frb.getAmount().toString();
       
       frb.toggleMonthly(true);
       document.getElementById('frb-amt-other').checked = true;
       document.getElementById('frb-ptf-checkbox').checked = false;
       form.otherAmount.value = form.otherMonthlyAmount.value;
       frb.submitForm(frb.storedOptions);
   }
   // Close inline banner on click or return
   $('.frb-inline-close').on('click', function (e) {
       $('#frb-inline').hide();
       mw.centralNotice.hideBanner();
       e.stopPropagation();
   });
   // Close inline rml form on click or return
   $('.frb-inline-rml-form-close').on('click', function (e) {
       $('.frb-inline-rml').hide();
       e.stopPropagation();
   });
   $('.frb-amt-other').click(function () {
       document.getElementById('frb-amt-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('frb-amt-other').checked = true;
       frb.updateFeeDisplay();
   });
   frb.updateUpsellAsk = function(isOtherAmountStep) {
       var amount, feeAmount, upsellAmount,
           list = frb.amounts.monthlySuggest[currency];
       // If user is on third step (write a different amount) then get monthly amount if not, the the first form amount
       if (isOtherAmountStep !== undefined) {
           amount = frb.getMonthlyAmount(); 
       } else {
           amount = frb.getAmount(form);
       }      
       
       // If PTF is checked when we need to calculate the fee for that amount
       if ( $('#frb-ptf-checkbox').prop('checked') ) {
           amount = amount + frb.calculateFee(amount);
       }
       
       for (var i = list.length - 1; i >= 0; i--) {
           if ( amount <= list[i][0] ) {
               upsellAmount = list[i][1];
           }
       }
       // If user is in the upsell (second step) then the form.otherMonthlyAmount.value will be updated with the upsellAmount calculated
       if (isOtherAmountStep === undefined) {
           form.otherMonthlyAmount.value = upsellAmount;
       }
               
       // A formatted value will be returned
       var upsellAmountFormatted = frb.formatCurrency(currency, upsellAmount, language);
       // The value of the amount will be updated only if the user is in the upsell (second step)
       if (isOtherAmountStep === undefined) {
           $('.frb-upsell-ask').text(upsellAmountFormatted);
       }        
   };
   // Opt-in interaction
   $('.frb-optin').on('change', function() {
       frb.validStayInTouch = 1;
       $('.frb-optin').removeClass('frb-haserror');
       $('.frb-error-optin').hide();
       if ( $('#frb-optin-no').is(':checked') ) {
           $('.frb-optin-no-prompt').removeClass('is-positive');
           $('.frb-optin-no-prompt').slideDown();
       } else {
           $('.frb-optin-no-prompt').addClass('is-positive');
       }
   });
   // Go to the next step of the form
   $('#frb-btn-first-submit').on('click', function (e) {
       e.preventDefault();
       if ( frb.validateForm( frb.storedOptions ) ) {
           frb.updateUpsellAsk();
           // Only do monthly convert if initial selection is one-time and payment method supports monthly and upsell value is not 0 (meaning skip). If method is CC, use the payments wiki monthly convert variant.
           if ( frb.getRecurring(document.getElementById('frb-form')) || 
            !frb.shouldShowRecurring( frb.storedOptions, mw.centralNotice.data.country ) ||
            form.otherMonthlyAmount.value == 0 ||
            frb.storedOptions.method == 'paypal' ) {
               frb.submitForm(frb.storedOptions);
           } else if ( frb.storedOptions.method == 'cc' ) {
               frb.setMethod({ method:'cc', variant:'monthlyConvert' });
               frb.submitForm(frb.storedOptions);
           } else {                 
               $('.frb-step-2').fadeOut('fast', function () {
                   $('.frb-step-upsell').fadeIn('fast');
               });
           }
       } else {
           frb.extraData.validateError = 1;
       }
   });
   /* Back buttons */
   $('.frb-step-upsell .frb-back').on('click', function (e) {
       $('.frb-step-upsell').fadeOut('fast', function() {
           $('.frb-step-2').fadeIn('fast');
       });
       return false;
   });
   $('.frb-step-monthly-diff-amt .frb-back').on('click', function (e) {
       $('.frb-step-monthly-diff-amt').fadeOut('fast', function() {
           form.otherMonthlyAmount.value = ;
           frb.updateUpsellAsk();
           validAmount = 1;
           frb.activateCTA();
           frb.toggleMonthly(false);
           $('.frb-step-upsell').fadeIn('fast');
       });
       return false;
   });
   // Donate monthly other amount
   $('.frb-step-monthly-diff-amt-link').on('click', function (e) {
       form.otherMonthlyAmount.value = ;
       validAmount = 0;
       frb.activateCTA();
       frb.toggleMonthly(true);
       $('.frb-step-upsell').fadeOut('fast', function() {
           $('.frb-step-monthly-diff-amt').fadeIn('fast');
       });
       return false;
   });
   // Validate monthly other amount
   $('#frb-amt-monthly-other-input').on('input change', function (e) {
       if (frb.validateMonthlyAmount()) {
           validAmount = 1;
           frb.updateUpsellAsk(true);
       } else {
           validAmount = 0;
       }
       frb.activateCTA();
   });
   // Submit/"Donate now" buttons
   $('#frb-monthly-donate-yes').on('click', function (e) {
       frb.submitMonthly();
       return false;
   });
   $('#frb-monthly-donate-no').on('click', function (e) {
       frb.submitForm(frb.storedOptions);
       return false;
   });
   $('#frb-donate-monthly-other').on('click', function (e) {
       if (frb.validateMonthlyAmount()) {
           frb.submitMonthly();
       }
       return 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.insertInlineBanner();
       frb.initNag();
   }
   /* Social share tracking via hide banner cookie for enUS campaign experiment */
   if ( $.cookie("centralnotice_hide_socialshare") != null && country === 'US' ) {
       frb.extraData.socialShare = 1;
   }

}); </script>