console.log("%cEmail Signup Form Filter Integration", "color: #000; font-weight: normal;"); //console.log("%cEmail Signup Form Filter Integration", "font-weight: bold; font-size: 42px; color: #09ad52; -webkit-text-fill-color: #09ad52; -webkit-text-stroke-width: 1px; -webkit-text-stroke-color: black;"); // bigger and green var allowed_tlds = ",.aaa,.aarp,.abbott,.abbvie,.abc,.academy,.accountants,.active,.ads,.adult,.aetna,.afamilycompany,.agency,.aig,.allstate,.ally,.americanexpress,.americanfamily,.amex,.amfam,.amica,.analytics,.android,.aol,.apartments,.app,.apple,.aramco,.asda,.associates,.athleta,.audible,.author,.autos,.aws,.azure,.baby,.banamex,.bananarepublic,.bank,.barefoot,.bargains,.baseball,.bbt,.bcg,.beats,.bestbuy,.bible,.bike,.bing,.bingo,.biz,.blockbuster,.blog,.bloomberg,.bms,.boats,.bofa,.boo,.book,.boston,.bot,.boutique,.broadway,.build,.builders,.business,.buy,.buzz,.cab,.cafe,.cal,.call,.calvinklein,.camera,.camp,.capital,.capitalone,.caravan,.cards,.care,.career,.careers,.cash,.casino,.catering,.cbn,.cbre,.cbs,.ceb,.center,.cfa,.channel,.charity,.chase,.chat,.cheap,.chrome,.chrysler,.church,.circle,.cisco,.citadel,.citi,.city,.cityeats,.claims,.cleaning,.clinic,.clinique,.clothing,.club,.coach,.codes,.coffee,.college,.com,.comcast,.community,.company,.computer,.comsec,.condos,.construction,.contact,.contractors,.cookingchannel,.cool,.coupon,.coupons,.credit,.creditcard,.creditunion,.crown,.cruise,.cruises,.csc,.dad,.data,.dating,.day,.dclk,.deal,.dealer,.deals,.delivery,.dell,.deloitte,.delta,.dental,.desi,.design,.dev,.diamonds,.digital,.direct,.directory,.discount,.discover,.dish,.diy,.docs,.doctor,.dodge,.dog,.domains,.doosan,.dot,.drive,.dtv,.duck,.dunlop,.duns,.dupont,.dvr,.eat,.education,.email,.energy,.engineering,.enterprises,.equipment,.esq,.estate,.esurance,.events,.everbank,.exchange,.expert,.exposed,.express,.extraspace,.fail,.fairwinds,.farm,.farmers,.fast,.fedex,.feedback,.fidelity,.finance,.financial,.fire,.firestone,.fish,.fitness,.flickr,.flights,.flir,.florist,.flsmidth,.fly,.foo,.food,.foodnetwork,.football,.ford,.forum,.foundation,.fox,.free,.frontdoor,.frontier,.ftr,.fujixerox,.fund,.furniture,.fyi,.gallery,.gallo,.gallup,.gap,.gbiz,.george,.gifts,.glade,.glass,.gle,.gmail,.gmbh,.godaddy,.gold,.golf,.goodhands,.goodyear,.goog,.google,.gop,.got,.grainger,.graphics,.gratis,.gripe,.grocery,.group,.guardian,.guge,.guide,.guru,.hangout,.hbo,.health,.healthcare,.here,.hgtv,.hockey,.holdings,.holiday,.homedepot,.homegoods,.homes,.homesense,.honeywell,.hospital,.hot,.hotmail,.house,.how,.hughes,.hyatt,.ibm,.ice,.ieee,.iinet,.imdb,.immo,.industries,.ing,.ink,.institute,.insurance,.insure,.intel,.international,.intuit,.investments,.irish,.java,.jcp,.jeep,.jetzt,.jewelry,.jll,.jmp,.jnj,.jot,.joy,.jpmorgan,.juniper,.kindle,.kitchen,.kosher,.lamer,.land,.lanxess,.lasalle,.latino,.lds,.lease,.lefrak,.legal,.liaison,.life,.lifeinsurance,.lifestyle,.lighting,.like,.lilly,.limited,.limo,.lincoln,.living,.loans,.locker,.locus,.loft,.lpl,.lplfinancial,.ltd,.ltda,.luxury,.macys,.maison,.management,.map,.marketing,.marriott,.marshalls,.mattel,.mba,.mckinsey,.med,.media,.meet,.meme,.memorial,.menu,.merckmsd,.metlife,.miami,.microsoft,.mint,.mit,.mlb,.mobile,.moi,.money,.monster,.mopar,.mormon,.moto,.motorcycles,.mov,.movie,.msd,.mtpc,.mutual,.mutuelle,.name,.nationwide,.nba,.net,.netflix,.network,.neustar,.new,.nexus,.nfl,.ngo,.nike,.northwesternmutual,.norton,.now,.nra,.nyc,.observer,.off,.office,.oldnavy,.ollo,.ong,.onyourside,.open,.oracle,.org,.orientexpress,.origins,.ott,.page,.partners,.parts,.pay,.pfizer,.pharmacy,.phd,.phone,.photography,.photos,.pictures,.pid,.pin,.ping,.pizza,.place,.play,.plumbing,.plus,.pnc,.porn,.pramerica,.prime,.pro,.prod,.productions,.prof,.progressive,.properties,.protection,.pru,.prudential,.qpon,.qvc,.raid,.read,.realestate,.realtor,.realty,.recipes,.redumbrella,.reise,.reisen,.reit,.rent,.rentals,.repair,.report,.restaurant,.rightathome,.room,.rsvp,.run,.safe,.safety,.salon,.samsclub,.sarl,.sas,.save,.scholarships,.school,.schule,.scjohnson,.search,.secure,.security,.services,.sex,.shell,.shoes,.shopping,.show,.showtime,.silk,.singles,.skype,.sling,.smile,.soccer,.solar,.solutions,.song,.soy,.spot,.srl,.srt,.staples,.statefarm,.storage,.style,.supplies,.supply,.support,.surgery,.symantec,.systems,.talk,.target,.tax,.taxi,.team,.technology,.tennis,.thd,.theater,.theatre,.tiaa,.tienda,.tiffany,.tips,.tires,.tjmaxx,.tjx,.tkmaxx,.today,.tools,.tours,.town,.toys,.training,.travelchannel,.travelers,.travelersinsurance,.trust,.trv,.tube,.tunes,.tushu,.uconnect,.university,.uno,.ups,.vacations,.vana,.vanguard,.vegas,.ventures,.verisign,.viajes,.viking,.villas,.vin,.vision,.vote,.voto,.voyage,.walmart,.wanggou,.watch,.weather,.weatherchannel,.wed,.whoswho,.wiki,.windows,.wine,.winners,.wme,.works,.world,.wow,.wtc,.wtf,.xbox,.xerox,.xfinity,.xyz,.yachts,.yahoo,.yamaxun,.you,.youtube,.zappos,.zero,.zip,.zippo,.zone,.aero,.coop,.edu,.gov,.int,.jobs,.mil,.travel,.xxx,.an,.to,.tp,.um,.us,.us,.biz,.name,.pro,"; var blacklist_tlds = ",.adult,.xxx,"; var whitelist_tlds = ",.info,.vet,.ws,.cc,"; var non_us_email_validation_msg = "Email format invalid, or Non-US domain."; //alert(124); jQuery(document).ready(function(){ // window.setTimeout(function(){ // if ( $(".detected-signup-form-field").length ){ // console.log("Email Fields: "+$(".email_field").length); // } else{ // console.log("No email fields detected."); // } // if ( $(".detected-signup-form").length ){ // console.log("Signup Forms: "+$(".email_field").closest("form").length); // } // },100); WatchEmailFields(); }); allowed_tlds = allowed_tlds+whitelist_tlds; function UpdateEmailValidationMsg(){ var msg = non_us_email_validation_msg; if(!jQuery(".custom-validation-msg[filtered-email-field]").length){ jQuery("[filtered-email-field]").addClass("custom-validation-msg"); //jQuery("[filtered-email-field]")[0].setCustomValidity(non_us_email_validation_msg); } if(!jQuery(".detected-signup-form .non-us-email-filter-msg").length){ jQuery(".detected-signup-form :not(:has(*)):contains('real email address'), .detected-signup-form :not(:has(*)):contains('name@domain.com'), .detected-signup-form :not(:has(*)):contains('need your email')").addClass("non-us-email-filter-msg"); } jQuery(".non-us-email-filter-msg").not(":contains('"+msg+"')").text(msg); jQuery(".non-us-email").each(function(){ if ( !jQuery(".sent-blocked-email-notification").length && jQuery(this).find(".non-us-email-filter-msg").length && jQuery(this).find(".non-us-email-filter-msg").css("opacity") > 0 && jQuery(this).find(".non-us-email-filter-msg").css("visibility") == "visible" && jQuery(".non-us-email-filter-msg:visible").length ){ jQuery(this).addClass("sent-blocked-email-notification"); var email = jQuery(this).find("[filtered-email-field]").val(); var ext = "."+email.split(".")[(email.split(".").length)-1]; //var msg = "Email format invalid, or Non-US domain."; var url = "to=webalerts@nutramaxlabs.com&from=email.filter@nutrmaxlabs.info&replyemail=noreply@nutrmaxlabs.com&subject=Blocked Non-US Email&body=An email address was blocked from subscribing to our mailing list because the domain was associated a Non-US entity.


