MediaWiki:Centralnotice-template-B1617 0317 enNO dsk p2 sm dsn 2016

<style> /* For IE9 */ @media screen {

   #centralNotice {
      display: block !important;
   }

}

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

   display: none !important;

}

  1. centralNotice.collapsed .frbanner {
   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;

}

.frbanner {

   display: none;
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   z-index: 999;
   background: transparent;
   font-family: Arial, Helvetica, Verdana, sans-serif;
   cursor: pointer;

}

.frbanner.nag-reveal {

   position: fixed;
   display: block;
   z-index: 1000;

}

.frbanner.nag-reveal #frbanner-main {

   z-index: 1001;

}

  1. frbanner-main {
   display: table;
   width: 100%;
   height: 120px; /* need to set height for height 100% to work on elements within it */

}

.frbanner-message, .frbanner-callout, .frbanner-form-container {

   display: table-cell;
   height: 100%;
   vertical-align: middle;

}

/* --- Main message --- */ .frbanner-message {

   margin: 0;
   padding: 10px 10px 10px 40px;
   background: black url(//upload.wikimedia.org/wikipedia/donate/thumb/9/96/I.svg/40px-I.svg.png) no-repeat 10px 10px;
   background-size: 20px 20px;
   color: white;
   font-size: 17px;
   line-height: 1.2;
   font-weight: bold;
   text-align: justify;

}

.frbanner-message p {

   margin: 0;

}

@media (max-width: 982px) {

   .frbanner-message {
       font-size: 15px;
   }

}

.frbanner-greeting {

   font-style: italic;

}

.frbanner-highlight {

   background: #8c8c8c;
   padding: 1px 0;

}

/* --- Callout --- */

.frbanner-callout {

   width: 150px;
   padding: 15px 20px 15px 40px;
   text-align: center;
   font-weight: 300;
   line-height: 1.2em;
   background: #fff url(//upload.wikimedia.org/wikipedia/donate/6/6f/Arrow-tile.jpg) no-repeat 0 0;
   -webkit-background-size: 50% 100%;
   -moz-background-size: 50% 100%;
   -o-background-size: 50% 100%;
   background-size: 50% 100%;

}

.frbanner-callout p {

   margin: 0;
   padding-bottom: .5em;
   border-bottom: 4px solid #990000;

}

.frbanner-callout p strong {

   color: #990000;
   font-weight: bold;

}

@media (max-width: 959px) {

   .frbanner-callout { display:none; }

}

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

   display: none !important;

}

.frbanner-form-container {

   width: 356px;
   background: #e2e2e2;
   padding: 28px 7px 7px 7px;

} .frbanner-form {

   height: 100%;
   font-size: 14px;
   font-weight: bold;

} .frbanner-form table {

   width: 100%;
   height: 100%;
   border: none;

} .frbanner-form td {

   min-width: 55px;
   white-space: nowrap;
   margin: 0;
   padding: 2px;

}

.frbanner-form .amount-options {

   height: 20%;
   color: #091d41;

}

.frbanner-form #input_label_other input {

   direction: ltr;

}

.frbanner-form .paymentmethod-options td {

   text-align: center;
   padding: 8px 0;

} .frbanner-form button {

   display: inline-block;
   min-width: 110px;
   min-height: 26px;
   margin: 0 1px;
   background-color: #e7e7e7;
   box-shadow: 0 0 2px rgba(0,0,0,.2), inset 0 14px 16px rgba(255,255,255,.75), inset 0 0 7px #fff;
   border: none;
   border-radius: 0.3em;
   color: #646464;
   font-size: 12px;
   font-weight: bold;
   cursor: pointer;
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

} .frbanner-form button:hover {

   background-color: #fff;
   box-shadow: 0 0 2px rgba(0,0,0,.5), inset 0 14px 16px rgba(255,255,255,.75), inset 0 0 7px #fff;
   color: #367fb4;

}

/* --- Close Options --- */

  1. frbanner-close-options {
   display: inline-block;
   position: absolute;
   right: 1em;
   top: .5em;
   z-index: 999;
   font-size: .75em;
   text-transform: uppercase;

}

  1. frbanner-close,
  2. frbanner-remind {
   display: inline-block;
   cursor: pointer;
   opacity: .5;
   z-index: 999;

}

  1. frbanner-close:hover,
  2. frbanner-remind:hover {
   opacity: 1;

}

  1. frbanner-close-x {
   background: url('//upload.wikimedia.org/wikipedia/donate/3/32/Close-thin.png') no-repeat center center;
   width: 9px;
   height: 9px;
   float: right;
   display: block;
   margin: .2em .4em;

}

/* --- Legal and smallprint --- */

  1. frbanner-legal {
   display: none;
   position: relative;
   margin: 0;
   padding: 5px 40px;
   background: #e2e2e2;
   font-size: 11px;
   line-height: 1.2;
   font-weight: normal;

}

/* --- "Nag" --- */

  1. frbanner-nag {
   display: none;
   position: fixed;
   top: 0;
   left: 0;
   color: white;
   background-color: #990000;
   padding: 5px;
   width: 100%;
   text-align: center;
   font-size: 17px;
   font-weight: bold;
   box-shadow: 0 0 10px rgba(0,0,0,.5);

}

  1. frbanner-nag img {
   margin-right: .4em;
   height: 20px;
   width: 20px;

}

.frbanner-nag-link {

   vertical-align: middle;
   line-height: 26px;

} .frbanner-nag-link:hover {

   text-decoration: underline;

}

  1. frbanner-nag button {
   display: inline-block;
   margin: 0 0 0 1em;
   border-radius: .25em;
   background: #ffed41;
   box-shadow: 0 0 5px rgba(6,7,7,.3);
   color: #990000;
   font-size: .8em;
   padding: .25em .5em;
   font-weight: bold;
   cursor: pointer;
   vertical-align: middle;
   border: none;
   text-transform: uppercase;
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

}

  1. frbanner-nag button:hover {
   -moz-transform:    scale(1.1);
   -ms-transform:     scale(1.1);
   -webkit-transform: scale(1.1);
   transform:         scale(1.1);

}

.frbanner-nag-close {

   display: block;
   position: absolute;
   top: 0;
   right: 15px;
   width: 15px;
   height: 15px;
   background: url('//upload.wikimedia.org/wikipedia/donate/1/16/Close-light-trilogy.png') no-repeat center center;
   background-size: contain;
   cursor: pointer;
   opacity: 0.8;
   margin: 10px;
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

} .frbanner-nag-close:hover {

   opacity: 1;
   -moz-transform:    scale(1.1);
   -ms-transform:     scale(1.1);
   -webkit-transform: scale(1.1);
   transform:         scale(1.1);

}

/* --- Remind me by email --- */ .frbanner-email-reminder-link {

  text-transform: uppercase;
  display: inline-block;
  cursor: pointer;
  opacity: 0.5;

}

.frbanner-email-reminder-link.active {

  font-weight: bold;

}

.frbanner-email-reminder-link:hover {

   opacity: 1;

}

.frbanner-email-reminder-form {

   display: none;

}

.frbanner-email-reminder-form * {

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

}

.frbanner-email-reminder .frbanner-email-reminder-form {

   background: #e2e2e2;
   padding: 1em;
   position: absolute;
   top: 1.5em;
   right: 0;
   width: 140%;
   box-shadow: 0 0 10px rgba(6,7,7,.4);
   border-radius: 4px;

}

.frbanner-email-reminder-form form {

   display: table;
   width: 100%;
   text-align: center;

}

.frbanner-email-reminder-form input {

   background: #fff;
   width: 100%;
   display: block;
   border: none;
   margin: 0 auto;
   padding: .6em;
   cursor: pointer;
   font-size: 1em;
   color: #000;
   border-radius: 4px;
   box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

} .frbanner-email-reminder-form input.error {

   background-color: #FFC7C7;

} .frbanner-email-reminder-form input:hover {

   color: #0b3553;
   box-shadow: 0 1px 3px rgba(0,0,0,.15);

} .frbanner-email-reminder-form input:focus {

   background: #fff;
   color: #002e50;
   box-shadow: inset 0 1px 4px rgba(0,0,0,.3);

}

