PageSourceSearch

https://www.your-poc.com/wp-content/plugins/s2member/s2member-o.ph…=1&qcABC=1&ver=261001-261001-1993003954

js your-poc.com collected 2026-10-02 12:19:44 UTC 74,234 bytes, 677 lines download raw bytes

1(function(a){if(typeof a.sprintf!=="function"){a.sprintf=function(){var g=/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g;var h=arguments,f=0,k=h[f++];var b=function(o,i,l,n){if(!l){l=" "}var m=(o.length>=i)?"":Array(1+i-o.length>>>0).join(l);return n?o+m:m+o};var c=function(n,m,q,i,l,p){var o=i-n.length;if(o>0){if(q||!l){n=b(n,i,p,q)}else{n=n.slice(0,m.length)+b("",o,"0",true)+n.slice(m.length)}}return n};var j=function(q,p,o,r,l,i,n){var m=q>>>0;o=o&&m&&{"2":"0b","8":"0","16":"0x"}[p]||"";q=o+b(m.toString(p),i||0,"0",false);return c(q,o,r,l,n)};var e=function(n,p,l,i,m,o){if(i!=null){n=n.slice(0,i)}return c(n,"",p,l,m,o)};var d=function(A,n,o,s,C,x,m){var i;var w;var l;var B;var u;if(A=="%%"){return"%"}var t=false,p="",r=false,z=false,y=" ";var q=o.length;for(var v=0;o&&v<q;v++){switch(o.charAt(v)){case" ":p=" ";break;case"+":p="+";break;case"-":t=true;break;case"'":y=o.charAt(v+1);break;case"0":r=true;break;case"#":z=true;break}}if(!s){s=0}else{if(s=="*"){s=+h[f++]}else{if(s.charAt(0)=="*"){s=+h[s.slice(1,-1)]}else{s=+s}}}if(s<0){s=-s;t=true}if(!isFinite(s)){throw new Error("sprintf: (minimum-)width must be finite")}if(!x){x="fFeE".indexOf(m)>-1?6:(m=="d")?0:undefined}else{if(x=="*"){x=+h[f++]}else{if(x.charAt(0)=="*"){x=+h[x.slice(1,-1)]}else{x=+x}}}u=n?h[n.slice(0,-1)]:h[f++];switch(m){case"s":return e(String(u),t,s,x,r,y);case"c":return e(String.fromCharCode(+u),t,s,x,r);case"b":return j(u,2,z,t,s,x,r);case"o":return j(u,8,z,t,s,x,r);case"x":return j(u,16,z,t,s,x,r);case"X":return j(u,16,z,t,s,x,r).toUpperCase();case"u":return j(u,10,z,t,s,x,r);case"i":case"d":i=(+u)|0;w=i<0?"-":p;u=w+b(String(Math.abs(i)),x,"0",false);return c(u,w,t,s,r);case"e":case"E":case"f":case"F":case"g":case"G":i=+u;w=i<0?"-":p;l=["toExponential","toFixed","toPrecision"]["efg".indexOf(m.toLowerCase())];B=["toString","toUpperCase"]["eEfFgG".indexOf(m)%2];u=w+Math.abs(i)[l](x);return c(u,w,t,s,r)[B]();default:return A}};return k.replace(g,d)}}})(jQuery);
2var S2MEMBER_CURRENT_USER_IS_LOGGED_IN = false,S2MEMBER_CURRENT_USER_IS_LOGGED_IN_AS_MEMBER = false,S2MEMBER_CURRENT_USER_FIRST_NAME = '',S2MEMBER_CURRENT_USER_LAST_NAME = '',S2MEMBER_CURRENT_USER_LOGIN = '',S2MEMBER_CURRENT_USER_EMAIL = '',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED = 0,S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED = false,S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY = 0,S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS = 0;
3jQuery(document).ready(function(d){window.ws_plugin__s2member_skip_all_file_confirmations=window.ws_plugin__s2member_skip_all_file_confirmations||false;var c='',a='s2member-files',b=ws_plugin__s2member_skip_all_file_confirmations?true:false,e=[];window.ws_plugin__s2member_passwordMinLength=function(){return parseInt("6")};window.ws_plugin__s2member_passwordMinStrengthCode=function(){return"weak"};window.ws_plugin__s2member_passwordMinStrengthLabel=function(){return"`weak`, `good`, or `strong`"};window.ws_plugin__s2member_passwordMinStrengthScore=function(){return parseInt("10")};window.ws_plugin__s2member_passwordStrengthMeter=function(j,g,i){var h=0,f=ws_plugin__s2member_passwordMinLength();j=String(j);g=String(g);if(j!=g&&g.length>0){return"mismatch"}else{if(j.length<1){return"empty"}else{if(j.length<f){return"short"}}}if(j.match(/[0-9]/)){h+=10}if(j.match(/[a-z]/)){h+=10}if(j.match(/[A-Z]/)){h+=10}if(j.match(/[^0-9a-zA-Z]/)){h=h===30?h+20:h+10}if(i){return h}if(h<30){return"weak"}if(h<50){return"good"}return"strong"};window.ws_plugin__s2member_passwordStrength=function(h,k,i,g){if(h instanceof jQuery&&k instanceof jQuery&&i instanceof jQuery&&g instanceof jQuery){var j={empty:'Strength indicator',"short":'Very weak',weak:'Weak',good:'Good',strong:'Strong',mismatch:'Mismatch'};g.removeClass("ws-plugin--s2member-password-strength-short");g.removeClass("ws-plugin--s2member-password-strength-weak");g.removeClass("ws-plugin--s2member-password-strength-good");g.removeClass("ws-plugin--s2member-password-strength-strong");g.removeClass("ws-plugin--s2member-password-strength-mismatch");g.removeClass("ws-plugin--s2member-password-strength-empty");var f=ws_plugin__s2member_passwordStrengthMeter(k.val(),i.val());g.addClass("ws-plugin--s2member-password-strength-"+f).html(j[f])}};window.ws_plugin__s2member_validationErrors=function(r,q,g,m,l){if(typeof r==="string"&&r&&typeof q==="object"&&typeof g==="object"){if(typeof q.tagName==="string"&&/^(input|textarea|
3select)$/i.test(q.tagName)&&!q.disabled){var t=q.tagName.toLowerCase(),p=d(q),o=d.trim(p.attr("type")).toLowerCase(),f=d.trim(p.attr("name")),s=p.val();m=(typeof m==="boolean")?m:(p.attr("aria-required")==="true"),l=(typeof l==="string")?l:d.trim(p.attr("data-expected"));var k=('143'>0);var i=new RegExp('^(admin@|abuse@|postmaster@|noc@|root@|security@|sysadmin@|compliance@|registrar@|info@|help@|admin@|webmaster@|hostmaster@|sales@|support@|spam@)@',"i");if(t==="input"&&o==="checkbox"&&/\[\]$/.test(f)){if(typeof q.id==="string"&&/-0$/.test(q.id)){if(m&&!d('input[name="'+ws_plugin__s2member_escjQAttr(f)+'"]:checked',g).length){return r+'\nPlease check at least one of the boxes.'}}}else{if(t==="input"&&o==="checkbox"){if(m&&!q.checked){return r+'\nRequired. This box must be checked.'}}else{if(t==="input"&&o==="radio"){if(typeof q.id==="string"&&/-0$/.test(q.id)){if(m&&!d('input[name="'+ws_plugin__s2member_escjQAttr(f)+'"]:checked',g).length){return r+'\nPlease select one of the options.'}}}else{if(t==="select"&&p.attr("multiple")){if(m&&(!(s instanceof Array)||!s.length)){return r+'\nPlease select at least one of the options.'}}else{if(typeof s!=="string"||(m&&!(s=d.trim(s)).length)){return r+'\nThis is a required field, please try again.'}else{if((s=d.trim(s)).length&&((t==="input"&&/^(text|password)$/i.test(o))||t==="textarea")&&typeof l==="string"&&l.length){if(l==="numeric-wp-commas"&&(!/^[0-9\.,]+$/.test(s)||isNaN(s.replace(/,/g,"")))){return r+'\nMust be numeric (with or without decimals, commas allowed).'}else{if(l==="numeric"&&(!/^[0-9\.]+$/.test(s)||isNaN(s))){return r+'\nMust be numeric (with or without decimals, no commas).'}else{if(l==="integer"&&(!/^[0-9]+$/.test(s)||isNaN(s))){return r+'\nMust be an integer (a whole number, without any decimals).'}else{if(l==="integer-gt-0"&&(!/^[0-9]+$/.test(s)||isNaN(s)||s<=0)){return r+'\nMust be an integer > 0 (whole number, no decimals, greater than 0).'}else{if(l==="float"&&(!/^[0-9\.]+$/.test(s)||!/[0-9]/.test(s)||!/\./.test(s)||isNaN(s))){return r+'\nMust be a float (floating point number, decimals required).'}else{if(l==="float-gt-0"&&(!/^[0-9\.]+$/.test(s)||!/[0-9]/.test(s)||!/\./.test(s)||isNaN(s)||s<=0)){return r+'\nMust be a float > 0 (floating point number, decimals required, greater than 0).'}else{if(l==="date"&&!/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/.test(s)){return r+'\nMust be a date (required date format: dd/mm/yyyy).'}else{if(l==="email"&&!/^[a-zA-Z0-9_!#$%&*+=?`{}~|\/\^\'\-]+(?:\.?[a-zA-Z0-9_!#$%&*+=?`{}~|\/\^\'\-]+)*@[a-zA-Z0-9]+(?:\-*[a-zA-Z0-9]+)*(?:\.[a-zA-Z0-9]+(?:\-*[a-zA-Z0-9]+)*)*(?:\.[a-zA-Z][a-zA-Z0-9]+)?$/.test(s)){return r+'\nMust be a valid email address.'}else{if(l==="email"&&k&&i.test(s)){return r+"\n"+d.sprintf('Please use a personal email address.\nAddresses like <%s@> are problematic.',s.split("@")[0])}else{if(l==="url"&&!/^https?\:\/\/.+$/i.test(s)){return r+'\nMust be a full URL (starting with http or https).'}else{if(l==="domain"&&!/^[a-zA-Z0-9]+(?:\-*[a-zA-Z0-9]+)*(?:\.[a-zA-Z0-9]+(?:\-*[a-zA-Z0-9]+)*)*(?:\.[a-zA-Z][a-zA-Z0-9]+)?$/.test(s)){return r+'\nMust be a domain name (domain name only, without http).'}else{if(l==="phone"&&(!/^[0-9 ()\-]+$/.test(s)||s.replace(/[^0-9]+/g,"").length!==10)){return r+'\nMust be a phone # (10 digits w/possible hyphens, spaces, brackets).'}else{if(l==="uszip"&&!/^[0-9]{5}(?:\-[0-9]{4})?$/.test(s)){return r+'\nMust be a US zipcode (5-9 digits w/ possible hyphen).'}else{if(l==="cazip"&&!/^[0-9A-Z]{3} ?[0-9A-Z]{3}$/i.test(s)){return r+'\nMust be a Canadian zipcode (6 alpha-numerics w/possible space).'}else{if(l==="uczip"&&!/^[0-9]{5}(?:\-[0-9]{4})?$/.test(s)&&!/^[0-9A-Z]{3} ?[0-9A-Z]{3}$/i.test(s)){return r+'\nMust be a zipcode (either a US or Canadian zipcode).'}else{if(l==="ukpostcode"&&!/^(([a-zA-Z]{1,2}[0-9][a-zA-Z0-9]?|ASCN|STHL|TDCU|BBND|[BFS]IQQ|PCRN|TKCA) ?[0-9][a-zA-Z]{2}|BFPO ?[0-9]{1,4}|(KY[0-9]|MSR|VG|AI)[ -]?[0-9]{4}|[a-zA-Z]{2} ?[0-9]{2}|GE ?CX|GIR ?0A{2}|SAN ?TA1)$/.test(s)){return r+'\nMust be a valid UK postcode.'}else{if(/^alphanumerics\-spaces\-punctuation\-[0-9]+(?:\-e)?$/.test(l)&&!/^[a-z 0-9\/\\\\,.?:;"\'{}[\]\^|+=_()*&%$#@!`~\-]+$/i.test(s)){return r+'\nPlease use alphanumerics, spaces & punctuation only.'}else{if(/^alphanumerics\-spaces\-[0-9]+(?:\-e)?$/.test(l)&&!/^[a-z 0-9]+$/i.test(s)){return r+'\nPlease use alphanumerics & spaces only.'}else{if(/^alphanumerics\-punctuation\-[0-9]+(?:\-e)?$/.test(l)&&!/^[a-z0-9\/\\\\,.?:;"\'{}[\]\^|+=_()*&%$#@!`~\-]+$/i.test(s)){return r+'\nPlease use alphanumerics & punctuation only (no spaces).'}else{if(/^alphanumerics\-[0-9]+(?:\-e)?$/.test(l)&&!/^[a-z0-9]+$/i.test(s)){return r+'\nPlease use alphanumerics only (no spaces/punctuation).'}else{if(/^alphabetics\-[0-9]+(?:\-e)?$/.test(l)&&!/^[a-z]+$/i.test(s)){return r+'\nPlease use alphabetics only (no digits/spaces
3/punctuation).'}else{if(/^numerics\-[0-9]+(?:\-e)?$/.test(l)&&!/^[0-9]+$/i.test(s)){return r+'\nPlease use numeric digits only.'}else{if(/^(?:any|alphanumerics\-spaces\-punctuation|alphanumerics\-spaces|alphanumerics\-punctuation|alphanumerics|alphabetics|numerics)\-[0-9]+(?:\-e)?$/.test(l)){var n=l.split("-"),h=Number(n[1]),j=(n.length>2&&n[2]==="e");if(j&&s.length!==h){return r+"\n"+d.sprintf('Must be exactly %s %s.',h,((n[0]==="numerics")?((h===1)?'digit':'digits'):((h===1)?'character':'characters')))}else{if(s.length<h){return r+"\n"+d.sprintf('Must be at least %s %s.',h,((n[0]==="numerics")?((h===1)?'digit':'digits'):((h===1)?'character':'characters')))}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}return""};window.ws_plugin__s2member_animateProcessing=function(g,f){if(f){d(g).removeClass("ws-plugin--s2member-animate-processing")}else{d(g).addClass("ws-plugin--s2member-animate-processing")}};window.ws_plugin__s2member_escAttr=window.ws_plugin__s2member_escHtml=function(f){if(/[&\<\>"']/.test(f=String(f))){f=f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),f=f.replace(/"/g,"&quot;").replace(/'/g,"&#039;")}return f};window.ws_plugin__s2member_escjQAttr=function(f){return String(f).replace(/([.:\[\]])/g,"\\$1")};if(!b&&S2MEMBER_CURRENT_USER_IS_LOGGED_IN&&S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY<S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED){d('a[href*="s2member_file_download="], a[href*="/s2member-files/"], a[href^="s2member-files/"], a[href*="/'+a.replace(/([\:\.\[\]])/g,"\\$1")+'/"], a[href^="'+a.replace(/([\:\.\[\]])/g,"\\$1")+'/"]').click(function(){if(!/s2member[_\-]file[_\-]download[_\-]key[\=\-].+/i.test(this.href)){var f='— Confirm File Download —\n\n';f+=d.sprintf('You`ve downloaded %s protected %s in the last %s.',S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY,((S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY===1)?'file':'files'),((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS===1)?'24 hours':d.sprintf('%s days',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS)))+"\n\n";f+=(S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED)?'You`re entitled to UNLIMITED downloads though (so, no worries).':d.sprintf('You`re entitled to %s unique %s %s.',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED,((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED===1)?'download':'downloads'),((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS===1)?'each day':d.sprintf('every %s-day period',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS)));if((/s2member[_\-]skip[_\-]confirmation/i.test(this.href)&&!/s2member[_\-]skip[_\-]confirmation[\=\-](0|no|false)/i.test(this.href))||confirm(f)){if(d.inArray(this.href,e)===-1){S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY++,e.push(this.href)}return true}return false}return true})}if(!/\/wp-admin([\/?#]|$)/i.test(location.href)){d("input#ws-plugin--s2member-profile-password1, input#ws-plugin--s2member-profile-password2").on("keyup initialize.s2",function(){ws_plugin__s2member_passwordStrength(d("input#ws-plugin--s2member-profile-login"),d("input#ws-plugin--s2member-profile-password1"),d("input#ws-plugin--s2member-profile-password2"),d("div#ws-plugin--s2member-profile-password-strength"))}).trigger("initialize.s2");d("form#ws-plugin--s2member-profile").submit(function(){var h=this,g="",f="",l="",j=d("input#ws-plugin--s2member-profile-password1",h),i=d("input#ws-plugin--s2member-profile-password2",h);var k=d("input#ws-plugin--s2member-profile-submit",h);d(":input",h).each(function(){var m=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(m&&(g=d.trim(d('label[for="'+m+'"]',h).first().children("strong").first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}});if(l=d.trim(l)){alert('— Oops, you missed something: —\n\n'+l);return false}else{if(d.trim(j.val())&&d.trim(j.val())!==d.trim(i.val())){alert('— Oops, you missed something: —\n\nPasswords do not match up. Please try again.');return false}else{if(d.trim(j.val())&&d.trim(j.val()).length<ws_plugin__s2member_passwordMinLength()){alert('— Oops, you missed something: —\n\nPassword MUST be at least 6 characters. Please try again.');return false}else{if(d.trim(j.val())&&ws_plugin__s2member_passwordStrengthMeter(d.trim(j.val()),d.trim(i.val()),true)<ws_plugin__s2member_passwordMinStrengthScore()){alert('— Oops, you missed something: —\n\nPassword strength MUST be `weak`, `good`, or `strong`. Please try again.');return false}}}}ws_plugin__s2member_animateProcessing(k);return true})}if(/\/wp-signup\.php/i.test(location.href)){d("div#content > div.mu_register > form#setupform").submit(function(){var h=this,g="",f="",j="",i=d('p.submit input[type="submit"]',h);d("input#user_email",h).attr("data-expected","email");d("input#user_name, input#user_email, input#blogname, input#blog_title, input#captcha_code",h).attr({"aria-required":"true"});d(":input",h).each(function(){var k=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(k&&(g=d.trim(d('label[for="'+k+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){j+=f+"\n\n"}}});if(j=d.trim(j)){alert('— Oops, you missed something: —\n\n'+j);return false}ws_plugin__s2member_animateProcessing(i);return true})}if(/\/wp-login\.php/i.test(location.href)){d("div#login > form#registerform input#user_login").attr("tabindex","10");d("div#login > form#registerform input#user_email").attr("tabindex","20");d("div#login > form#registerform input#wp-submit").attr("tabindex","1000");d("input#ws-plugin--s2member-custom-reg-field-user-pass1, input#ws-plugin--s2member-custom-reg-field-user-pass2").on("keyup initialize.s2",function(){ws_plugin__s2member_passwordStrength(d("input#user_login"),d("input#ws-plugin--s2member-custom-reg-field-user-pass1"),d("input#ws-plugin--s2member-custom-reg-field-user-pass2"),d("div#ws-
3plugin--s2member-custom-reg-field-user-pass-strength"))}).trigger("initialize.s2");d("div#login > form#registerform").submit(function(){var h=this,g="",f="",l="",k=d('input#ws-plugin--s2member-custom-reg-field-user-pass1[aria-required="true"]',h),i=d("input#ws-plugin--s2member-custom-reg-field-user-pass2",h),j=d("input#wp-submit",h);d("input#user_email",h).attr("data-expected","email");d("input#user_login, input#user_email, input#captcha_code",h).attr({"aria-required":"true"});d(":input",h).each(function(){var m=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(d.inArray(m,["user_login","user_email","captcha_code"])!==-1){if((g=d.trim(d(this).parent("label").text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}}else{if(m&&(g=d.trim(d('label[for="'+m+'"]',h).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}}});if(l=d.trim(l)){alert('— Oops, you missed something: —\n\n'+l);return false}else{if(k.length&&d.trim(k.val())!==d.trim(i.val())){alert('— Oops, you missed something: —\n\nPasswords do not match up. Please try again.');return false}else{if(k.length&&d.trim(k.val()).length<ws_plugin__s2member_passwordMinLength()){alert('— Oops, you missed something: —\n\nPassword MUST be at least 6 characters. Please try again.');return false}else{if(k.length&&ws_plugin__s2member_passwordStrengthMeter(d.trim(k.val()),d.trim(i.val()),true)<ws_plugin__s2member_passwordMinStrengthScore()){alert('— Oops, you missed something: —\n\nPassword strength MUST be `weak`, `good`, or `strong`. Please try again.');return false}}}}ws_plugin__s2member_animateProcessing(j);return true})}if(/\/wp-admin\/(?:user\/)?profile\.php/i.test(location.href)){d("form#your-profile").submit(function(){var h=this,g="",f="",i="";d("input#email",h).attr("data-expected","email");d(':input[id^="ws-plugin--s2member-profile-"]',h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('— Oops, you missed something: —\n\n'+i);return false}return true})}if(c){d("body.registration form div#ws-plugin--s2member-custom-reg-fields-4bp-section").closest("form").submit(function(){var h=this,g="",f="",i="";d("input#signup_email",h).attr("data-expected","email");d("input#signup_username, input#signup_email, input#signup_password, input#field_1",h).attr({"aria-required":"true"});d(":input",h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('— Oops, you missed something: —\n\n'+i);return false}return true});d("body.logged-in.profile.profile-edit :input.ws-plugin--s2member-profile-field-4bp").closest("form").submit(function(){var h=this,g="",f="",i="";d("input#field_1",h).attr({"aria-required":"true"});d(":input",h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('— Oops, you missed something: —\n\n'+i);return false}return true})}});
4var S2MEMBER_PRO_VERSION = '261001';
5jQuery(document).ready(function(a){});
6var S2MEMBER_PRO_PAYPAL_GATEWAY = true,S2MEMBER_PRO_PAYPAL_CHECKOUT = {"enabled":true,"sandbox":false,"client_id":"BAAxmI939wk3deeFXoSHYiFLIYO9k7vW-HK4laRl_qUFTuSNe28UxohEmY6AmOuavL9hg6btR4ByUK8JyA","messages":{"prepare_failed":"Unable to prepare PayPal Checkout. Please try again.","payment_failed":"PayPal Checkout could not be completed. Please try again.","payment_recovering":"PayPal is taking longer than expected. Confirming your payment...","payment_unresolved":"PayPal could not confirm the payment yet. Please try again. If this continues, contact support for assistance.","subscription_failed":"PayPal subscription could not be completed. Please try again.","subscription_recovering":"PayPal is taking longer than expected. Confirming your subscription...","subscription_unresolved":"PayPal could not confirm the subscription yet. Please try again. If this continues, contact support for assistance.","sdk_failed":"PayPal Checkout could not be loaded. Please refresh the page and try again.","cancelled":"PayPal Checkout was cancelled."}};
7jQuery(document).ready(function(A){var e,r,k,n,q,L,z,x={"aria-required":"true"},b={"aria-required":"false"},B={disabled:"disabled"},i={"aria-required":"false",disabled:"disabled"};z=new Image(),z.src='https://www.your-poc.com/wp-content/plugins/s2member/src/images/ajax-loader.gif';if(A("form.s2member-pro-paypal-registration-form").length>1||A("form.s2member-pro-paypal-checkout-form").length>1||A("form.s2member-pro-paypal-sp-checkout-form").length>1){return alert("Detected more than one s2Member Pro-Form.\n\nPlease use only ONE s2Member Pro-Form Shortcode on each Post/Page. Attempting to serve more than one Pro-Form on each Post/Page (even w/ DHTML) may result in unexpected/broken functionality.")}if((e=A("form#s2member-pro-paypal-cancellation-form")).length===1){var O="div#s2member-pro-paypal-cancellation-form-captcha-section",o="div#s2member-pro-paypal-cancellation-form-submission-section",w=A(o+" button#s2member-pro-paypal-cancellation-submit");ws_plugin__s2member_animateProcessing(w,"reset"),w.removeAttr("disabled");
7e.submit(function(){var U=this,S="",R="",V="";var T=A(O+" input#recaptcha_response_field, "+O+" #g-recaptcha-response");A(":input",U).each(function(){var W=A.trim(A(this).attr("id")).replace(/---[0-9]+$/g,"");if(W&&(S=A.trim(A('label[for="'+W+'"]',U).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(R=ws_plugin__s2member_validationErrors(S,this,U)){V+=R+"\n\n"}}});if(V=A.trim(V)){alert('— Oops, you missed something: —\n\n'+V);return false}else{if(T.length&&!T.val()){alert('— Oops, you missed something: —\n\nSecurity Verification missing. Please try again.');return false}}w.attr(B),ws_plugin__s2member_animateProcessing(w);return true})}else{if((r=A("form#s2member-pro-paypal-update-form")).length===1){var u,v="div#s2member-pro-paypal-update-form-billing-method-section",I="div#s2member-pro-paypal-update-form-billing-address-section",m=v+' input[name="s2member_pro_paypal_update[card_type]"]',O="div#s2member-pro-paypal-update-form-captcha-section",o="div#s2member-pro-paypal-update-form-submission-section",w=A(o+" button#s2member-pro-paypal-update-submit");ws_plugin__s2member_animateProcessing(w,"reset"),w.removeAttr("disabled");(u=function(R){var S=A(m+":checked").val();if(A.inArray(S,["Visa","MasterCard","Amex","Discover"])!==-1){A(v+" > div.s2member-pro-paypal-update-form-div").show();A(v+" > div.s2member-pro-paypal-update-form-div :input").attr(x);A(v+" > div#s2member-pro-paypal-update-form-card-start-date-issue-number-div").hide();A(v+" > div#s2member-pro-paypal-update-form-card-start-date-issue-number-div :input").attr(b);A(I+" > div.s2member-pro-paypal-update-form-div").show();A(I+" > div.s2member-pro-paypal-update-form-div :input").attr(x);A(I).show(),(R)?A(v+" input#s2member-pro-paypal-update-card-number").focus():null}else{if(A.inArray(S,["Maestro","Solo"])!==-1){A(v+" > div.s2member-pro-paypal-update-form-div").show();A(v+" > div.s2member-pro-paypal-update-form-div :input").attr(x);A(I+" > div.s2member-pro-paypal-update-form-div").show();A(I+" > div.s2member-pro-paypal-update-form-div :input").attr(x);A(I).show(),(R)?A(v+" input#s2member-pro-paypal-update-card-number").focus():null}else{if(!S){A(v+" > div.s2member-pro-paypal-update-form-div").hide();A(v+" > div.s2member-pro-paypal-update-form-div :input").attr(b);A(v+" > div#s2member-pro-paypal-update-form-card-type-div").show();A(v+" > div#s2member-pro-paypal-update-form-card-type-div :input").attr(x);A(I+" > div.s2member-pro-paypal-update-form-div").hide();A(I+" > div.s2member-pro-paypal-update-form-div :input").attr(b);A(I).hide(),(R)?A(o+" button#s2member-pro-paypal-update-submit").focus():null}}}})();A(m).click(u).change(u);r.submit(function(){var U=this,S="",R="",V="";var T=A(O+" input#recaptcha_response_field, "+O+" #g-recaptcha-response");if(!A(m+":checked").val()){alert('Please choose a Billing Method.');return false}A(":input",U).each(function(){var W=A.trim(A(this).attr("id")).replace(/---[0-9]+$/g,"");if(W&&(S=A.trim(A('label[for="'+W.replace(/-(month|year)/,"")+'"]',U).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(R=ws_plugin__s2member_validationErrors(S,this,U)){V+=R+"\n\n"}}});if(V=A.trim(V)){alert('— Oops, you missed something: —\n\n'+V);return false}else{if(T.length&&!T.val()){alert('— Oops, you missed something: —\n\nSecurity Verification missing. Please try again.');return false}}w.attr(B),ws_plugin__s2member_animateProcessing(w);return true})}else{if((k=A("form#s2member-pro-paypal-registration-form")).length===1){var j,M,s,a="div#s2member-pro-paypal-registration-form-options-section",G="div#s2member-pro-paypal-registration-form-description-section",N="div#s2member-pro-paypal-registration-form-registration-section",O="div#s2member-pro-paypal-registration-form-captcha-section",o="div#s2member-pro-paypal-registration-form-submission-section",l=o+" input#s2member-pro-paypal-registration-nonce",w=A(o+" button#s2member-pro-paypal-registration-submit");ws_plugin__s2member_animateProcessing(w,"reset"),w.removeAttr("disabled");(j=function(R){if(!A(a+" select#s2member-pro-paypal-registration-options option").length){A(a).hide();A(G).show()}else{A(a).show();A(G).hide();A(a+" select#s2member-pro-paypal-registration-options").change(function(){A(l).val("option");k.attr("action",k.attr("action").replace(/#.*$/,"")+"#s2p-form");k.submit()})}})();(M=function(R){if(A(o+" input#s2member-pro-paypal-registration-names-not-required-or-not-possible").length){A(N+" > div#s2member-pro-paypal-registration-form-first-name-div").hide();A(N+" > div#s2member-pro-paypal-registration-form-first-name-div :input").attr(i);A(N+" > div#s2member-pro-paypal-registration-form-last-name-div").hide();A(N+" > div#s2member-pro-paypal-registration-form-last-name-div :input").attr(i)}})();(s=function(R){if(A(o+" input#s2member-pro-paypal-registration-password-not-required-or-not-possible").length){A(N+" > div#s2member-pro-paypal-registration-form-password-div").hide();A(N+" > div#s2member-pro-paypal-registration-form-password-div :input").attr(i)}})();A(N+" > div#s2member-pro-paypal-registration-form-password-div :input").on("keyup initialize.s2",function(){ws_plugin__s2member_passwordStrength(A(N+" input#s2member-pro-paypal-registration-username"),A(N+" input#s2member-pro-paypal-registration-password1"),A(N+" input#s2member-pro-paypal-registration-password2"),A(N+" div#s2member-pro-paypal-registration-form-password-strength"))}).trigger("initialize.s2");k.submit(function(){if(A.inArray(A(l).val(),["option"])===-1){var U=this,S="",R="",X="";var T=A(O+" input#recaptcha_response_field, "+O+" #g-recaptcha-response");var W=A(N+' input#s2member-pro-paypal-registration-password1[aria-required="true"]');var V=A(N+" input#s2member-pro-paypal-registration-password2");A(":input",U).each(function(){var Y=A.trim(A(this).attr("id")).replace(/---[0-9]+$/g,"");if(Y&&(S=A.trim(A('label[for="'+Y+'"]',U).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(R=ws_plugin__s2member_validationErrors(S,this,U)){X+=R+"\n\n"}}});if(X=A.trim(X)){alert('— Oops, you missed something: —\n\n'+X);return false}else{if(W.length&&A.trim(W.val())!==A.trim(V.val())){alert('— Oops, you missed something: —\n\nPasswords do not match up. Please try again.');return false}else{if(W.length&&A.trim(W.val()).length<ws_plugin__s2member_passwordMinLength()){alert('— Oops, you missed something: —\n\nPassword MUST be at least 6 characters. Please try again.');return false}else{if(W.length&&ws_plugin__s2member_passwordStrengthMeter(A.trim(W.val()),A.trim(V.val()),true)<ws_plugin__s2member_passwordMinStrengthScore()){alert('— Oops, you missed something: —\n\nPassword strength MUST be `weak`, `good`, or `strong`. Please try again.');return false}else{if(T.length&&!T.val()){alert('— Oops, you missed something: —\n\nSecurity Verification missing. Please try again.');return false}}}}}}w.attr(B),ws_plugin__s2member_animateProcessing(w);return true})}else{if((n=A("form#s2member-pro-paypal-sp-checkout-form")).length===1){var j,F,K,t=true,J,p,f,D,c,E,u,a="div#s2member-pro-paypal-sp-checkout-form-options-section",G="div#s2member-pro-paypal-sp-checkout-form-description-section",H="div#s2member-pro-paypal-sp-checkout-form-coupon-section",P=H+" input#s2member-pro-paypal-sp-checkout-coupon-apply",N="div#s2member-pro-paypal-sp-checkout-form-registration-section",v="div#s2member-pro-paypal-sp-checkout-form-billing-method-section",m=v+' input[name="s2member_pro_paypal_sp_checkout[card_type]"]',I="div#s2member-pro-paypal-sp-checkout-form-billing-address-section",y=A(I+" > div#s2member-pro-paypal-sp-checkout-form-ajax-tax-div"),O="div#s2member-pro-paypal-sp-checkout-form-captcha-section",o="div#s2member-pro-paypal-sp-checkout-form-submission-section",l=o+" input#s2member-pro-paypal-sp-checkout-nonce",d=o+" #s2member-pro-paypal-sp-checkout-submit";var C=A.trim(A("input#s2member-pro-paypal-lang-attr").val());var g='<button type="submit" id="s2member-pro-paypal-sp-checkout-submit" class="s2member-pro-paypal-submit s2member-pro-paypal-sp-checkout-submit btn btn-primary" tabindex="500">Submit Form</button>';var h='<input type="image" src="https://www.paypal.com/'+((C)?C:'en_US')+'/i/btn/btn_xpressCheckout.gif" id="s2member-pro-paypal-sp-checkout-submit" class="s2member-pro-paypal-submit s2member-pro-paypal-sp-checkout-submit" value="Submit Form" tabindex="500" />';ws_plugin__s2member_animateProcessing(A(d),"reset"),A(d).removeAttr("disabled"),A(P).removeAttr("disabled");(j=function(R){if(!A(a+" select#s2member-pro-paypal-sp-checkout-options option").length){A(a).hide();A(G).show()}else{A(a).show();A(G).hide();A(a+" select#s2member-pro-paypal-sp-checkout-options").change(function(){A(l).val("option");n.attr("action",n.attr("action").replace(/#.*$/,"")+"#s2p-form");n.submit()})}})();(F=function(R){if(A(o+" input#s2member-pro-paypal-sp-checkout-coupons-not-required-or-not-possible").length){A(H).hide()}else{A(H).show()}})();(K=function(R){if(A(o+" input#s2member-pro-paypal-sp-checkout-tax-not-required-or-not-possible").length){y.hide(),t=false}})();(J=function(S){if(t&&!(S&&S.interval&&document.activeElement.id==="s2member-pro-paypal-sp-checkout-country")){var R=A(o+" input#s2member-pro-paypal-sp-checkout-attr").val();var V=A.trim(A(I+" input#s2member-pro-paypal-sp-checkout-state").val());var W=A(I+" select#s2member-pro-paypal-sp-checkout-country").val();var U=A.trim(A(I+" input#s2member-pro-paypal-sp-checkout-zip").val());var T=V+"|"+W+"|"+U;if(V&&W&&U&&T&&(!c||c!==T)&&(c=T)){(D)?D.abort():null,clearTimeout(f),f=null;y.html('<div><img src="https://www.your-poc.com/wp-content/plugins/s2member/src/images/ajax-loader.gif" alt="Calculating Sales Tax..." /> calculating sales tax...</div>');f=setTimeout(function(){D=A.post('https://www.your-poc.com/wp-admin/admin-ajax.php',{action:"ws_plugin__s2member_pro_paypal_ajax_tax",ws_plugin__s2member_pro_paypal_ajax_tax:'ZGVmNTAyMDBiYzNmOTBmYjAxNzg2OTg0ZWM0YTIyM2MxM2JmYmQyZDkzNzUyNGZlZjZlZTAxNDAxZDBjMjJjMDliNjc0YzkxNTIwMjQ5ZDg5ZDUyOWI0ZGEwMjQ2MTVhNTA2YjAzMmMzNzZhYzQyN2U0MzFjNGQ3NjgzYTg0NjU2NmJlMWU1ZGRjZTkyOTQzNGRhNjFiNjE5NGRkY2JiYTIwYjFhNzU4Y2U4MGVmNDFjNDc4NjkwMzA3NGVjOTFkY2IzMWI3Mzg0MTAwMDI2MzcxNDgyYmM2NmFiYzJkNzUyOThkZTcwZjg3ODdkMmUzYzY2ZWQy',"ws_plugin__s2member_pro_paypal_ajax_tax_vars[attr]":R,"ws_plugin__s2member_pro_paypal_ajax_tax_vars[state]":V,"ws_plugin__s2member_pro_paypal_ajax_tax_vars[country]":W,"ws_plugin__s2member_pro_paypal_ajax_tax_vars[zip]":U},function(X){clearTimeout(f),f=null;try{y.html("<div>"+A.sprintf('<strong>Sales Tax%s:</strong> %s<br /><strong>— Total%s:</strong> %s',((X.trial)?' Today':""),((X.tax_per)?"<em>"+X.tax_per+"</em> ( "+X.cur_symbol+""+X.tax+" )":X.cur_symbol+""+X.tax),((X.trial)?' Today':""),X.cur_symbol+""+X.total)+"</div>")}catch(Y){}},"json")},((S&&S.keyCode)?1000:100))}else{if(!V||!W||!U||!T){y.html(""),c=null}}}})();p=function(R){setTimeout(function(){J(R)},10)};
7A(I+" input#s2member-pro-paypal-sp-checkout-state").bind("keyup blur",J).bind("cut paste",p);A(I+" input#s2member-pro-paypal-sp-checkout-zip").bind("keyup blur",J).bind("cut paste",p);A(I+" select#s2member-pro-paypal-sp-checkout-country").bind("change",J);setInterval(function(){J({interval:true})},1000);(E=function(R){if(S2MEMBER_CURRENT_USER_IS_LOGGED_IN){A(N+" input#s2member-pro-paypal-sp-checkout-first-name").each(function(){var S=A(this),T=S.val();(!T)?S.val(S2MEMBER_CURRENT_USER_FIRST_NAME):null});A(N+" input#s2member-pro-paypal-sp-checkout-last-name").each(function(){var S=A(this),T=S.val();(!T)?S.val(S2MEMBER_CURRENT_USER_LAST_NAME):null});A(N+" input#s2member-pro-paypal-sp-checkout-email").each(function(){var S=A(this),T=S.val();(!T)?S.val(S2MEMBER_CURRENT_USER_EMAIL):null})}})();(u=function(R){if(A(o+" input#s2member-pro-paypal-sp-checkout-payment-not-required-or-not-possible").length){A(m).val(["Free"])}var S=A(m+":checked").val();if(A.inArray(S,["Free"])!==-1){A(v).hide(),A(I).hide();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div").hide();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(b);A(I+" > div.s2member-pro-paypal-sp-checkout-form-div").hide();A(I+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(b);(!t)?y.hide():null;A(o+" #s2member-pro-paypal-sp-checkout-submit").replaceWith(g);(R)?A(o+" #s2member-pro-paypal-sp-checkout-submit").focus():null}else{if(A.inArray(S,["Visa","MasterCard","Amex","Discover"])!==-1){A(v).show(),A(I).show();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div").show();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(x);A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-start-date-issue-number-div").hide();A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-start-date-issue-number-div :input").attr(b);A(I+" > div.s2member-pro-paypal-sp-checkout-form-div").show();A(I+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(x);(!t)?y.hide():null;A(o+" #s2member-pro-paypal-sp-checkout-submit").replaceWith(g);(R)?A(v+" input#s2member-pro-paypal-sp-checkout-card-number").focus():null}else{if(A.inArray(S,["Maestro","Solo"])!==-1){A(v).show(),A(I).show();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div").show();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(x);A(I+" > div.s2member-pro-paypal-sp-checkout-form-div").show();A(I+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(x);(!t)?y.hide():null;A(o+" #s2member-pro-paypal-sp-checkout-submit").replaceWith(g);(R)?A(v+" input#s2member-pro-paypal-sp-checkout-card-number").focus():null}else{if((!S||S==="PayPal")&&t){if(A(v).attr("data-paypal-only")){A(v).hide()}else{A(v).show()}A(I).show();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div").show();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(x);A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-number-div").hide();A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-number-div :input").attr(b);A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-expiration-div").hide();A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-expiration-div :input").attr(b);A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-verification-div").hide();A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-verification-div :input").attr(b);A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-start-date-issue-number-div").hide();A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-start-date-issue-number-div :input").attr(b);A(I+" > div.s2member-pro-paypal-sp-checkout-form-div").show();A(I+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(x);A(I+" > div#s2member-pro-paypal-sp-checkout-form-street-div").hide();A(I+" > div#s2member-pro-paypal-sp-checkout-form-street-div :input").attr(b);A(I+" > div#s2member-pro-paypal-sp-checkout-form-city-div").hide();A(I+" > div#s2member-pro-paypal-sp-checkout-form-city-div :input").attr(b);A(o+" #s2member-pro-paypal-sp-checkout-submit").replaceWith(h);(R)?A(I+" input#s2member-pro-paypal-sp-checkout-state").focus():null}else{if(!S||S==="PayPal"){if(A(v).attr("data-paypal-only")){A(v).hide()}else{A(v).show()}A(I).hide();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div").hide();A(v+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(b);A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-type-div").show();A(v+" > div#s2member-pro-paypal-sp-checkout-form-card-type-div :input").attr(x);A(I+" > div.s2member-pro-paypal-sp-checkout-form-div").hide();A(I+" > div.s2member-pro-paypal-sp-checkout-form-div :input").attr(b);A(o+" #s2member-pro-paypal-sp-checkout-submit").replaceWith(h);(R)?A(o+" #s2member-pro-paypal-sp-checkout-submit").focus():null}}}}}K()})();A(m).click(u).change(u);A(P).click(function(){A(l).val("apply-coupon"),n.submit()});n.submit(function(){if(A.inArray(A(l).val(),["option","apply-coupon"])===-1){var U=this,S="",R="",V="";var T=A(O+" input#recaptcha_response_field, "+O+" #g-recaptcha-response");if(!A(m+":checked").val()){A(m).val(["PayPal"])}A(":input",U).each(function(){var W=A.trim(A(this).attr("id")).replace(/---[0-9]+$/g,"");if(W&&(S=A.trim(A('label[for="'+W.replace(/-(month|year)/,"")+'"]',U).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(R=ws_plugin__s2member_validationErrors(S,this,U)){V+=R+"\n\n"}}});if(V=A.trim(V)){alert('— Oops, you missed something: —\n\n'+V);return false}else{if(T.length&&!T.val()){alert('— Oops, you missed something: —\n\nSecurity Verification missing. Please try again.');return false}}}
7A(d).attr(B),ws_plugin__s2member_animateProcessing(A(d)),A(P).attr(B);return true})}else{if((q=A("form#s2member-pro-paypal-checkout-form")).length===1){var j,F,K,t=true,J,p,f,D,c,s,u,E,a="div#s2member-pro-paypal-checkout-form-options-section",G="div#s2member-pro-paypal-checkout-form-description-section",H="div#s2member-pro-paypal-checkout-form-coupon-section",P=H+" input#s2member-pro-paypal-checkout-coupon-apply",N="div#s2member-pro-paypal-checkout-form-registration-section",Q="div#s2member-pro-paypal-checkout-form-custom-fields-section",v="div#s2member-pro-paypal-checkout-form-billing-method-section",m=v+' input[name="s2member_pro_paypal_checkout[card_type]"]',I="div#s2member-pro-paypal-checkout-form-billing-address-section",y=A(I+" > div#s2member-pro-paypal-checkout-form-ajax-tax-div"),O="div#s2member-pro-paypal-checkout-form-captcha-section",o="div#s2member-pro-paypal-checkout-form-submission-section",l=o+" input#s2member-pro-paypal-checkout-nonce",d=o+" #s2member-pro-paypal-checkout-submit";var C=A.trim(A("input#s2member-pro-paypal-lang-attr").val());var g='<button type="submit" id="s2member-pro-paypal-checkout-submit" class="s2member-pro-paypal-submit s2member-pro-paypal-checkout-submit btn btn-primary" tabindex="600">Submit Form</button>';var h='<input type="image" src="https://www.paypal.com/'+((C)?C:'en_US')+'/i/btn/btn_xpressCheckout.gif" id="s2member-pro-paypal-checkout-submit" class="s2member-pro-paypal-submit s2member-pro-paypal-checkout-submit" value="Submit Form" tabindex="600" />';ws_plugin__s2member_animateProcessing(A(d),"reset"),A(d).removeAttr("disabled"),A(P).removeAttr("disabled");(j=function(R){if(!A(a+" select#s2member-pro-paypal-checkout-options option").length){A(a).hide();A(G).show()}else{A(a).show();A(G).hide();A(a+" select#s2member-pro-paypal-checkout-options").change(function(){A(l).val("option");q.attr("action",q.attr("action").replace(/#.*$/,"")+"#s2p-form");q.submit()})}})();(F=function(R){if(A(o+" input#s2member-pro-paypal-checkout-coupons-not-required-or-not-possible").length){A(H).hide()}else{A(H).show()}})();(K=function(R){if(A(o+" input#s2member-pro-paypal-checkout-tax-not-required-or-not-possible").length){y.hide(),t=false}})();(J=function(S){if(t&&!(S&&S.interval&&document.activeElement.id==="s2member-pro-paypal-checkout-country")){var R=A(o+" input#s2member-pro-paypal-checkout-attr").val();var V=A.trim(A(I+" input#s2member-pro-paypal-checkout-state").val());var W=A(I+" select#s2member-pro-paypal-checkout-country").val();var U=A.trim(A(I+" input#s2member-pro-paypal-checkout-zip").val());var T=V+"|"+W+"|"+U;if(V&&W&&U&&T&&(!c||c!==T)&&(c=T)){(D)?D.abort():null,clearTimeout(f),f=null;y.html('<div><img src="https://www.your-poc.com/wp-content/plugins/s2member/src/images/ajax-loader.gif" alt="Calculating Sales Tax..." /> calculating sales tax...</div>');f=setTimeout(function(){D=A.post('https://www.your-poc.com/wp-admin/admin-ajax.php',{action:"ws_plugin__s2member_pro_paypal_ajax_tax",ws_plugin__s2member_pro_paypal_ajax_tax:'ZGVmNTAyMDBhMjI1Y2MxODc3MDQ2ZmQzMDY3MmQwYjUyMmU4MGU3NjlhNjNhZjE5MzFhMGU5YmMzYTgzN2E5M2NhM2Q3OGI5YmYxMTI4MGE2ZThiNWQ3YWE2Njk0MDE2Mzg4NTU5OGE0N2IwYjY1ZjE4M2NiNTlmOTQzNTExMmM2N2VmY2QxNjc0YjJhZGIzNzA5MTFmZDE0ODVkY2Q4MmYxN2I3ZWJkODdmODBkNWZkOTNiYzRlM2RiNDMzZmZjMTdmYWQyNmE5Mjk1NDk5NTEwZDc2ZGJkYmZmMDFiODU4N2U5NTUyZmRlNmZkYWRlMzU0ZGQ0',"ws_plugin__s2member_pro_paypal_ajax_tax_vars[attr]":R,"ws_plugin__s2member_pro_paypal_ajax_tax_vars[state]":V,"ws_plugin__s2member_pro_paypal_ajax_tax_vars[country]":W,"ws_plugin__s2member_pro_paypal_ajax_tax_vars[zip]":U},function(X,Z){clearTimeout(f),f=null;try{y.html("<div>"+A.sprintf('<strong>Sales Tax%s:</strong> %s<br /><strong>— Total%s:</strong> %s',((X.trial)?' Today':""),((X.tax_per)?"<em>"+X.tax_per+"</em> ( "+X.cur_symbol+""+X.tax+" )":X.cur_symbol+""+X.tax),((X.trial)?' Today':""),X.cur_symbol+""+X.total)+"</div>")}catch(Y){}},"json")},((S&&S.keyCode)?1000:100))}else{if(!V||!W||!U||!T){y.html(""),c=null}}}})();p=function(R){setTimeout(function(){J(R)},10)};
7A(I+" input#s2member-pro-paypal-checkout-state").bind("keyup blur",J).bind("cut paste",p);A(I+" input#s2member-pro-paypal-checkout-zip").bind("keyup blur",J).bind("cut paste",p);A(I+" select#s2member-pro-paypal-checkout-country").bind("change",J);setInterval(function(){J({interval:true})},1000);(s=function(R){if(A(o+" input#s2member-pro-paypal-checkout-password-not-required-or-not-possible").length){A(N+" > div#s2member-pro-paypal-checkout-form-password-div").hide();A(N+" > div#s2member-pro-paypal-checkout-form-password-div :input").attr(i)}})();(E=function(R){if(S2MEMBER_CURRENT_USER_IS_LOGGED_IN){A(N+" input#s2member-pro-paypal-checkout-first-name").each(function(){var S=A(this),T=S.val();(!T)?S.val(S2MEMBER_CURRENT_USER_FIRST_NAME):null});A(N+" input#s2member-pro-paypal-checkout-last-name").each(function(){var S=A(this),T=S.val();(!T)?S.val(S2MEMBER_CURRENT_USER_LAST_NAME):null});A(N+" input#s2member-pro-paypal-checkout-email").val(S2MEMBER_CURRENT_USER_EMAIL).attr(i);A(N+" input#s2member-pro-paypal-checkout-username").val(S2MEMBER_CURRENT_USER_LOGIN).attr(i);A(N+" > div#s2member-pro-paypal-checkout-form-password-div").hide();A(N+" > div#s2member-pro-paypal-checkout-form-password-div :input").attr(i);if(A.trim(A(N+" > div#s2member-pro-paypal-checkout-form-registration-section-title").html())==='Create Profile'){A(N+" > div#s2member-pro-paypal-checkout-form-registration-section-title").html('Your Profile')}A(Q).hide(),A(Q+" :input").attr(i)}})();(u=function(R){if(A(o+" input#s2member-pro-paypal-checkout-payment-not-required-or-not-possible").length){A(m).val(["Free"])}var S=A(m+":checked").val();if(A.inArray(S,["Free"])!==-1){A(v).hide(),A(I).hide();A(v+" > div.s2member-pro-paypal-checkout-form-div").hide();A(v+" > div.s2member-pro-paypal-checkout-form-div :input").attr(b);A(I+" > div.s2member-pro-paypal-checkout-form-div").hide();A(I+" > div.s2member-pro-paypal-checkout-form-div :input").attr(b);(!t)?y.hide():null;A(o+" #s2member-pro-paypal-checkout-submit").replaceWith(g);(R)?A(o+" #s2member-pro-paypal-checkout-submit").focus():null}else{if(A.inArray(S,["Visa","MasterCard","Amex","Discover"])!==-1){A(v).show(),A(I).show();A(v+" > div.s2member-pro-paypal-checkout-form-div").show();A(v+" > div.s2member-pro-paypal-checkout-form-div :input").attr(x);A(v+" > div#s2member-pro-paypal-checkout-form-card-start-date-issue-number-div").hide();A(v+" > div#s2member-pro-paypal-checkout-form-card-start-date-issue-number-div :input").attr(b);A(I+" > div.s2member-pro-paypal-checkout-form-div").show();A(I+" > div.s2member-pro-paypal-checkout-form-div :input").attr(x);(!t)?y.hide():null;A(o+" #s2member-pro-paypal-checkout-submit").replaceWith(g);(R)?A(v+" input#s2member-pro-paypal-checkout-card-number").focus():null}else{if(A.inArray(S,["Maestro","Solo"])!==-1){A(v).show(),A(I).show();A(v+" > div.s2member-pro-paypal-checkout-form-div").show();A(v+" > div.s2member-pro-paypal-checkout-form-div :input").attr(x);A(I+" > div.s2member-pro-paypal-checkout-form-div").show();A(I+" > div.s2member-pro-paypal-checkout-form-div :input").attr(x);(!t)?y.hide():null;A(o+" #s2member-pro-paypal-checkout-submit").replaceWith(g);(R)?A(v+" input#s2member-pro-paypal-checkout-card-number").focus():null}else{if((!S||S==="PayPal")&&t){if(A(v).attr("data-paypal-only")){A(v).hide()}else{A(v).show()}A(I).show();A(v+" > div.s2member-pro-paypal-checkout-form-div").show();A(v+" > div.s2member-pro-paypal-checkout-form-div :input").attr(x);A(v+" > div#s2member-pro-paypal-checkout-form-card-number-div").hide();A(v+" > div#s2member-pro-paypal-checkout-form-card-number-div :input").attr(b);A(v+" > div#s2member-pro-paypal-checkout-form-card-expiration-div").hide();A(v+" > div#s2member-pro-paypal-checkout-form-card-expiration-div :input").attr(b);A(v+" > div#s2member-pro-paypal-checkout-form-card-verification-div").hide();A(v+" > div#s2member-pro-paypal-checkout-form-card-verification-div :input").attr(b);A(v+" > div#s2member-pro-paypal-checkout-form-card-start-date-issue-number-div").hide();A(v+" > div#s2member-pro-paypal-checkout-form-card-start-date-issue-number-div :input").attr(b);A(I+" > div.s2member-pro-paypal-checkout-form-div").show();A(I+" > div.s2member-pro-paypal-checkout-form-div :input").attr(x);A(I+" > div#s2member-pro-paypal-checkout-form-street-div").hide();A(I+" > div#s2member-pro-paypal-checkout-form-street-div :input").attr(b);A(I+" > div#s2member-pro-paypal-checkout-form-city-div").hide();A(I+" > div#s2member-pro-paypal-checkout-form-city-div :input").attr(b);A(o+" #s2member-pro-paypal-checkout-submit").replaceWith(h);(R)?A(I+" input#s2member-pro-paypal-checkout-state").focus():null}else{if(!S||S==="PayPal"){if(A(v).attr("data-paypal-only")){A(v).hide()}else{A(v).show()}A(I).hide();A(v+" > div.s2member-pro-paypal-checkout-form-div").hide();A(v+" > div.s2member-pro-paypal-checkout-form-div :input").attr(b);A(v+" > div#s2member-pro-paypal-checkout-form-card-type-div").show();A(v+" > div#s2member-pro-paypal-checkout-form-card-type-div :input").attr(x);A(I+" > div.s2member-pro-paypal-checkout-form-div").hide();A(I+" > div.s2member-pro-paypal-checkout-form-div :input").attr(b);A(o+" #s2member-pro-paypal-checkout-submit").replaceWith(h);(R)?A(o+" #s2member-pro-paypal-checkout-submit").focus():null}}}}}})();A(m).click(u).change(u);A(P).click(function(){A(l).val("apply-coupon"),q.submit()});A(N+" > div#s2member-pro-paypal-checkout-form-password-div :input").on("keyup initialize.s2",function(){ws_plugin__s2member_passwordStrength(A(N+" input#s2member-pro-paypal-checkout-username"),A(N+" input#s2member-pro-paypal-checkout-password1"),A(N+" input#s2member-pro-paypal-checkout-password2"),A(N+" div#s2member-pro-paypal-checkout-form-password-strength"))}).trigger("initialize.s2");q.submit(function(){if(A.inArray(A(l).val(),["option","apply-coupon"])===-1){var U=this,S="",R="",X="";var T=A(O+" input#recaptcha_response_field, "+O+" #g-recaptcha-response");var W=A(N+' input#s2member-pro-paypal-checkout-password1[aria-required="true"]');var V=A(N+" input#s2member-pro-paypal-checkout-password2");if(!A(m+":checked").val()){A(m).val(["PayPal"])}A(":input",U).each(function(){var Y=A.trim(A(this).attr("id")).replace(/---[0-9]+$/g,"");if(Y&&(S=A.trim(A('label[for="'+Y.replace(/-(month|year)/,"")+'"]',U).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(R=ws_plugin__s2member_validationErrors(S,this,U)){X+=R+"\n\n"}}});if(X=A.trim(X)){alert('— Oops, you missed something: —\n\n'+X);return false}else{if(W.length&&A.trim(W.val())!==A.trim(V.val())){alert('— Oops, you missed something: —\n\nPasswords do not match up. Please try again.');return false}else{if(W.length&&A.trim(W.val()).length<ws_plugin__s2member_passwordMinLength()){alert('— Oops, you missed something: —\n\nPassword MUST be at least 6 characters. Please try again.');return false}else{if(W.length&&ws_plugin__s2member_passwordStrengthMeter(A.trim(W.val()),A.trim(V.val()),true)<ws_plugin__s2member_passwordMinStrengthScore()){alert('— Oops, you missed something: —\n\nPassword strength MUST be `weak`, `good`, or `strong`. Please try again.');return false}else{if(T.length&&!T.val()){alert('— Oops, you missed something: —\n\nSecurity Verification missing. Please try again.');return false}}}}}}A(d).attr(B),ws_plugin__s2member_animateProcessing(A(d)),A(P).attr(B);return true})}}}}}(L=function(){A("div#s2member-pro-paypal-form-response").each(function(){var R=A(this).offset();window.scrollTo(0,R.top-100)})})()});/**
8 * Modern PayPal Checkout UI for PayPal Pro-Forms.
9 *
10 * @package s2Member\PayPal
11 * @since 260818
12 */
13jQuery(document).ready(function($)
14{
15	if(typeof S2MEMBER_PRO_PAYPAL_CHECKOUT !== 'object' || !S2MEMBER_PRO_PAYPAL_CHECKOUT.enabled)
16		return;
17
18	var cfg = S2MEMBER_PRO_PAYPAL_CHECKOUT, sdkLoads = {};
19
20	//260818.2056 Share one browser payment engine across membership and Specific Post/Page Pro-Forms.
21	var initForm = function(options)
22	{
23		var $form = $(options.form);
24		if($form.length !== 1)
25			return;
26
27		var $cardType = $form.find(options.cardType);
28		var $submitDiv = $form.find(options.submitDiv);
29		var $flow = $form.find(options.flow);
30		var $currency = $form.find(options.currency);
31		var $lc = $form.find(options.lc);
32		var $lang = $form.find('input#s2member-pro-paypal-lang-attr');
33		var expectedFlow = $.trim($flow.val());
34		var currency = $.trim($currency.val()).toUpperCase();
35		var locale = $.trim($lang.val());
36		var lc = $.trim($lc.val()).toUpperCase();
37		var prepared = null, preparedFingerprint = '';
38		var gatewayCheckoutOperation = expectedFlow === 'subscription' ? 'subscription' : 'payment';
39		var gatewayCheckoutIdentity = null, subscriptionCreateUnresolved = false, paymentCreateUnresolved = false;
40
41		if(!expectedFlow || !currency || !cfg.client_id)
42			return;
43
44		//260901.0722 PPCO prepares over AJAX, so history.state can carry the signed logical checkout across reload/back-forward without adding coordinator fields to the rendered Pro-Form.
45		var gatewayCheckoutHistory = function(identity)
46		{
47			if(!options.gatewayCheckout || !window.history || !window.history.replaceState)
48				return;
49
50			var historyState = (window.history.state && typeof window.history.state === 'object') ? window.history.state : {};
51			var gatewayCheckouts = (historyState.s2memberGatewayCheckouts && typeof historyState.s2memberGatewayCheckouts === 'object') ? historyState.s2memberGatewayCheckouts : {};
52			var key = options.prefix;
53			var stored = gatewayCheckouts[key] || {};
54
55			if(identity && identity.id && identity.token)
56			{
57				gatewayCheckoutIdentity = {id: identity.id, token: identity.token, operation: gatewayCheckoutOperation};
58				gatewayCheckouts[key] = gatewayCheckoutIdentity;
59				historyState.s2memberGatewayCheckouts = gatewayCheckouts;
60				window.history.replaceState(historyState, document.title, window.location.href);
61			}
62			else if(stored.id && stored.token && stored.operation === gatewayCheckoutOperation)
63				gatewayCheckoutIdentity = stored;
64		};
65		gatewayCheckoutHistory();
66
67		//260818.2056 Different flow/currency/locale combinations need isolated SDK globals when multiple Pro-Forms share a page.
68		var sdkNamespace = ('s2m_pro_ppco_' + expectedFlow + '_' + currency + '_' + locale + '_' + lc).replace(/[^a-z0-9_]/gi, '_');
69		var sdkScriptId = 's2member-pro-paypal-checkout-sdk-' + sdkNamespace;
70
71		var buttonId = options.prefix + '-paypal-checkout-button';
72		var messageId = options.prefix + '-paypal-checkout-message';
73		var responseId = options.prefix + '-paypal-checkout-response';
74		var $submissionSection = $form.find('div#' + options.prefix + '-form-submission-section');
75		var $responseDiv = $form.find('div#' + options.prefix + '-form-response-div');
76		var $button = $('<div />', {'id': buttonId, 'class': 's2member-pro-paypal-checkout-button'}).css({'display': 'none', 'max-width': '145px', 'width': 'auto', 'margin': '0'});
77		//260819.0124 Announce inline Checkout feedback without requiring visible keyboard focus on the message.
78		var $message = $('<div />', {'id': messageId, 'class': 's2member-pro-paypal-checkout-message ws-plugin--s2member-ppco-message', 'role': 'status', 'aria-live': 'polite'}).css({'display': 'none', 'clear': 'both', 'margin': '6px 0 0', 'text-align': 'right'});
79		var $response = $('<div />', {'id': responseId}).hide();
80
81		$submitDiv.append($button);
82		$submissionSection.append($message); //260819.0009 Keep the inline copy outside the floated submit div so messages cannot move the PayPal button.
83		$responseDiv.append($response);
84
85		var showMessage = function(message, type)
86		{
87			var content = message || cfg.messages.payment_failed;
88			var responseType = (type === 'info') ? 'info' : 'error';
89			var responseClass = 's2member-pro-paypal-form-response-' + responseType + ' ' + options.prefix + '-form-response-' + responseType;
90			var messageClass = 'ws-plugin--s2member-ppco-' + responseType;
91
92			//260819.0042 Mirror the full Pro-Form response above and shared compact Checkout feedback beside the payment control.
93			$response.attr('class', responseClass).html(content).show();
94			$message.empty().append($('<span />', {'class': messageClass}).html(content)).show();
95
96			//260819.0124 Release PayPal's failed/cancelled button focus without moving visible focus onto another control.
97			try
98			{
99				if(document.activeElement && typeof document.activeElement.blur === 'function')
100					document.activeElement.blur();
101			}
102			catch(error){}
103		};
104		var showError = function(message)
105		{
106			showMessage(message, 'error');
107		};
108		var showInfo = function(message)
109		{
110			showMessage(message, 'info');
111		};
112		var clearMessage = function()
113		{
114			$response.hide().removeAttr('class').empty();
115			$message.hide().empty();
116		};
117		var currentSubmit = function()
118		{
119			return $submitDiv.find(options.submit);
120		};
121		var resetLegacySubmit = function()
122		{
123			var $submit = currentSubmit();
124			ws_plugin__s2member_animateProcessing($submit, 'reset');
125			$submit.removeAttr('disabled');
126			$form.find(options.couponApply).removeAttr('disabled');
127		};
128		var billingMethod = function()
129		{
130			return $cardType.filter(':checked').val() || 'PayPal';
131		};
132		var isPayPal = function()
133		{
134			return billingMethod() === 'PayPal';
135		};
136		var encode = function(object)
137		{
138			var values = [];
139			$.each(object, function(key, value)
140			{
141				values.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
142			});
143			return values.join('&');
144		};
145		var formFingerprint = function()
146		{
147			var values = [];
148			$.each($form.serializeArray(), function(index, field)
149			{
150				//260831.2048 Password edits invalidate prepared state through an input/change handler below; never retain plaintext passwords inside the reusable browser fingerprint.
151				if(/(?:^|\[)(?:password1|password2)(?:\]|$)/.test(field.name))
152					return;
153				//260818.2056 CAPTCHA responses are one-time transport proof, not purchase data; exclude them from prepared-token reuse.
154				if(/(?:^|\[)(?:g-recaptcha-response|recaptcha_challenge_field|recaptcha_response_field)(?:\]|$)/.test(field.name))
155					return;
156				values.push(encodeURIComponent(field.name) + '=' + encodeURIComponent(field.value));
157			});
158			return values.join('&');
159		};
160		//260831.2048 Password values stay only in their form controls until a live final approval;
160 changing either field invalidates reuse without retaining another plaintext copy.
161		$form.on('input.s2memberPpcoPassword change.s2memberPpcoPassword', 'input[name="' + options.postName + '[password1]"], input[name="' + options.postName + '[password2]"]', function()
162		{
163			prepared = null, preparedFingerprint = '';
164		});
165		var resetCaptcha = function()
166		{
167			//260818.2056 Server preparation consumes the CAPTCHA token; reset its browser widget before any changed purchase can prepare again.
168			try
169			{
170				if(window.grecaptcha && typeof window.grecaptcha.reset === 'function')
171					window.grecaptcha.reset();
172				else if(window.Recaptcha && typeof window.Recaptcha.reload === 'function')
173					window.Recaptcha.reload();
174			}
175			catch(error){}
176		};
177		var fetchJson = function(url, request)
178		{
179			return fetch(url, request).then(function(response)
180			{
181				return response.text();
182			}).then(function(text)
183			{
184				try
185				{
186					return JSON.parse(text);
187				}
188				catch(error)
189				{
190					throw new Error('invalid_json');
191				}
192			});
193		};
194		var postTo = function(url, data)
195		{
196			var form = document.createElement('form');
197			form.method = 'post';
198			form.acceptCharset = 'UTF-8';
199			form.action = url;
200			$.each(data, function(name, value)
201			{
202				var input = document.createElement('input');
203				input.type = 'hidden';
204				input.name = name;
205				input.value = value;
206				form.appendChild(input);
207			});
208			document.body.appendChild(form);
209			form.submit();
210		};
211		var validate = function()
212		{
213			var event = $.Event('submit');
214			$form.data('s2member-ppco-validating', true);
215			$form.triggerHandler(event);
216			$form.removeData('s2member-ppco-validating');
217			resetLegacySubmit();
218			return !event.isDefaultPrevented();
219		};
220		var submitFree = function(freeHandoff)
221		{
222			//260818.2056 The opaque handoff proves preparation already validated this exact free purchase, including CAPTCHA.
223			$cardType.val(['Free']);
224			$form.find('input[name="' + options.postName + '[paypal_checkout_op]"], input[name="' + options.postName + '[paypal_checkout_free_handoff]"]').remove();
225			$('<input />', {type: 'hidden', name: options.postName + '[paypal_checkout_op]', value: 'free'}).appendTo($form);
226			$('<input />', {type: 'hidden', name: options.postName + '[paypal_checkout_free_handoff]', value: freeHandoff}).appendTo($form);
227			HTMLFormElement.prototype.submit.call($form[0]);
228		};
229		var prepare = function(formData, fingerprint)
230		{
231			var body = formData;
232			//260901.0722 Send only the signed coordinator identity recovered for this history entry; finalized purchase terms remain authoritative on the server.
233			if(options.gatewayCheckout && gatewayCheckoutIdentity && gatewayCheckoutIdentity.id && gatewayCheckoutIdentity.token)
234			{
235				body += (body ? '&' : '') + encodeURIComponent(options.postName + '[gateway_checkout_id]') + '=' + encodeURIComponent(gatewayCheckoutIdentity.id);
236				body += '&' + encodeURIComponent(options.postName + '[gateway_checkout_token]') + '=' + encodeURIComponent(gatewayCheckoutIdentity.token);
237			}
238			body += (body ? '&' : '') + encodeURIComponent(options.postName + '[paypal_checkout_op]') + '=prepare';
239
240			return fetchJson($form.attr('action') || window.location.href, {
241				method: 'POST',
242				headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
243				body: body,
244				credentials: 'same-origin'
245			}).then(function(result)
246			{
247				if(result && result.error === 'pro_checkout_payment_not_required' && result.free_handoff)
248				{
249					submitFree(result.free_handoff);
250					throw new Error('payment_not_required');
251				}
252				if(!result || !result.ok || !result.token || !result.endpoint || !result.invoice || result.flow !== expectedFlow)
253				{
254					showError(result && result.message ? result.message : cfg.messages.prepare_failed);
255					throw new Error(result && result.error ? result.error : 'prepare_failed');
256				}
257
258				if(options.gatewayCheckout && result.gateway_checkout_id && result.gateway_checkout_token)
259					gatewayCheckoutHistory({id: result.gateway_checkout_id, token: result.gateway_checkout_token});
260				prepared = result;
261				preparedFingerprint = fingerprint;
262				resetCaptcha();
263				return result;
264			});
265		};
266		var sdkSource = function()
267		{
268			var base = cfg.sandbox ? 'https://www.sandbox.paypal.com/sdk/js' : 'https://www.paypal.com/sdk/js';
269			var query = 'client-id=' + encodeURIComponent(cfg.client_id) + '&currency=' + encodeURIComponent(currency) + '&disable-funding=card';
270			query += (expectedFlow === 'subscription') ? '&vault=true&intent=subscription' : '&intent=capture&commit=true';
271			if(cfg.sandbox && lc)
272				query += '&buyer-country=' + encodeURIComponent(lc);
273			if(locale)
274				query += '&locale=' + encodeURIComponent(locale);
275			return base + '?' + query;
276		};
277		var loadSdk = function(callback)
278		{
279			var PayPal = window[sdkNamespace], load = sdkLoads[sdkNamespace];
280			if(PayPal && PayPal.Buttons)
281			{
282				callback(PayPal);
283				return;
284			}
285
286			if(load)
287			{
288				if(load.status === 'failed' || load.status === 'loaded')
289					showError(cfg.messages.sdk_failed);
290				else
291					load.callbacks.push({success: callback, failure: function(){ showError(cfg.messages.sdk_failed); }});
292				return;
293			}
294
295			//260818.2056 One SDK request is shared by forms with identical SDK configuration; each form keeps its own render callback.
296			load = sdkLoads[sdkNamespace] = {status: 'loading', callbacks: [{success: callback, failure: function(){ showError(cfg.messages.sdk_failed); }}]};
297			var script = document.createElement('script');
298			script.id = sdkScriptId;
299			script.setAttribute('data-namespace', sdkNamespace);
300			script.src = sdkSource();
301			script.async = true;
302			script.onload = function()
303			{
304				PayPal = window[sdkNamespace];
305				var callbacks = load.callbacks.slice(0);
306				load.callbacks = [];
307				load.status = (PayPal && PayPal.Buttons) ? 'loaded' : 'failed';
308
309				$.each(callbacks, function(index, queued)
310				{
311					if(load.status === 'loaded')
312						queued.success(PayPal);
313					else
314						queued.failure();
315				});
316			};
317			script.onerror = function()
318			{
319				var callbacks = load.callbacks.slice(0);
320				load.callbacks = [];
321				load.status = 'failed';
322				$.each(callbacks, function(index, queued){ queued.failure(); });
323			};
324			(document.head || document.body || document.documentElement).appendChild(script);
325		};
326		var livePassword = function(name)
327		{
328			//260831.2048 Read a custom password only when sending the final browser approval; never copy it into prepared recovery state or browser storage.
329			var $password = $form.find('input[name="' + options.postName + '[' + name + ']"]');
330			return $password.length ? String($password.val() || '') : '';
331		};
332		var frameworkRequest = function(operation, extra)
333		{
334			if(!prepared || !prepared.endpoint || !prepared.token)
335				return Promise.reject(new Error('purchase_not_prepared'));
336
337			var data = {
338				s2member_paypal_checkout_op: operation,
339				s2member_paypal_checkout_t: prepared.token
340			};
341			$.extend(data, extra || {});
342
343			return fetchJson(prepared.endpoint, {
344				method: 'POST',
345				headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
346				body: encode(data),
347				credentials: 'same-origin'
348			});
349		};
350		var delay = function(milliseconds)
351		{
352			return new Promise(function(resolve)
353			{
354				window.setTimeout(resolve, milliseconds);
355			});
356		};
357		var recoverSubscriptionId = function(attempt)
358		{
359			return frameworkRequest('get_subscription_id').then(function(result)
360			{
361				if(result && result.subscription_id)
362				{
363					clearMessage();
364					return result.subscription_id;
365				}
366				if(result && result.error)
367					throw new Error(result.error);
368				if(attempt >= 10)
369				{
370					subscriptionCreateUnresolved = true;
371					throw new Error('subscription_create_unresolved');
372				}
373
374				//260902.0200 Give the independent CREATED webhook a short window to repair an ambiguous create without repeatedly calling PayPal from the browser.
375				showInfo(cfg.messages.subscription_recovering);
376				return delay(1500).then(function(){ return recoverSubscriptionId(attempt + 1); });
377			});
378		};
379		var confirmSubscription = function(subscriptionId, attempt)
380		{
381			return frameworkRequest('confirm_subscription', {
382				subscription_id: subscriptionId,
383				s2member_pro_paypal_checkout_password1: livePassword('password1'),
384				s2member_pro_paypal_checkout_password2: livePassword('password2')
385			}).then(function(result)
386			{
387				if(result && result.rtn_url && result.rtn_post)
388				{
389					clearMessage();
390					postTo(result.rtn_url, result.rtn_post);
391					return;
392				}
393				if(result && result.pending_activation)
394				{
395					if(attempt >= 10)
396						throw new Error('subscription_activation_unresolved');
397
398					//260902.0200 Buyer approval is not fulfillment; briefly wait for PayPal ACTIVE while the activation webhook remains an off-session fallback.
399					showInfo(cfg.messages.subscription_recovering);
400					return delay(1500).then(function(){ return confirmSubscription(subscriptionId, attempt + 1); });
401				}
402				throw new Error(result && result.error ? result.error : 'subscription_confirm_failed');
403			});
404		};
405		var recoverOrderId = function(attempt)
406		{
407			return frameworkRequest('get_order_status').then(function(result)
408			{
409				if(result && result.order_id)
410				{
411					clearMessage();
412					return result.order_id;
413				}
414				if(result && result.error)
415					throw new Error(result.error);
416				if(attempt >= 10)
417				{
418					paymentCreateUnresolved = true;
419					throw new Error('order_create_unresolved');
420				}
421
422				//260902.0646 This local poll is only for an overlapping server request that may still persist the order ID; ambiguous provider creation itself has no pre-approval webhook and is retried by the customer's next idempotent attempt.
423				showInfo(cfg.messages.payment_recovering);
424				return delay(1500).then(function(){ return recoverOrderId(attempt + 1); });
425			});
426		};
427		var recoverPayment = function(orderId, attempt)
428		{
429			return frameworkRequest('get_order_status').then(function(result)
430			{
431				var status = result && result.status ? String(result.status).toUpperCase() : '';
432				if(result && result.fulfilled)
433					return frameworkRequest('capture_order', {order_id: orderId});
434				if(/^CAPTURE_(?:DENIED|FAILED|DECLINED)$/.test(status))
435					throw new Error(status.toLowerCase());
436				if(result && result.error)
437					throw new Error(result.error);
438				if(attempt >= 10)
439				{
440					paymentCreateUnresolved = true;
441					throw new Error('payment_completion_unresolved');
442				}
443
444				//260902.0635 A PENDING capture is unpaid; briefly wait for the independent capture webhook to complete fulfillment while making only local coordinator checks.
445				showInfo(cfg.messages.payment_recovering);
446				return delay(1500).then(function(){ return recoverPayment(orderId, attempt + 1); });
447			});
448		};
449		var renderButton = function(PayPal)
450		{
451			if($button.attr('data-s2m-ppco-rendered') === '1')
452				return;
453
454			var buttonOptions = {
455				fundingSource: PayPal.FUNDING.PAYPAL,
456				style: {layout: 'vertical', tagline: false, height: 40},
457				onClick: function(data, actions)
458				{
459					clearMessage();
460
461					//260818.2056 An unchanged purchase can safely reuse its prepared token even though its one-time CAPTCHA response was reset.
462					var fingerprint = formFingerprint();
463					if(prepared && preparedFingerprint === fingerprint)
464						return actions.resolve();
465
466					if(!validate())
467						return actions.reject();
468
469					var formData = $form.serialize();
470					fingerprint = formFingerprint();
471					prepared = null, preparedFingerprint = '';
472					return prepare(formData, fingerprint).then(function()
473					{
474						return actions.resolve();
475					}).catch(function(error)
476					{
477						return actions.reject();
478					});
479				},
480				onCancel: function()
481				{
482					showInfo(cfg.messages.cancelled);
483				},
484				onError: function()
485				{
486					if(expectedFlow === 'subscription' && subscriptionCreateUnresolved)
487					{
488						subscriptionCreateUnresolved = false;
489						showError(cfg.messages.subscription_unresolved);
490					}
491					else if(expectedFlow !== 'subscription' && paymentCreateUnresolved)
492					{
493						paymentCreateUnresolved = false;
494						showError(cfg.messages.payment_unresolved);
495					}
496					else showError(expectedFlow === 'subscription' ? cfg.messages.subscription_failed : cfg.messages.payment_failed);
497				}
498			};
499
500			if(expectedFlow === 'subscription')
501			{
502				buttonOptions.createSubscription = function()
503				{
504					subscriptionCreateUnresolved = false;
505					//260901.2145 Create the PayPal subscription on s2Member's server so its ID is persisted in Gateway Checkout before browser approval/continuation can be lost.
506					return frameworkRequest('create_subscription').then(function(result)
507					{
508						if(result && result.subscription_id)
509							return result.subscription_id;
510						if(result && result.recoverable)
511						{
512							showInfo(cfg.messages.subscription_recovering);
513							return recoverSubscriptionId(0);
514						}
515						throw new Error(result && result.error ? result.error : 'subscription_create_failed');
516					});
517				};
518				buttonOptions.onApprove = function(data)
519				{
520					var subscriptionId = data && data.subscriptionID ? data.subscriptionID : '';
521					return confirmSubscription(subscriptionId, 0).catch(function(error)
522					{
523						showError(error && error.message === 'subscription_activation_unresolved' ? cfg.messages.subscription_unresolved : cfg.messages.subscription_failed);
524					});
525				};
526			}
527			else
528			{
529				buttonOptions.createOrder = function()
530				{
531					//260907.1820 Order creation is server-authoritative and idempotent; JS accepts only the persisted server order ID and locally polls only when another server request may still be finishing.
532					paymentCreateUnresolved = false;
533					return frameworkRequest('create_order').then(function(result)
534					{
535						if(result && result.order_id)
536							return result.order_id;
537						if(result && result.recoverable)
538						{
539							showInfo(cfg.messages.payment_recovering);
540							return recoverOrderId(0);
541						}
542						if(result && result.retryable)
543							paymentCreateUnresolved = true;
544						throw new Error(result && result.error ? result.error : 'order_create_failed');
545					});
546				};
547				buttonOptions.onApprove = function(data)
548				{
549					var orderId = data && data.orderID ? data.orderID : '';
550					//260907.1820 Capture remains server-authoritative; recoverable/PENDING responses switch to local coordinator polling so browser retries never issue a second capture POST for a known in-flight capture.
551					return frameworkRequest('capture_order', {
552						order_id: orderId,
553						s2member_pro_paypal_checkout_password1: livePassword('password1'),
554						s2member_pro_paypal_checkout_password2: livePassword('password2')
555					}).then(function(result)
556					{
557						if(result && result.rtn_url && result.rtn_post)
558						{
559							postTo(result.rtn_url, result.rtn_post);
560							return;
561						}
562						if(result && result.recoverable)
563						{
564							showInfo(cfg.messages.payment_recovering);
565							return recoverPayment(orderId, 0).then(function(recovered)
566							{
567								if(recovered && recovered.rtn_url && recovered.rtn_post)
568								{
569									postTo(recovered.rtn_url, recovered.rtn_post);
570									return;
571								}
572								throw new Error(recovered && recovered.error ? recovered.error : 'payment_completion_unresolved');
573							});
574						}
575						throw new Error(result && result.error ? result.error : 'order_capture_failed');
576					}).catch(function(error)
577					{
578						var errorCode = error && error.message ? String(error.message) : '';
579						if(/^capture_(?:denied|failed|declined)$/.test(errorCode))
580						{
581							//260902.0646 A terminal failed capture is safe to abandon; force the next click through server validation so it receives a fresh logical checkout instead of replaying the failed order.
582							prepared = null, preparedFingerprint = '';
583						}
584						if(/unresolved/.test(errorCode))
585						{
586							paymentCreateUnresolved = false;
587							showError(cfg.messages.payment_unresolved);
588						}
589						else showError(cfg.messages.payment_failed);
590					});
591				};
592			}
593
594			try
595			{
596				$button.attr('data-s2m-ppco-rendered', '1');
597				PayPal.Buttons(buttonOptions).render('#' + buttonId);
598			}
599			catch(error)
600			{
601				$button.removeAttr('data-s2m-ppco-rendered');
602				showError(cfg.messages.sdk_failed);
603			}
604		};
605		var ensureButton = function()
606		{
607			loadSdk(renderButton);
608		};
609		var syncBillingMethod = function()
610		{
611			if(isPayPal())
612			{
613				currentSubmit().hide();
614				$button.show();
615				ensureButton();
616			}
617			else
618			{
619				$button.hide();
620				clearMessage();
621				currentSubmit().show();
622			}
623		};
624
625		//260818.2010 Legacy billing-method logic runs first; this second handler replaces only its PayPal submit presentation.
626		$cardType.on('click.s2memberPpco change.s2memberPpco', syncBillingMethod);
627
628		$form.on('submit.s2memberPpco', function(event)
629		{
630			if($form.data('s2member-ppco-validating'))
631				return true;
632			if($.inArray($form.find(options.nonce).val(), ['option', 'apply-coupon']) !== -1)
633				return true;
634			if(isPayPal())
635			{
636				event.preventDefault();
637				resetLegacySubmit();
638				return false;
639			}
640			return true;
641		});
642
643		syncBillingMethod();
644	};
645
646	initForm({
647		form: 'form#s2member-pro-paypal-checkout-form',
648		prefix: 's2member-pro-paypal-checkout',
649		postName: 's2member_pro_paypal_checkout',
650		cardType: 'input[name="s2member_pro_paypal_checkout[card_type]"]',
651		submitDiv: 'div#s2member-pro-paypal-checkout-form-submit-div',
652		submit: '#s2member-pro-paypal-checkout-submit',
653		couponApply: 'input#s2member-pro-paypal-checkout-coupon-apply',
654		nonce: 'input#s2member-pro-paypal-checkout-nonce',
655		flow: 'input#s2member-pro-paypal-checkout-ppco-flow',
656		currency: 'input#s2member-pro-paypal-checkout-ppco-currency',
657		lc: 'input#s2member-pro-paypal-checkout-ppco-lc',
658		gatewayCheckout: true
659	});
660
661	initForm({
662		form: 'form#s2member-pro-paypal-sp-checkout-form',
663		prefix: 's2member-pro-paypal-sp-checkout',
664		postName: 's2member_pro_paypal_sp_checkout',
665		cardType: 'input[name="s2member_pro_paypal_sp_checkout[card_type]"]',
666		submitDiv: 'div#s2member-pro-paypal-sp-checkout-form-submit-div',
667		submit: '#s2member-pro-paypal-sp-checkout-submit',
668		couponApply: 'input#s2member-pro-paypal-sp-checkout-coupon-apply',
669		nonce: 'input#s2member-pro-paypal-sp-checkout-nonce',
670		flow: 'input#s2member-pro-paypal-sp-checkout-ppco-flow',
671		currency: 'input#s2member-pro-paypal-sp-checkout-ppco-currency',
672		lc: 'input#s2member-pro-paypal-sp-checkout-ppco-lc',
673		gatewayCheckout: true
674	});
675});
676
677;window.ws_plugin__s2member_asset_health=window.ws_plugin__s2member_asset_health||{};window.ws_plugin__s2member_asset_health["dynamic_js"]="dynamic-s2member-o";

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.