See details below.

Email: "+email+"
Reference: "+"https://www.iana.org/domains/root/db/"+ext.replace(".","")+".html"+"
Language: "+navigator.language+"
Site: "+location.hostname+"
Page: "+location.pathname+"

Message displayed to the user:
"+msg; jQuery("body").append('
'); jQuery(".blocked-email-bg-"+email.replace("@","_").replace(/\./g,"_")).load("https://ws.nutramax.biz/js/mail.js/index.php?"+encodeURI(url),function(){ console.log("sent email 1"); }); console.log("sending email 1"); } }); } //ga('create', 'UA-741540-11', 'auto', {'name': 'nmxdashboard'}); function WatchEmailFields(){ //console.log("email field watch"); //input[name*='email'], input[type*='email'], input[id*='email'] jQuery("form input[type='email'], form input.email, form input[id*='email'], form input[name*='email'], form input[class*='email'], form #Email, form #email").each(function(){ //console.log("email field detected"); /*if (jQuery(this).closest("form").filter("[id*='opt'], [name*='opt'], [class*='opt'], [id*='subsc'], [name*='subsc'], [class*='subsc'], [id*='mail'], [name*='mail'], [class*='mail']").length){ if (!jQuery(this).closest("form").filter("[id*='reg'], [name*='reg'], [class*='reg'], [id*='ogin'], [name*='ogin'], [class*='ogin'], [id*='roll'], [name*='roll'], [class*='roll']").length){*/ jQuery(this).closest("form").addClass("detected-signup-form"); jQuery(this).addClass("detected-signup-form-field"); /* } else{ jQuery(this).addClass("detected-NON-signup-form-field").addClass("signup-form-excluded"); } } else{ jQuery(this).addClass("detected-NON-signup-form-field"); }*/ }); jQuery(".detected-signup-form-field:visible").not("[filtered-email-field]").each(function(){ //ga('nmxdashboard.send', 'event', 'forms', 'Email Signup Form', jQuery(this).closest("form").attr("id")); console.log("email form: "+jQuery(this).closest("form").attr("id")); var random_id = Math.floor((Math.random() * 10000) + 1); console.log("email field: "+random_id); window.setTimeout(function(){ CheckEmailFields(random_id); },400); jQuery(this).attr("filtered-email-field",random_id).unbind().attr("onblur","CheckEmailFields("+random_id+");").attr("onkeyup","DoNothing("+random_id+");"); if (jQuery("[filtered-email-field]").length){ //console.log("no .non-us-email-filter-msg"); //console.log("len "+jQuery("[filtered-email-field]").length); //console.log("foc "+jQuery("[filtered-email-field]:focus").length); jQuery("[filtered-email-field]").unbind().keydown(function(){ if(!jQuery(".non-us-email-filter-msg").length){ console.log("keyup"); var agree_checkbox = jQuery("[filtered-email-field]").closest("form").find("input[type='checkbox']").filter("[class*='agree'],[name*='agree'],[name*='certify'],[name*='subscribe'],[value*='optin']"); //agree_checkbox.prop("checked",false); } }); jQuery("[filtered-email-field]").focus(function(){ if(!jQuery(".non-us-email-filter-msg").length){ console.log("focus"); var agree_checkbox = jQuery("[filtered-email-field]").closest("form").find("input[type='checkbox']").filter("[class*='agree'],[name*='agree'],[name*='certify'],[name*='subscribe'],[value*='optin']"); //agree_checkbox.prop("checked",false); } }); } }); UpdateEmailValidationMsg(); window.setTimeout(function(){ WatchEmailFields(); },1000); } function DoNothing(int){ //const startTime = performance.now(); CheckEmailFields(int); //const duration = performance.now() - startTime; console.log(`step1 ${duration}ms`); } var full_stop = "․"; function CheckEmailFields(int){ console.log("checked field: "+int); // ﹒ // ․ // 。 // ۔ jQuery("[filtered-email-field='"+int+"']").val(jQuery("[filtered-email-field='"+int+"']").val().replace(full_stop,".")); jQuery("[filtered-email-field='"+int+"']")[0].setCustomValidity(""); //jQuery(".blocked-non-us-email-msg").remove(); if ( CheckEmailFormatActuallyValid(jQuery("[filtered-email-field='"+int+"']").val()) ){ var ext = "."+jQuery("[filtered-email-field='"+int+"']").val().trim().split(".")[(jQuery("[filtered-email-field='"+int+"']").val().trim().split(".").length)-1]; if (ext != "."){ if (allowed_tlds.indexOf(","+ext.toLowerCase()+",") > -1 && blacklist_tlds.indexOf(","+ext.toLowerCase()+",") == -1){ console.log("us email: "+ext); console.log("Ref: https://www.iana.org/domains/root/db/"+ext.replace(".","")+".html"); jQuery("[filtered-email-field='"+int+"']").closest("form").removeClass("non-us-email"); //jQuery(".sent-blocked-email-notification").removeClass("sent-blocked-email-notification"); } else { console.log("%cnon-us email: "+ext,"color:red;"); jQuery("[filtered-email-field='"+int+"']").val(jQuery("[filtered-email-field='"+int+"']").val().replace(".",full_stop)); console.log("Ref: https://www.iana.org/domains/root/db/"+ext.replace(".","")+".html"); jQuery("[filtered-email-field='"+int+"']").closest("form").addClass("non-us-email"); //var agree_checkbox = jQuery("[filtered-email-field='"+int+"']").closest("form").find("input[type='checkbox']").filter("[class*='agree'],[name*='agree'],[name*='subscribe'],[value*='optin']"); if (!jQuery(".non-us-email-filter-msg").length && !jQuery("[filtered-email-field='"+int+"']").closest("form").filter(".sent-blocked-email-notification").length && !jQuery("[filtered-email-field]:focus").length){ jQuery("[filtered-email-field]")[0].setCustomValidity(non_us_email_validation_msg); jQuery("[filtered-email-field='"+int+"']").addClass("sent-blocked-email-notification"); var email = jQuery("[filtered-email-field='"+int+"']").val().replace(full_stop,"."); var ext = "."+email.split(".")[(email.split(".").length)-1]; var url = "to=jbackus@nutramaxlabs.com&from=email.filter@nutrmaxlabs.info&replyemail=noreply@nutrmaxlabs.com&subject=Blocked Non-US Email&body=An email address was blocked from subscribing to our mailing list because the domain was associated a Non-US entity.