.frbanner-email-reminder-form button {

   width: 100%;
   background: #588fbb;
   color: #fff;
   text-transform: uppercase;
   display: inline-block;
   border: 0;
   margin: .3em 0 0 0;
   padding: .4em;
   font-size: 1em !important;
   cursor: pointer;
   border-radius: 4px;
   -webkit-transition: all .25s ease-in-out;
   -moz-transition:    all .25s ease-in-out;
   transition:         all .25s ease-in-out;

} .frbanner-email-reminder-form button:hover {

   background: #296290;
   color: #fff;

} .frbanner-email-reminder-form button:active {

   background: #184e79;

}

.frbanner-email-reminder-form #errorMessageContainerId {

   color: #CC0000;
   text-transform: none;

} .frbanner-email-reminder-done {

   text-transform: none;
   font-size: 1.1em;

} </style>

Dear readers, We’ll get right to it: Today we ask you to help Wikipedia. To protect our independence, we'll never run ads. We’re sustained by donation s averaging about %AVERAGE%. Only a tiny portion of our readers give. If everyone reading this right now gave %MINIMUM%, our fundraiser would be done within an hour. That’s right, the price of a cup of coffee is all we need. We’re a non-profit with the costs of a top website: servers, staff and programs. We believe everyone should have access to knowledge—for free, without restriction, without limitation. If Wikipedia is useful to you, please take one minute to keep it online and growing. Thank you.

If everyone reading this right now gave %MINIMUM%, our fundraiser would be done within an hour.

               
                   Remind me later
               
                 |  
               
                   Close
                   
               
           <form id="{{{banner}}}-form" class="frbanner-form" method="GET" name="paypalcontribution">
   
               <input type="hidden" name="utm_medium" value="sitenotice">
               <input type="hidden" name="utm_campaign" value="{{{campaign}}}">
               <input type="hidden" name="utm_source" value="{{{banner}}}">
               <input type="hidden" name="utm_key" value="">
               <input type="hidden" name="language" value="">
               <input type="hidden" name="country" value="">
               <input type="hidden" name="currency_code" id="input_currency_code" value="">
               <input type="hidden" name="payment_method" value="">
               <input type="hidden" name="payment_submethod" value="">
               <input type="hidden" name="recurring" value="">
               <input type="hidden" name="gateway" value="">
               <input type="hidden" name="ffname" value="">
               <input type="hidden" name="bannerhistlog" value="">
<input type="radio" name="frequency" id="frequency_onetime" onclick="toggleMonthly(false);" value="onetime" checked="checked"><label for="frequency_onetime">One-time</label> <input type="radio" name="frequency" id="frequency_monthly" onclick="toggleMonthly(true);" value="monthly"><label for="frequency_monthly">Monthly*</label>
                           <input type="radio" name="amount" id="input_amount_0" onclick="document.paypalcontribution.amountGiven.value=" value="3">
                           <label for="input_amount_0">$3</label>
                           <input type="radio" name="amount" id="input_amount_1" onclick="document.paypalcontribution.amountGiven.value=" value="5">
                           <label for="input_amount_1">$5</label>
                           <input type="radio" name="amount" id="input_amount_2" onclick="document.paypalcontribution.amountGiven.value=" value="10">
                           <label for="input_amount_2">$10</label>
                           <input type="radio" name="amount" id="input_amount_3" onclick="document.paypalcontribution.amountGiven.value=" value="20">
                           <label for="input_amount_3">$20</label>
                           <input type="radio" name="amount" id="input_amount_4" onclick="document.paypalcontribution.amountGiven.value=" value="30">
                           <label for="input_amount_4">$30</label>
                           <input type="radio" name="amount" id="input_amount_5" onclick="document.paypalcontribution.amountGiven.value=" value="50">
                           <label for="input_amount_5">$50</label>
                           <input type="radio" name="amount" id="input_amount_6" onclick="document.paypalcontribution.amountGiven.value=" value="100">
                           <label for="input_amount_6">$100</label>
                           <input type="radio" name="amount" id="input_amount_other" value="Other">
                           
                           $<input style="height: 1em;" type="text" size="3" name="amountGiven" autocomplete="off" onfocus="$('#input_amount_other').prop('checked', true);" id="input_amount_other_box">
                           
                           <button class="paymentmethod-ideal no-monthly" onclick="redirectPayment('rtbt', 'rtbt_ideal'); return false;" style="display:none;">
                               iDEAL
                           </button>
                           <button class="paymentmethod-cc" onclick="redirectPayment('cc'); return false;">
                               Credit Card
                           </button>
                           <button class="paymentmethod-cc-wp no-monthly" onclick="redirectPayment('cc-wp'); return false;" style="display:none;">
                               Credit Card
                           </button>
                           <button class="paymentmethod-sofort no-monthly" onclick="redirectPayment('rtbt', 'rtbt_sofortuberweisung'); return false;" style="display:none;">
                               Online Bank Transfer
                           </button>
                           <button class="paymentmethod-bt no-monthly" onclick="redirectPayment('bt'); return false;" style="display:none;">
                               Bank Transfer
                           </button>
                           <button class="paymentmethod-cash no-monthly" onclick="redirectPayment('cash'); return false;" style="display: none;">
                   Cash
                           </button>
                           <button class="paymentmethod-pp" onclick="redirectPayment('paypal'); return false;">
                               PayPal
                           </button>
                           <button class="paymentmethod-amazon no-monthly" onclick="redirectPayment('amazon'); return false;" style="display:none;">
                               Amazon
                           </button>
                           <button class="paymentmethod-bpay no-monthly" onclick="redirectPayment('obt', 'bpay'); return false;" style="display:none;">
                               BPay
                           </button>
                           <button class="paymentmethod-enets no-monthly" onclick="redirectPayment('rtbt', 'rtbt_enets'); return false" style="display:none;">
                               eNETS
                           </button>
                           <button class="paymentmethod-pp-usd" onclick="redirectPayment('paypal', undefined, true); return false;" style="display: none;">
                               PayPal (USD)
                           </button>
           </form>
       <img src="//upload.wikimedia.org/wikipedia/donate/thumb/9/96/I.svg/40px-I.svg.png">
       If we all gave %MINIMUM%, the fundraiser would be over in an hour.
       <button class="frbanner-nag-donate">Donate now</button>
       

<script> /**

* NOTE: The following currency mapping is WMF-specific based on payment
* provider availability, NOT necessarily the official currency of the country
*/