See details below.

Email: "+email+"
Reference: "+"https://www.iana.org/domains/root/db/"+ext.replace(".","")+".html"+"
Language: "+navigator.language+"
Site: "+location.hostname+"
Page: "+location.pathname+"

Message displayed to the user:
"+non_us_email_validation_msg; jQuery("body").append(''); jQuery(".blocked-email-bg").load("https://ws.nutramax.biz/js/mail.js/index.php?"+encodeURI(url),function(){ console.log("sent email 2"); }); console.log("sending email 2"); } else { console.log("validation msg"); UpdateEmailValidationMsg(); window.setTimeout(function(){ UpdateEmailValidationMsg(); }, 100); } //if (agree_checkbox.length && !jQuery(".non-us-email-filter-msg").length){ //agree_checkbox.before('
Attention: '+non_us_email_validation_msg+'
'); //agree_checkbox.prop("disabled",true).prop("checked",false); //jQuery("[filtered-email-field='"+int+"']").css("color","red"); //jQuery("[filtered-email-field='"+int+"']").prop("required",false).addClass("was-required"); //} } } } } function CheckEmailFormatActuallyValid(email){ // j20180803a fixed email validation code, it was taking 100+ms to check a 25 char string if( /(.+)@(.+){2,}\.(.+){2,}/.test(email) ){ return true; } else { return false; } // var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,8})+$/; // if(email.match(mailformat)){ return true; } // return (false); } // function CheckEmailFormatOtherwiseValid(email){ // var mailformat = /^\w+([\﹒-]?\w+)*@\w+([\﹒-]?\w+)*(\﹒\w{2,8})+$/; // if(email.match(mailformat)){ return true; } // return (false); // }