function getCurrency() {

   switch(Geo.country) {
       // Big 5 at the top for speed
       case "US": return "USD";
       case "CA": return "CAD";
       case "GB": return "GBP";
       case "AU": return "AUD";
       case "NZ": return "NZD";
       // Euro countries
       case "AD":
       case "AL":
       case "AM":
       case "AT":
       case "AW":
       case "AZ":
       case "BE":
       case "BY":
       case "CI":
       case "CY":
       case "DE":
       case "EE":
       case "ES":
       case "FI":
       case "FR":
       case "GF":
       case "GR":
       case "IE":
       case "IT":
       case "LT":
       case "LU":
       case "LV":
       case "LY":
       case "MC":
       case "ME":
       case "MG":
       case "MT":
       case "NL":
       case "PT":
       case "RE":
       case "RS":
       case "SI":
       case "SK":
       case "SM":
       case "SR":
       case "VA":
           return "EUR";
       // The rest
       case "AE": return "AED";
       case "AR": return "ARS";
       case "BA": return "BAM";
       case "BB": return "BBD";
       case "BD": return "BDT";
       case "BG": return "BGN";
       case "BH": return "BHD";
       case "BM": return "BMD";
       case "BO": return "BOB";
       case "BR": return "BRL";
       case "BZ": return "BZD";
       case "CH": return "CHF";
       case "CK": return "NZD";
       case "CL": return "CLP";
       case "CN": return "CNY";
       case "CO": return "COP";
       case "CR": return "CRC";
       case "CZ": return "CZK";
       case "DK": return "DKK";
       case "DO": return "DOP";
       case "DZ": return "DZD";
       case "EG": return "EGP";
       case "FJ": return "FJD";
       case "FO": return "DKK";
       case "GL": return "DKK";
       case "GT": return "GTQ";
       case "HK": return "HKD";
       case "HN": return "HNL";
       case "HR": return "HRK";
       case "HU": return "HUF";
       case "ID": return "IDR";
       case "IL": return "ILS";
       case "IN": return "INR";
       case "IS": return "ISK";
       case "JM": return "JMD";
       case "JO": return "JOD";
       case "JP": return "JPY";
       case "KE": return "KES";
       case "KI": return "AUD";
       case "KR": return "KRW";
       case "KZ": return "KZT";
       case "LB": return "LBP";
       case "LI": return "CHF";
       case "LK": return "LKR";
       case "MA": return "MAD";
       case "MK": return "MKD";
       case "MV": return "MVR";
       case "MW": return "GBP";
       case "MX": return "MXN";
       case "MY": return "MYR";
       case "NI": return "NIO";
       case "NO": return "NOK";
       case "NP": return "INR";
       case "NR": return "AUD";
       case "OM": return "OMR";
       case "PA": return "PAB";
       case "PE": return "PEN";
       case "PG": return "AUD";
       case "PH": return "PHP";
       case "PK": return "PKR";
       case "PL": return "PLN";
       case "PY": return "PYG";
       case "QA": return "QAR";
       case "RO": return "RON";
       case "RU": return "RUB";
       case "SA": return "SAR";
       case "SD": return "GBP";
       case "SE": return "SEK";
       case "SG": return "SGD";
       case "TH": return "THB";
       case "TM": return "RUB";
       case "TN": return "TND";
       case "TR": return "TRY";
       case "TT": return "TTD";
       case "TW": return "TWD";
       case "UA": return "UAH";
       case "UY": return "UYU";
       case "UZ": return "RUB";
       case "VE": return "VEF";
       case "VN": return "VND";
       case "VU": return "AUD";
       case "ZA": return "ZAR";
       // small multi-country currencies
       case "CW":
       case "SX":
           return "ANG";
       case "AG":
       case "DM":
       case "GD":
       case "KN":
       case "LC":
           return "XCD";
       case "BJ":
       case "BF":
       case "CI":
       case "GW":
       case "ML":
       case "NE":
       case "SN":
       case "TG":
           return "XOF";
       case "PF":
       case "NC":
       case "WF":
           return "XPF";
       // fall back to USD
       default:
           return "USD";
   }

} </script> <script> function currencyLocalize(currency, amount, language){

   // Do some basic number formatting - digit separators etc
   if (window.Intl && typeof window.Intl === "object") {
       if (Geo.country) {
           var locale = language + '-' + Geo.country;
       } else {
           var locale = language;
       }
       var formatter = new Intl.NumberFormat(locale);
   } else {
       // boo, bad browser! let's just have a thing that throws it back unformatted for now
       var formatter = {};
       formatter.format = function(number) {
           return number.toString();
       };
   }
   if (isNaN(amount) || amount == "") {
       // it's probably the "other" string or box
       var fmAmount = amount;
   } else {
       var fmAmount = formatter.format(amount);
   }
   // End number formatting
   var currencies = {
       "USD" : "$\t",
       "EUR" : {
           "en" : "€\t",
           "cy" : "€\t",
           "ga" : "€\t",
           "mt" : "€\t",
           "nl" : "€ \t",
           "lv" : "€ \t",
           "tr" : "€ \t",
           "default" : "\t €"
       },
       "AED" : " د.إ \t",
       "ANG" : "ƒ\t",
       "ARS" : "$\t",
       "AUD" : "$\t",
       "BAM" : "\t KM",
       "BBD" : "Bcs$\t",
       "BDT" : "৳\t",
       "BGN" : "лв\t",
       "BHD" : "د.ب\t",
       "BMD" : "BD$\t",
       "BOB" : "$b\t",
       "BRL" : "R$\t",
       "BZD" : "BZ$\t",
       "CAD" : {
           "fr" : "$\t",
           "default" : "$\t"
       },
       "CHF" : "Fr. \t",
       "CLP" : "$\t",
       "CNY" : "\t ¥",
       "COP" : "$\t",
       "CRC" : "\t ₡",
       "CZK" : "\t Kč",
       "DKK" : "\t kr.",
       "DOP" : "RD$\t",
       "DZD" : "د.ج\t",
       "EEK" : "\t kr",
       "EGP" : {
           "en" : "E£\t",
           "default" : "\t جنيه"
       },
       "FJD" : "FJ$\t",
       "GBP" : "£\t",
       "GTQ" : "Q\t",
       "HKD" : "HK$\t",
       "HNL" : "L\t",
       "HRK" : "\t kn",
       "HUF" : "\t Ft",
       "IDR" : "Rp \t",
       "ILS" : {
           "he" : "\t ₪",
           "yi" : "\t ₪",
           "ar" : "\t ₪",
           "default" : "₪ \t"
       },
       "INR" : "₹ \t",
       "ISK" : "\t kr",
       "JMD" : "J$ \t",
       "JOD" : "دينار\t",
       "JPY" : "¥\t",
       "KES" : "\t KSh",
       "KRW" : "₩\t",
       "KWD" : "د.ك \t",
       "KZT" : "〒 \t", // TODO: don't use the JP postal code symbol once KZT works in unicode
       "LBP" : "LBP \t",
       "LKR" : "\t Rs.",
       "LTL" : "\t Lt",
       "LVL" : "\t Ls",
       "MAD" : "د.م.\t",
       "MKD" : "\t ден",
       "MOP" : "MOP$\t",
       "MUR" : "\t Rs",
       "MXN" : "$\t",
       "MVR" : "Rf. \t",
       "MYR" : "RM\t",
       "NIO" : "C$\t",
       "NOK" : "\t kr",
       "NZD" : "$\t",
       "OMR" : "ر.ع\t",
       "PAB" : "\t B/.",
       "PEN" : "S/. \t",
       "PHP" : "₱\t",
       "PKR" : "Rs \t",
       "PLN" : "\t zł",
       "PYG" : "\t ₲",
       "QAR" : "ر.ق\t",
       "RON" : "\t lei",
       "RUB" : "\t руб",
       "SAR" : "﷼\t",
       "SCR" : "SR \t",
       "SEK" : "\t kr",
       "SGD" : "S$ \t",
       "SVC" : "\t ₡",
       "THB" : {
           "th" : "\t บาท",
           "default" : "\t ฿"
       },
       "TND" : "\t د.ت",
       "TRY" : "₺\t",
       "TTD" : "TT$\t",
       "TWD" : "NT$\t",
       "TZS" : "\t/=",
       "UAH" : "₴\t",
       "UYU" : "$U \t",
       "UZS" : "\t сўм",
       "VEF" : "Bs.F. \t",
       "VND" : "\t₫",
       "VUV" : "VT\t",
       "XAF" : "FCFA\t",
       "XCD" : "EC$\t",
       "XOF" : "CFA \t",
       "XPF" : "\t F",
       "ZAR" : "R \t"
   };
   if(currencies[currency] == null){
       return currency + " " + fmAmount;
   }
   if( currencies[currency] instanceof Object ){ // not a string
       if(currencies[currency][language] != null){
           return currencies[currency][language].replace("\t", fmAmount);
       }
       return currencies[currency]["default"].replace("\t", fmAmount);
   }
   return currencies[currency].replace("\t", fmAmount);

} </script> <script> function getMinimum(currency){

   var minimums = {
       'ADF' : 5.95,
       'ADP' : 150.87,
       'AED' : 3.67,
       'AFA' : 60.47,
       'AFN' : 60.47,
       'ALL' : 124.74,
       'AMD' : 473.47,
       'ANG' : 1.82,
       'AOA' : 122.35,
       'AON' : 122.35,
       'ARS' : 14, // Astropay
       'ATS' : 12.48,
       'AUD' : 1.35,
       'AWG' : 1.79,
       'AZM' : 3926.19,
       'AZN' : 1.05,
       'BAM' : 1.77,
       'BBD' : 2,
       'BDT' : 76.04,
       'BEF' : 36.58,
       'BGL' : 1.77,
       'BGN' : 1.77,
       'BHD' : 0.37,
       'BIF' : 1599.65,
       'BMD' : 1,
       'BND' : 1.33,
       'BOB' : 6.71,
       'BRL' : 3.2,
       'BSD' : 0.99,
       'BTN' : 63.52,
       'BWP' : 9.89,
       'BYR' : 15378.7,
       'BZD' : 1.96,
       'CAD' : 1.27,
       'CDF' : 912.52,
       'CHF' : 0.95,
       'CLP' : 980, // Astropay
       'CNY' : 6.09,
       'COP' : 4000, // Astropay
       'CRC' : 523.08,
       'CUC' : 1,
       'CUP' : 23.15,
       'CVE' : 99.81,
       'CYP' : 0.53,
       'CZK' : 24.59,
       'DEM' : 1.77,
       'DJF' : 177.72,
       'DKK' : 6.77,
       'DOP' : 44.46,
       'DZD' : 99.04,
       'ECS' : 25588.54,
       'EEK' : 14.19,
       'EGP' : 7.81,
       'ESP' : 150.87,
       'ETB' : 20.5,
       'EUR' : 0.91,
       'FIM' : 5.39,
       'FJD' : 2.11,
       'FKP' : 0.65,
       'FRF' : 5.95,
       'GBP' : 0.65,
       'GEL' : 2.25,
       'GHC' : 37964.2,
       'GHS' : 3.8,
       'GIP' : 0.65,
       'GMD' : 38.45,
       'GNF' : 7251.79,
       'GRD' : 308.97,
       'GTQ' : 7.43,
       'GYD' : 197.27,
       'HKD' : 7.75,
       'HNL' : 21.27,
       'HRK' : 6.87,
       'HTG' : 52.41,
       'HUF' : 287.8,
       'IDR' : 13333.3,
       'IEP' : 0.71,
       'ILS' : 3.79,
       'INR' : 63.39,
       'IQD' : 1141.95,
       'IRR' : 29360,
       'ISK' : 133.46,
       'ITL' : 1755.66,
       'JMD' : 113.71,
       'JOD' : 0.71,
       'JPY' : 121.58,
       'KES' : 98.48,
       'KGS' : 62.13,
       'KHR' : 3995.54,
       'KMF' : 445,
       'KPW' : 135.01,
       'KRW' : 1134.04,
       'KWD' : 0.3,
       'KYD' : 0.82,
       'KZT' : 183.31,
       'LAK' : 7923.05,
       'LBP' : 1480.9,
       'LKR' : 130.3,
       'LRD' : 85,
       'LSL' : 12.5,
       'LTL' : 3.13,
       'LUF' : 36.58,
       'LVL' : 0.64,
       'LYD' : 1.34,
       'MAD' : 9.77,
       'MDL' : 18.71,
       'MGA' : 3252.88,
       'MGF' : 9149.13,
       'MKD' : 55.45,
       'MMK' : 1111.03,
       'MNT' : 1958,
       'MOP' : 7.79,
       'MRO' : 320.47,
       'MTL' : 0.39,
       'MUR' : 34.3,
       'MVR' : 14.97,
       'MWK' : 441.83,
       'MXN' : 24, // Astropay
       'MYR' : 3.8,
       'MZM' : 38000,
       'MZN' : 38,
       'NAD' : 12.5,
       'NGN' : 196.44,
       'NIO' : 26.24,
       'NLG' : 2,
       'NOK' : 8.2,
       'NPR' : 99.74,
       'NZD' : 1.5,
       'OMR' : 0.38,
       'PAB' : 1,
       'PEN' : 3.12,
       'PGK' : 2.68,
       'PHP' : 45.15,
       'PKR' : 100.4,
       'PLN' : 3.83,
       'PTE' : 181.78,
       'PYG' : 5065.03,
       'QAR' : 3.64,
       'ROL' : 40637.3,
       'RON' : 4.06,
       'RSD' : 108.68,
       'RUB' : 57.16,
       'RWF' : 721.7,
       'SAR' : 3.75,
       'SBD' : 7.83,
       'SCR' : 12.33,
       'SDD' : 592.4,
       'SDG' : 5.92,
       'SDP' : 2272.21,
       'SEK' : 8.5,
       'SGD' : 1.35,
       'SHP' : 0.62,
       'SIT' : 217.29,
       'SKK' : 27.32,
       'SLL' : 4158,
       'SOS' : 673,
       'SRD' : 3.24,
       'SRG' : 3240,
       'STD' : 22115.7,
       'SVC' : 8.54,
       'SYP' : 217.65,
       'SZL' : 12.5,
       'THB' : 33.94,
       'TJS' : 6.26,
       'TMM' : 14285.71,
       'TMT' : 2.85,
       'TND' : 1.97,
       'TOP' : 2.16,
       'TRL' : 2687990,
       'TRY' : 2.69,
       'TTD' : 6.25,
       'TWD' : 31.04,
       'TZS' : 2185.91,
       'UAH' : 21.25,
       'UGX' : 3454.24,
       'USD' : 1,
       'UYU' : 40, // Astropay
       'UZS' : 2541,
       'VEB' : 6290.36,
       'VEF' : 6.29,
       'VND' : 21482.8,
       'VUV' : 104.5,
       'WST' : 2.36,
       'XAF' : 595.84,
       'XAG' : 0.07,
       'XAU' : 0,
       'XCD' : 2.69,
       'XEU' : 0.91,
       'XOF' : 595.83,
       'XPD' : 0,
       'XPF' : 108.27,
       'XPT' : 0,
       'YER' : 214.8,
       'YUN' : 108.68,
       'ZAR' : 12.5,
       'ZMK' : 5327.65,
       'ZWD' : 376.36
   };
   if($.inArray(currency, minimums)){
       return minimums[currency];
   }
   return 1;

} </script> <script> var fundraisingAmounts = fundraisingAmounts || {};

fundraisingAmounts.asks = {

   "USD" : {
       "default" : [3, 5, 10, 20, 30, 50, 100]
   },
   "EUR" : {
       "default" : [2, 5, 10, 20, 30, 50, 100]
   },
   "GBP" : [2, 5, 10, 20, 30, 50, 100],
   "CAD" : [3, 5, 10, 20, 30, 50, 100],
   "AUD" : [3, 5, 10, 20, 30, 50, 100],
   "NZD" : [3, 5, 10, 20, 30, 50, 100],
   "AED" : [25, 50, 100, 200, 300, 500, 1000],
   "ANG" : [5, 10, 20, 35, 50, 100, 200],
   "ARS" : [30, 50, 100, 200, 500, 750, 1000],
   "BAM" : [3, 5, 10, 25, 40, 70, 140],
   "BBD" : [5, 10, 20, 40, 60, 100, 200],
   "BDT" : [200, 400, 800, 1500, 2000, 4000, 7500],
   "BGN" : [10, 25, 50, 75, 100, 150, 200],
   "BHD" : [1, 2, 4, 8, 10, 20, 40],
   "BMD" : [3, 5, 10, 20, 30, 50, 100],
   "BOB" : [20, 30, 60, 140, 200, 300, 600],
   "BRL" : [10, 20, 30, 50, 100, 250, 500],
   "BZD" : [5, 10, 20, 40, 60, 100, 200],
   "CLP" : [1500, 2500, 5000, 10000, 15000, 25000, 50000],
   "CNY" : [50, 75, 100, 300, 500, 1000, 1500],
   "COP" : [7000, 10000, 20000, 50000, 100000, 150000, 200000],
   "CRC" : [2500, 5000, 10000, 20000, 50000, 75000, 100000],
   "CZK" : [50, 100, 200, 400, 600, 1000, 2000],
   "DKK" : [20, 100, 150, 200, 300, 500, 1000],
   "DOP" : [200, 500, 1000, 2000, 5000, 7500, 10000],
   "DZD" : [200, 400, 750, 1500, 2000, 4000, 7500],
   "FJD" : [5, 10, 20, 40, 50, 100, 200],
   "GTQ" : [20, 40, 80, 150, 200, 350, 750],
   "HKD" : [20, 50, 100, 150, 200, 500, 1000],
   "HNL" : [50, 100, 200, 400, 600, 1000, 1800],
   "HRK" : [35, 50, 100, 250, 500, 1000, 1500],
   "HUF" : [500, 1000, 2000, 4000, 5000, 7000, 10000],
   "IDR" : [35000, 50000, 75000, 100000, 150000, 250000, 500000],
   "ISK" : [300, 500, 1000, 2000, 3000, 5000, 10000],
   "ILS" : [15, 50, 100, 200, 300, 500, 1000],
   "INR" : [100, 200, 300, 500, 1000, 2000, 3000],
   "JMD" : [300, 500, 1000, 2000, 3000, 5000, 10000],
   "JPY" : [300, 1000, 1500, 2000, 3000, 5000, 10000],
   "KRW" : [5000, 10000, 20000, 30000, 50000, 75000, 100000],
   "KWD" : [2, 5, 10,15, 25, 30, 75],
   "KZT" : [750, 1500, 3000, 7500, 12000, 15000, 35000],
   "LBP" : [7500, 15000, 30000, 75000, 120000, 175000, 350000],
   "LTL" : [15, 25, 50, 100, 200, 250, 600],
   "MKD" : [100, 200, 400, 800, 1200, 2000, 4000],
   "MVR" : [40, 75, 150, 300, 450, 750, 1500],
   "MXN" : [35, 50, 100, 200, 500, 750, 1000],
   "MYR" : [10, 30, 50, 100, 200, 300, 500],
   "NIO" : [100, 250, 500, 1000, 1500, 2500, 5500],
   "NOK" : [20, 100, 150, 200, 500, 750, 1000],
   "OMR" : [1, 2, 4, 8, 10, 20, 40],
   "PAB" : [3, 5, 10, 20, 30, 50, 100],
   "PEN" : [10, 30, 50, 150, 200, 275, 700],
   "PHP" : [200, 500, 750, 1000, 2000, 3000, 5000],
   "PLN" : [10, 20, 50, 100, 200, 300, 500],
   "PYG" : [10000, 20000, 40000, 80000, 120000, 200000, 400000],
   "QAR" : [20, 50, 75, 185, 250, 350, 1000],
   "RON" : [10, 50, 75, 100, 200, 300, 500],
   "RUB" : [100, 150, 200, 500, 1000, 2000, 3000],
   "SAR" : [20, 50, 100, 200, 500, 1000, 1500],
   "SEK" : [30, 50, 100, 200, 300, 500, 1000],
   "SGD" : [3, 5, 10, 20, 30, 50, 100],
   "THB" : [50, 100, 250, 500, 750, 1000, 2000],
   "TND" : [5, 10, 15, 30, 50, 75, 150],
   "TRY" : [5, 10, 20, 40, 50, 100, 200],
   "TTD" : [20, 30, 60, 120, 200, 300, 600],
   "TWD" : [150, 300, 500, 1000, 1500, 2000, 5000],
   "UAH" : [50, 75, 150, 300, 500, 750, 1000],
   "UYU" : [70, 100, 200, 400, 1000, 1500, 2000],
   "VEF" : [20, 30, 50, 100, 200, 300, 600],
   "VND" : [60000, 100000, 200000, 400000, 600000, 1000000, 2000000],
   "XCD" : [5, 10, 20, 50, 80, 120, 250],
   "XOF" : [1000, 2000, 5000, 10000, 150000, 200000, 400000],
   "XPF" : [250, 400, 800, 1600, 2500, 4000, 8000],
   "ZAR" : [30, 50, 100, 200, 300, 500, 1000],
   "CHF" : [3, 5, 10, 20, 30, 50, 100]

};

/* Usual formula: take 1st, 3rd, 4th, 6th and 7th from desktop asks */ fundraisingAmounts.mobileAsks = {

   "USD" : [3, 15, 20, 50, 100],
   "CAD" : [3, 15, 20, 50, 100],
   "AUD" : [3, 15, 20, 50, 100],
   "NZD" : [3, 15, 20, 50, 100],
   "GBP" : [2, 10, 20, 50, 100],
   "EUR" : [2, 10, 20, 50, 100],
   "ARS" : [30, 100, 200, 750, 1000],
   "BRL" : [10, 30, 50, 100, 250],
   "CHF" : [3, 15, 20, 50, 100],
   "CLP" : [1500, 5000, 10000, 25000, 50000],
   "CNY" : [50, 100, 300, 500, 1000],
   "COP" : [7000, 20000, 50000, 150000, 200000],
   "DKK" : [20, 100, 200, 500, 1000],
   "HKD" : [20, 100, 150, 500, 1000],
   "HUF" : [500, 2500, 4000, 7000, 10000],
   "ILS" : [15, 50, 200, 600, 1000],
   "INR" : [100, 300, 500, 2000, 3000],
   "JPY" : [300, 1500, 2000, 5000, 10000],
   "MXN" : [35, 100, 200, 750, 1000],
   "MYR" : [10, 50, 100, 300, 500],
   "NOK" : [20, 100, 200, 500, 1000],
   "PEN" : [10, 50, 150, 300, 700],
   "PLN" : [10, 50, 100, 300, 500],
   "RON" : [10, 50, 100, 200, 1000],
   "SEK" : [30, 100, 200, 500, 1000],
   "UAH" : [50, 150, 300, 750, 1000],
   "UYU" : [70, 200, 400, 1500, 2000],
   "ZAR" : [30, 100, 200, 500, 1000]

};

fundraisingAmounts.averages = {

   "USD" : 15,
   "EUR" : 10,
   "GBP" : 10,
   "CAD" : 15,
   "AUD" : 15,
   "NZD" : 15,
   "AED" : 50,
   "ALL" : 1500,
   "AMD" : 5000,
   "ANG" : 25,
   "ARS" : 100,
   "AZN" : 10,
   "BAM" : 20,
   "BBD" : 30,
   "BDT" : 1000,
   "BGN" : 20,
   "BHD" : 6,
   "BMD" : 15,
   "BND" : 20,
   "BOB" : 100,
   "BRL" : 25,
   "BSD" : 15,
   "BZD" : 30,
   "CHF" : 15,
   "CLP" : 8000,
   "CNY" : 100,
   "COP" : 30000,
   "CRC" : 7500,
   "CZK" : 250,
   "DKK" : 100,
   "DOP" : 600,
   "DZD" : 1000,
   "EGP" : 100,
   "ETB" : 250,
   "FJD" : 25,
   "GEL" : 25,
   "GNF" : 100000,
   "GTQ" : 100,
   "HKD" : 100,
   "HNL" : 250,
   "HRK" : 80,
   "HUF" : 2500,
   "IDR" : 150000,
   "ILS" : 50,
   "INR" : 750,
   "IQD" : 15000,
   "ISK" : 1500,
   "JMD" : 1500,
   "JOD" : 10,
   "JPY" : 1500,
   "KES" : 1000,
   "KRW" : 15000,
   "KWD" : 5,
   "KZT" : 2000,
   "LBP" : 20000,
   "LKR" : 2000,
   "LTL" : 40,
   "LVL" : 10,
   "MAD" : 120,
   "MKD" : 600,
   "MOP" : 100,
   "MUR" : 500,
   "MVR" : 200,
   "MXN" : 150,
   "MYR" : 50,
   "MZN" : 50,
   "NGN" : 2500,
   "NIO" : 350,
   "NOK" : 100,
   "OMR" : 5,
   "PAB" : 15,
   "PEN" : 40,
   "PHP" : 600,
   "PKR" : 1500,
   "PLN" : 50,
   "PYG" : 60000,
   "QAR" : 50,
   "RON" : 50,
   "RSD" : 1200,
   "RUB" : 500,
   "SAR" : 50,
   "SBD" : 100,
   "SEK" : 100,
   "SGD" : 20,
   "THB" : 500,
   "TND" : 25,
   "TRY" : 25,
   "TTD" : 100,
   "TWD" : 500,
   "UAH" : 150,
   "UYU" : 300,
   "VEF" : 100,
   "VND" : 300000,
   "XCD" : 40,
   "XOF" : 7000,
   "XPF" : 1000,
   "ZAR" : 150,
   "CHF" : 15

};

// Mostly the same as first asks option. // For backwards compatibility, these need to be given as an array of one number fundraisingAmounts.ifEveryone = {

   "USD" : {
       "default" : [3]
   },
   "EUR" : {
       "default" : [2]
   },
   "GBP" : [2],
   "CAD" : [3],
   "AUD" : [3],
   "NZD" : [3],
   "AED" : [25],
   "ANG" : [5],
   "ARS" : [30],
   "BAM" : [3],
   "BBD" : [5],
   "BDT" : [200],
   "BGN" : [10],
   "BHD" : [1],
   "BMD" : [3],
   "BOB" : [20],
   "BRL" : [10],
   "BZD" : [5],
   "CLP" : [1500],
   "CNY" : [50],
   "COP" : [7000],
   "CRC" : [2500],
   "CZK" : [50],
   "DKK" : [20],
   "DOP" : [200],
   "DZD" : [200],
   "FJD" : [5],
   "GTQ" : [20],
   "HKD" : [20],
   "HNL" : [50],
   "HRK" : [35],
   "HUF" : [500],
   "IDR" : [35000],
   "ILS" : [15],
   "INR" : [100],
   "ISK" : [300],
   "JMD" : [300],
   "JPY" : [300],
   "KRW" : [5000],
   "KWD" : [2],
   "KZT" : [750],
   "LBP" : [7500],
   "LTL" : [15],
   "MKD" : [100],
   "MVR" : [40],
   "MXN" : [35],
   "MYR" : [10],
   "NIO" : [100],
   "NOK" : [20],
   "OMR" : [1],
   "PAB" : [3],
   "PEN" : [10],
   "PHP" : [200],
   "PLN" : [10],
   "PYG" : [10000],
   "QAR" : [20],
   "RON" : [10],
   "RUB" : [100],
   "SAR" : [20],
   "SEK" : [30],
   "SGD" : [3],
   "THB" : [50],
   "TND" : [5],
   "TRY" : [5],
   "TTD" : [20],
   "TWD" : [150],
   "UAH" : [50],
   "UYU" : [70],
   "VEF" : [20],
   "VND" : [60000],
   "XCD" : [5],
   "XOF" : [1000],
   "XPF" : [250],
   "ZAR" : [30],
   "CHF" : [3]

}; </script> <script> var fundraisingAmounts = fundraisingAmounts || {};

fundraisingAmounts.pick = function(source, currency, country) {

   /*
    * Select the correct amount or array of amounts from object in "source"
    * In future may extend to allow a language parameter too
    * 
    * @param {object} source   - the amounts object e.g. fundraisingAmounts.asks, fundraisingAmounts.averages
    * @param {string} currency - ISO code of currency
    * @param {string} country  - ISO code of country (optional)
    * @return {array/number}   - depending on source
    */
   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];
   }

};

function convertAsk(amount, currency, country) {

   /*
    * Given an amount in USD, find an "equivalent" local ask amount for the given currency and country
    * @TODO: namespace this
    * 
    * @param {number} amount   - USD amount
    * @param {string} currency - ISO code of currency
    * @param {string} country  - ISO code of country
    * @return {number}         - local amount
    */
   var usdbase = [3, 5, 10, 20, 30, 50, 100];
   var usdamount = parseInt(amount, 10);
   if(isNaN(usdamount)){
       return 0;
   }

   var index = $.inArray(usdamount, usdbase);
   if (index == -1) {
       // the amount is not in the USD ask array, find a near neighbor
       index = 0;
       while (usdbase[index+1] < usdamount && index < usdbase.length + 1) {
           index++;
       }
   }
   var array = fundraisingAmounts.pick(fundraisingAmounts.asks, currency, country);
   if (array === undefined) {
       // in case we don't have amounts for this currency
       return usdamount;
   } else {
       return array[index];
   }

}

function getAverage(currency, country, language) {

   /*
    * Return a formatted string with the "average" donation amount in the given currency, country and language
    * @TODO: just move this into banner code
    * 
    * @param {string} currency - ISO code of currency
    * @param {string} country  - ISO code of country
    * @param {string} country  - ISO code of language     
    * @return {string}         - formatted amount 
    */
   var amount = fundraisingAmounts.pick(fundraisingAmounts.averages, currency, country);
   return currencyLocalize(currency, amount, language);

}

function getMinimumString(currency, country, language) {

   /*
    * Return a formatted string with the "if everyone" amount in the given currency, country and language
    * @TODO: just move this into banner code
    * 
    * @param {string} currency - ISO code of currency
    * @param {string} country  - ISO code of country
    * @param {string} country  - ISO code of language     
    * @return {string}         - formatted amount 
    */
   var amount = fundraisingAmounts.pick(fundraisingAmounts.ifEveryone, currency, country)[0];
   return currencyLocalize(currency, amount, language);

} </script> <script> // Various common actions for banner setup.

var getQuerystring = function(key) {

   // Should not be used any more, use mw.util.getParamValue() instead
   // Kept for now though because this returns  instead of null if key is not present
   key = key.replace( /[\[]/, '\\\[' ).replace( /[\]]/, '\\\]' );
   var regex = new RegExp( '[\\?&]' + key + '=([a-zA-Z0-9\_\-]*)' );
   var qs = regex.exec( window.location.search );
   return qs == null ?  : qs[1];

};

$(document).ready( function () {

   // Allow overriding the geolocation for testing different countries
   if(mw.util.getParamValue('country')) {
       Geo.country = mw.util.getParamValue('country');
   }
   var language = mw.config.get('wgUserLanguage'),
       currency = getCurrency(Geo.country);
   // Localize links in the smallprint
   $('#{{{banner}}}-legal a, #frbanner-legal a, .frbanner-legal a').each(function(index) {
       // Add parameters for LandingCheck
       var uri = new mw.Uri( $(this).attr("href") );
       uri.extend({
           country:      Geo.country,
           language:     language,
           uselang:      language,
           utm_medium:   'sitenotice',
           utm_campaign: mw.centralNotice.getDataProperty('campaign'),
           utm_source:   mw.centralNotice.getDataProperty('banner')
       });
       $(this).attr( "href", uri.toString() );
       // Make links open in new tab
       $(this).attr("target", "_blank");
   });
   // Show the correct legal text variant
   if (Geo.country === 'US') {
       $('.informationsharing-US').show();
       $('.informationsharing-NL').hide();
       $('.informationsharing-nonUS').hide();
   }
   if (Geo.country === 'NL') {
       $('.informationsharing-US').hide();
       $('.informationsharing-NL').show();
       $('.informationsharing-nonUS').hide();
   }
   // Find instances of %AVERAGE% in banner text, and replace with correct average for currency & country
   $(".frbanner, div#{{{banner}}}, #frbanner3").each(function(index){
       var avgString = getAverage(currency, Geo.country, language).replace(/\.$/, ); // strip any period from end for use in running text
       var newHtml = $(this).html().replace(/%AVERAGE%/g, avgString );
       $(this).html(newHtml);
   });
   // Find instances of %MINIMUM% in banner text, and replace with correct minimum for currency & country
   $(".frbanner, div#{{{banner}}}, #frbanner3").each(function(index){
       var ifString = getMinimumString(currency, Geo.country, language).replace(/\.$/, ); // strip any period from end for use in running text
       var newHtml = $(this).html().replace(/%MINIMUM%/g, ifString );
       $(this).html(newHtml);
   });
   
   /* Replace class "frbanner-currencycode" with currency ISO code */
   $('.frbanner-currencycode').html(currency);

}); </script> <script> /**

 * Core code for forms in banners.
 * Handles showing the correct payment methods, validating input, and sending on to payments wiki.
 * (Note that localizing amount options is done elsewhere, in BannerFormAmountOptions.js)
 *
 * Dependencies:
 *     MediaWiki:FR2013/Resources/CurrencyMinimums.js
 *     MediaWiki:FR2013/Resources/Country2Currency.js
 *     MediaWiki:FR2013/Resources/PaymentOutages.js
 *     MediaWiki:FR2015/Resources/MethodLocalize.js
 *
 */

function checkPaymentOutages() {

   /* Check against the scheduled payment method outages below
    * and hide the relevant button for any which are ongoing.
    */
   /* 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"
   }

];

   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'] == Geo.country) {
               $('.paymentmethod-' + outages[i]['method']).hide();
           }
       }
   }

}

function validateForm(form) {

   /* Check the form, especially the amount submitted 
    * Return the amount if valid, otherwise return false
    */
   var error = true;
   var amount = null;
   if (form.amount) {
       // If there are some amount radio buttons, then look for the checked one
       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.amountGiven.value != ) {
       var otherAmount = form.amountGiven.value;
       otherAmount = otherAmount.replace(/[,.](\d)$/, ':$10');
       otherAmount = otherAmount.replace(/[,.](\d)(\d)$/, ':$1$2');
       otherAmount = otherAmount.replace(/[$£€¥,.]/g, );
       otherAmount = otherAmount.replace(/:/, '.');
       form.amountGiven.value = otherAmount;
       amount = otherAmount;
   }
   // Check amount is a real number
   error = ( amount == null || isNaN(amount) || amount.value <= 0 );
   // Check amount is at least the minimum
   var currency = form.currency_code.value;
   if (amount < getMinimum(currency) || error) {
       alert('You must contribute at least $1'.replace('$1', getMinimum(currency) + ' ' + currency));
       error = true;
   }
   if ( error ) {
       return false;
   } else {
       return amount;
   }

}

function redirectPayment(paymentMethod, paymentSubMethod, skipValidation) {

   if ( skipValidation || validateForm(document.paypalcontribution) ) {
       if (typeof paymentSubMethod == 'undefined') {
           paymentSubMethod = ;
       }
       var form = document.paypalcontribution; // we should really change this some day
       var paymentsURL = 'https://payments.wikimedia.org/index.php/Special:GatewayFormChooser';
       form.action = paymentsURL;
       if ( form.language.value === 'pt' && Geo.country === 'BR' ) {
           form.language.value = 'pt-br';
       }
       // WorldPay override for cc
       if( paymentMethod === 'cc-wp' ) {
           paymentMethod = 'cc';
           form.payment_method.value = 'cc';
           form.gateway.value = 'worldpay';
           form.ffname.value = 'worldpay';
       }
       
       // Adyen override for cc
       if( paymentMethod === 'cc-adyen' ) {
           paymentMethod = 'cc';
           form.payment_method.value = 'cc';
           form.gateway.value = 'adyen';
       }
       // Express Checkout override for PayPal
       if( paymentMethod === 'paypal-ec' ) {
           paymentMethod = 'paypal';
           form.payment_method.value = 'paypal';
           form.gateway.value = 'paypal_ec';
       }
       var frequency = $("input[name='frequency']:checked").val();
       if( frequency !== 'monthly' ){
           frequency = 'onetime';
           form.recurring.value = 'false';
       } else {
           form.recurring.value = 'true';
       }
       var mixins = mw.centralNotice.getDataProperty( 'mixins' );
       if ( mixins && mixins.bannerHistoryLogger ) {
           form.bannerhistlog.value = mw.centralNotice.bannerHistoryLogger.id;
       }
       form.utm_key.value = mw.centralNotice.bannerData.cookieCount || 0;
       form.payment_method.value = paymentMethod;
       form.payment_submethod.value = paymentSubMethod;
       
       var full_dotted_payment_method = paymentMethod;
       if ( form.recurring.value == 'true' ) {
           full_dotted_payment_method = 'r' + full_dotted_payment_method;
       }
       if ( paymentSubMethod ) {
           full_dotted_payment_method = form.payment_method.value + '.' + paymentSubMethod;
       }
       form.utm_source.value += '.no-LP.' + full_dotted_payment_method;
       $('.frbanner-form button').attr('disabled', 'disabled'); // Disable to prevent double submission
       if ( mixins && mixins.bannerHistoryLogger ) {
           mw.centralNotice.bannerHistoryLogger.ensureLogSent().always(function() {
               form.submit();
           });
       } else {
           form.submit();
       }
       
   }

}

function toggleMonthly( monthly ){

   if( monthly.type === 'checkbox' ){
       monthly = monthly.checked;
   }
   if (monthly) {
       $('#{{{banner}}}-form').addClass('form-monthly');
   } else {
       $('#{{{banner}}}-form').removeClass('form-monthly');
   }

}


$(document).ready( function() {

   mw.loader.using(['mediawiki.util']).then(function() {
       // Allow overriding the geolocation for testing different countries
       if(mw.util.getParamValue('country') !== null) {
           Geo.country = mw.util.getParamValue('country');
       }
       var currency = getCurrency(Geo.country);
       var language = mw.config.get('wgUserLanguage');
       // Display correct payment methods
       /** MediaWiki:FR2015/Resources/MethodLocalize.js
 * Display the correct payment methods for current country. Used by both desktop and mobile banners.
 */

// Countries with no credit card option (currently none) var noCC = []; if ($.inArray(Geo.country, noCC) !== -1) {

   $(".paymentmethod-cc").remove();

}

// Can't do monthly credit card in Brazil if (Geo.country === 'BR') {

   $(".paymentmethod-cc").addClass("no-monthly");

}

// Remove any leftover WorldPay $(".paymentmethod-cc-wp").remove();

// Countries using Adyen for credit card if (Geo.country === 'FR' || Geo.country === 'IL') {

   $(".paymentmethod-cc").remove();
   $(".paymentmethod-cc-adyen").show();

} else {

   $(".paymentmethod-cc-adyen").remove();

}

// Countries with no PayPal option var noPP = ['IN', 'RU', 'SG', 'AE', 'QA', 'JP', 'OM', 'BD', 'BO', 'PA',

           'PE', 'PY', 'GT', 'JM', 'TT', 'DZ'];

if ($.inArray(Geo.country, noPP) !== -1) {

   $(".paymentmethod-pp").remove();
   $(".paymentmethod-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'];

if ($.inArray(Geo.country, ppUSD) !== -1) {

   $(".paymentmethod-pp").remove();
   $(".paymentmethod-pp-usd").show();

} else {

   $(".paymentmethod-pp").show();
   $(".paymentmethod-pp-usd").remove();

}

// Show any extra local payment methods, or remove them if not needed var extrapaymentmethods = {

   'amazon'     : ['US'],
   'bpay'       : ['AU'],
   'ideal'      : ['NL'],
   'yandex'     : ['RU'],
   'webmoney'   : ['RU'],
   'dd'         : ['AT', 'DE', 'ES', 'NL'],
   'enets'      : ['SG'],
   'sofort'     : [],
   'bt'         : ['AR', 'BR', 'CL', 'CO'],      // Bank Transfer (Astropay)
   'cash'       : ['AR', 'BR', 'CO', 'MX', 'UY'] // "Cash" methods (Astropay)

};

// Methods with different labels per country if (Geo.country === 'AR') {

   $('.paymentmethod-bt button, button.paymentmethod-bt').html('Santander');

} if (Geo.country === 'CO') {

   $('.paymentmethod-bt button, button.paymentmethod-bt').html('PSE Pagos');

} if (Geo.country === 'UY') {

   $('.paymentmethod-cash button, button.paymentmethod-cash').html('RedPagos');

} if (Geo.country === 'CL' && mw.config.get('wgUserLanguage') == 'es') {

   $('.paymentmethod-bt button, button.paymentmethod-bt').html('Trans. bancaria');

}

for (var method in extrapaymentmethods) {

   var $methodbutton = $('.paymentmethod-' + method);
   if ( $.inArray(Geo.country, extrapaymentmethods[method]) !== -1 ) { // country is in the list
       $methodbutton.show();
   } else {
       $methodbutton.remove();
   }

}

       checkPaymentOutages();
       // If there are no recurring payment methods available, disable the "monthly" option
       if ( !$('#{{{banner}}}-form *[class^="paymentmethod-"]:not(.no-monthly)').length ) {
           $('#frequency_monthly').prop('disabled', 'disabled');
       }
       // Set the form fields
       $("input[name='country']").val(Geo.country);
       $("input[name='currency_code']").val(currency);
       $("input[name='language']").val(language);
       $("input[name='return_to']").val( encodeURI('Special:LandingCheck?basic=true&landing_page=Thank_You&uselang=' + mw.config.get('wgUserLanguage')) );
       // Handle pressing Enter on "Other" field
       $(document).on('keydown', 'input[name="amountGiven"]', function(e) {
           if (e.keyCode == 13) {
               e.preventDefault();
               $('.paymentmethod-options button, .frbanner-submit button').filter(':visible').first().click();
               return false;
           }
       });
   });

}); </script> <script> /**

* Localize amount options in banner forms.
*
* Dependencies: FR2013/Resources/Country2Currency.js
*               FR2013/Resources/CurrencyLocalize.js
*/

$(document).ready( function () {

   var currency = getCurrency(Geo.country);
   var language = mw.config.get('wgUserLanguage');
   // do fun things to localize currency in the banner and form
   $("input[name='amount']").each(function(index){
       var id = $(this).attr("id");
       var $label = $("label[for='" + id + "']");
       var amount = convertAsk($(this).val(), currency, Geo.country);
       $(this).val(amount);
       $label.html(currencyLocalize(currency, amount, language));
   });
   $otherLabel = $("#input_label_other");
   $otherLabel.html( 
       currencyLocalize(
           currency,
           $otherLabel.html().replace('$',), // strip the $ sign already on there
           language
       )
   );

}); </script>

<script> /** 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;

};

var fundraisingBanner = {};

fundraisingBanner.addSpace = function() {

   if ( $('#{{{banner}}}').is(':visible') ) {
       /* add space for the banner, and extra px if given below. called on load and window resize */
       var extra = 0;
       var bannerHeight = $('#frbanner-main').height();
       $('#mw-panel').css('top', bannerHeight+160+extra);
       $('#mw-head').css('top', bannerHeight+extra);
       $('#mw-page-base').css('margin-top', bannerHeight+extra);
   }

};

fundraisingBanner.show = function() {

   $('body').prepend($('#centralNotice'));
   $('#{{{banner}}}').css('display', 'block');
   fundraisingBanner.addSpace();
   setTimeout(function (){ fundraisingBanner.addSpace(); }, 100);
   setTimeout(function (){ fundraisingBanner.addSpace(); }, 500);
   setTimeout(function (){ fundraisingBanner.addSpace(); }, 1000);
   setTimeout(function (){ fundraisingBanner.addSpace(); }, 5000);
   $(window).resize(function() {
       fundraisingBanner.addSpace();
   });

};

fundraisingBanner.hide = function() {

   /* hide the banner, and remove the extra space which was added for it */
   mw.centralNotice.hideBanner();
   $('#{{{banner}}}').hide();
   $('#mw-panel').css('top', '160px');
   $('#mw-head').css('top', '0px');
   $('#mw-page-base').css('margin-top', '0');
   return false;

};

fundraisingBanner.postReminderForm = function() {

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

};

fundraisingBanner.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;

};

fundraisingBanner.initReminderForm = function() {

   $(".frbanner-email-reminder-form input[name=rml_country]").val(Geo.country);
   $(".frbanner-email-reminder-form input[name=rml_language]").val(mw.config.get('wgUserLanguage'));
   $(".frbanner-email-reminder-form input[name=rml_submitDate]").val(fundraisingBanner.getCurrentDate());
   $(".frbanner-email-reminder-form input[name=rml_segment]").val(Math.floor((Math.random() * 100) + 1));
   $(".frbanner-email-reminder-link").click(function() {
       $('.frbanner-email-reminder-form').slideToggle();
       $('.frbanner-email-reminder').toggleClass('frbanner-email-reminder-active');
       $('#control_EMAIL').focus();
   });
   $(".frbanner-email-reminder-form button").bind("click", function() {
       if ( mw.util.validateEmail( $(".frbanner-email-reminder-form form input[name='Email']").val() ) ) {
           fundraisingBanner.postReminderForm();
           $(".frbanner-email-reminder-form form").hide();
           $(".frbanner-email-reminder-done").show();
           $(".frbanner-email-reminder-form").delay(2000).fadeOut(1500);
           mw.centralNotice.hideBanner(); // Hide future banners for 7 days
           return false;
       } else {
           $(".frbanner-email-reminder-form form input[name='Email']").addClass("error");
           $(".frbanner-email-reminder-form #errorMessageContainerId").show();
           $('#control_EMAIL').focus();
           return false;
       }
   });

};

$(document).ready(function() {

   fundraisingBanner.initReminderForm();
   /* --- Code for sticky "nag" banner --- */
   var nagHoverTimeout;
   $(window).scroll(function() {
       if ($(window).scrollTop() <= 160) {
           $('#frbanner-nag').finish();
           $('#frbanner-nag').hide();
       } else {
           setTimeout(function(){
               if ( !$('.frbanner' ).hasClass('nag-reveal') && $(window).scrollTop() > 160) {
                   $('#frbanner-nag').slideDown();
               }
           }, 1500);
       }
   });
   $('#frbanner-nag').mouseenter(function() {
       nagHoverTimeout = window.setTimeout(function() {
           $('#frbanner-nag').hide();
           $('.frbanner').addClass('nag-reveal');
       }, 2000);
   });
   $('#frbanner-nag').mouseleave(function() {
       window.clearTimeout(nagHoverTimeout);
   });
   $('.frbanner').mouseleave(function(e) {
       if ( $('.frbanner').hasClass('nag-reveal') ) {
           $('.frbanner').removeClass('nag-reveal');
           $('#frbanner-nag').show();
       }
   });
   $('#frbanner-nag').click(function() {
       $('#frbanner-nag').remove();
       window.clearTimeout(nagHoverTimeout);
       window.scrollTo(0,0);
   });
   $('.frbanner-nag-close').click(function(e) {
       $('#frbanner-nag').remove();
       e.stopPropagation();
   });
   /* --- End code for sticky "nag" banner */
   /* --- Code for legal text --- */
   $('.frbanner').mouseenter( function() {
       $('#frbanner-legal').show();
   });
   $('.frbanner').mouseleave( function() {
       $('#frbanner-legal').hide();
   });
   /* --- End code for legal text --- */
   // Block typing symbols in input field, otherwise Safari allows them and then chokes
   // https://phabricator.wikimedia.org/T118741
   document.getElementById('input_amount_other_box').onkeypress = function(e) {
       var chr = String.fromCharCode(e.which);
       if ("$£€¥".indexOf(chr) !== -1) {
           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';
   }
   if (!mw.centralNotice.bannerData.hideResult) {
       fundraisingBanner.show();
   }

}); </script>