1var captchaRes = ''; 2var sibVerifyCallback = function(response){ 3 captchaRes = response; 4 if(captchaRes) 5 { 6 jQuery('.sib_signup_form').trigger('submit'); 7 } 8}; 9 10jQuery(document).ready(function(){ 11 jQuery('.sib_signup_form').find('input[required=required]').on("invalid", function () { 12 if(jQuery(this).val().trim() == '') 13 { 14 var alert_msg = jQuery(this).closest('form').find('input[name="sib_form_alert_notice"]').val(); 15 this.setCustomValidity(alert_msg); 16 } 17 else { 18 this.setCustomValidity(''); 19 } 20 }); 21 // run MA script identify() when submit on any forms with email field 22 jQuery(document).on('submit', 'form', function(e){ 23 if(!jQuery(this).hasClass('sib_signup_form')) { 24 var email = jQuery(this).find('input[type=email]').val(); 25 var emailPattern = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 26 if (typeof sendinblue != 'undefined' && email != null && emailPattern.test(email)) { 27 var postData = jQuery(this).serializeObject(); 28 sendinblue.identify(email, postData); 29 } 30 } 31 else 32 { 33 e.preventDefault(); 34 var form = jQuery(this).closest('form'); 35 // for sms field 36 jQuery.each(form.find('.sib-sms'), function () { 37 var sms = jQuery(this).val(); 38 var sms_prefix = jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val(); 39 if ( sms == sms_prefix && !jQuery(this).prop('required')) { 40 jQuery(this).val(''); 41 } 42 }); 43 44 /** 45 * For safari 46 * Not support required attribute 47 */ 48 49 var required_fileds = []; 50 var err_index = 0; 51 52 var multi_lists = form.find(jQuery('.sib-multi-lists')); 53 if( multi_lists != undefined && multi_lists.data('require') == 'required' ) 54 { 55 if ( multi_lists.find('input:checked').length == 0 ) 56 { 57 err_index++; 58 multi_lists.addClass('sib_error'); 59 } 60 } 61 if(err_index > 0) 62 { 63 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.requiredField + '</p>').show(); 64 return; 65 } 66 err_index=0; 67 jQuery.each(form.find('input[type="email"]'), function(){ 68 var Email = /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/i; 69 if (!Email.test(jQuery(this).val())) 70 { 71 err_index++; 72 } 73 }); 74 if(err_index > 0) 75 { 76 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidMail + '</p>').show(); 77 return; 78 } 79 80 /** 81 * Check dateformat 82 */ 83 err_index = 0;
84 jQuery.each(form.find('.sib-date') , function(){ 85 var dateFormat = jQuery(this).data('format'); 86 var date = jQuery(this).val(); 87 var filter = ''; 88 if(dateFormat == 'dd/mm/yyyy') 89 { 90 filter = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g; 91 } 92 else if(dateFormat == 'mm/dd/yyyy') 93 { 94 filter = /^(((0[13578]|1[02])\/(0[1-9]|[12]\d|3[01])\/((19|[2-9]\d)\d{2}))|((0[13456789]|1[012])\/(0[1-9]|[12]\d|30)\/((19|[2-9]\d)\d{2}))|(02\/(0[1-9]|1\d|2[0-8])\/((19|[2-9]\d)\d{2}))|(02\/29\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g; 95 } 96 97 if(dateFormat == 'dd-mm-yyyy') 98 { 99 filter = /^(((0[1-9]|[12]\d|3[01])-(0[13578]|1[02])-((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)-(0[13456789]|1[012])-((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])-02-((19|[2-9]\d)\d{2}))|(29-02-((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g; 100 } 101 else if(dateFormat == 'mm-dd-yyyy') 102 { 103 filter = /^(((0[13578]|1[02])-(0[1-9]|[12]\d|3[01])-((19|[2-9]\d)\d{2}))|((0[13456789]|1[012])-(0[1-9]|[12]\d|30)-((19|[2-9]\d)\d{2}))|(02-(0[1-9]|1\d|2[0-8])-((19|[2-9]\d)\d{2}))|(02-29-((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g; 104 } 105 106 if (filter == '' || !filter.test(date)) 107 { 108 err_index++; 109 } 110 }); 111 112 if(err_index > 0) 113 { 114 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidDateFormat + '</p>').show(); 115 return; 116 } 117 118 // Check sms validation 119 err_index = 0; 120 jQuery.each(form.find('.sib-sms'), function () { 121 var sms = jQuery(this).val(); 122 if ( is_valid_sms(sms) == false && sms != '' ) { 123 err_index ++; 124 } 125 }); 126 if(err_index > 0) 127 { 128 form.find('.sib_msg_disp').html('<p class="sib-alert-message sib-alert-message-warning ">' + sibErrMsg.invalidSMSFormat + '</p>').show(); 129 return; 130 } 131 form.find('.sib_loader').show(); 132 jQuery('.sib_msg_disp').hide(); 133 var postData = form.serializeArray(); 134 if( captchaRes != '' ) 135 { 136 postData.push({"name": "g-recaptcha-response", "value": captchaRes}); 137 } 138 139 if( jQuery('.sib-multi-lists').length ) 140 { 141 var interesting_lists = []; 142 jQuery('.sib-interesting-lists').each(function () { 143 postData.push({"name":"interestingLists[]", "value": jQuery(this).val()}) 144 }); 145 } 146 var formURL = form.attr("action"); 147 form.addClass('sib_processing'); 148 149 postData.push({ "name": "security", "value": ajax_sib_front_object.ajax_nonce }); 150 jQuery.ajax({ 151 url: formURL, 152 type: "POST", 153 dataType: "json", 154 data: postData, 155 success: function (data, textStatus, jqXHR) { 156 jQuery('.sib_loader').hide(); 157 if( jQuery('.sib-multi-lists').length ) 158 { 159 jQuery('.sib-multi-lists').removeClass('sib_error'); 160 } 161 if (data.status === 'success' || data.status === 'update') { 162 var cdata = '<p class="sib-alert-message sib-alert-message-success ">' + data.msg.successMsg + '</p>'; 163 form.find('.sib_msg_disp').html(cdata).show(); 164 } else if (data.status === 'failure') { 165 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.errorMsg + '</p>'; 166 form.find('.sib_msg_disp').html(cdata).show(); 167 } else if (data.status === 'already_exist') { 168 var cdata = '<p class="sib-alert-message sib-alert-message-warning ">' + data.msg.existMsg + '</p>'; 169 form.find('.sib_msg_disp').html(cdata).show(); 170 }
170 else if (data.status === 'invalid') { 171 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg.invalidMsg + '</p>'; 172 form.find('.sib_msg_disp').html(cdata).show(); 173 } else if (data.status === 'gcaptchaEmpty') { 174 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>'; 175 form.find('.sib_msg_disp').html(cdata).show(); 176 } else if (data.status === 'gcaptchaFail') { 177 var cdata = '<p class="sib-alert-message sib-alert-message-error ">' + data.msg + '</p>'; 178 form.find('.sib_msg_disp').html(cdata).show(); 179 } 180 form[0].reset(); 181 if (data.redirect && (data.status === 'success' || data.status === 'update')) { 182 window.location.href = data.redirect; 183 } 184 var previous_code = form.find('.sib-cflags').data('dial-code'); 185 if ( previous_code ) 186 { 187 form.find('.sib-sms').val('+' + previous_code); 188 form.find('input[name="sib_SMS_prefix"]').val('+' + previous_code); 189 } 190 191 // run MA script identify() when subscribe on SIB forms 192 if (typeof sendinblue != 'undefined') { 193 var email = form.find('input[name=email]').val(); 194 var postData = form.serializeObject(); 195 if (data.status === 'success' || data.status === 'update' || data.status === 'already_exist') { 196 sendinblue.identify(email, postData); 197 } 198 } 199 jQuery(".sib-alert-message").delay(2000).hide('slow'); 200 form.removeClass('sib_processing'); 201 if (typeof grecaptcha != 'undefined') 202 { 203 grecaptcha.reset(gCaptchaSibWidget); 204 } 205 }, 206 error: function (jqXHR, textStatus, errorThrown) { 207 form.find('.sib_msg_disp').html(jqXHR).show(); 208 if (typeof grecaptcha != 'undefined') 209 { 210 grecaptcha.reset(gCaptchaSibWidget); 211 } 212 } 213 }); 214 } 215 }); 216 jQuery('.sib-country-block').on('click', function () { 217 jQuery('.sib-country-list').toggle(); 218 }); 219 if (jQuery('.sib-country-list').length > 0) 220 { 221 jQuery('.sib-country-list').ready( function () { 222 var data = { 223 action : 'sib_get_country_prefix', 224 security: ajax_sib_front_object.ajax_nonce, 225 }; 226 jQuery.post( ajax_sib_front_object.ajax_url, data, function (respond) { 227 jQuery('.sib-country-list').html(respond); 228 }); 229 }); 230 } 231 232 jQuery('body').on('click', function(e){ 233 if ( jQuery('.sib-sms-field .sib-country-list').length > 0 && !jQuery('.sib-sms-field .sib-country-list').is(e.target) && jQuery('.sib-sms-field .sib-country-list').has(e.target).length === 0 && jQuery('.sib-sms-field .sib-country-block').has(e.target).length === 0 ) { 234 jQuery('.sib-sms-field .sib-country-list').hide(); 235 } 236 }); 237 238 jQuery('.sib-country-list').on( 'click', 'li' , function () { 239 var country_code = jQuery(this).data('country-code').toLowerCase(); 240 var dial_code = jQuery(this).data('dial-code'); 241 jQuery(this).closest('.sib-sms-field').find('.sib-sms').val('+' + dial_code ); 242 jQuery(this).closest('.sib-sms-field').find('input[name="sib_SMS_prefix"]').val('+' + dial_code ); 243 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').css('background-image', 'url(' + ajax_sib_front_object.flag_url + country_code + '.png)'); 244 jQuery(this).closest('.sib-sms-field').find('.sib-cflags').data('dial-code', dial_co
244de); 245 jQuery(this).closest('.sib-country-list').hide(); 246 }); 247 jQuery(".sib-sms").on('keypress', function (event){ 248 validateInteger(event, 'sms'); 249 }); 250 251 // allow to input 0-9 and - only for date field 252 jQuery(".sib-date").on('keypress', function(event) { 253 validateInteger(event, 'date'); 254 }); 255 function is_valid_sms( sms ) { 256 sms = sms.replace(/\b(0(?!\b))+/g, ""); 257 258 var tempSms = sms.replace(/( |\(|\)|\.|\-)/g, ''); 259 260 if (tempSms.length > 19 || tempSms.length < 6 || tempSms.charAt(0) != '+'){ 261 return false; 262 } 263 return true; 264 } 265 function validateInteger(evt,type) { 266 var theEvent = evt || window.event; 267 var key = theEvent.charCode || theEvent.which; 268 269 key = String.fromCharCode( key ); 270 // 0-9, +/-, space, brackets 271 var regex = /[ +0-9()-]/; 272 var smsLength = 0; 273 if( type == 'date' ) { 274 regex = /[ 0-9-/]/; 275 } 276 if( !regex.test(key)) { 277 theEvent.returnValue = false; 278 key = theEvent.keyCode; 279 // ignore input for del,tab, back, left, right, home amd end 280 if(theEvent.preventDefault && key != 9 && key != 8 ) theEvent.preventDefault(); 281 } 282 } 283 284 285}); 286// get serialized data form subscribe form 287jQuery.fn.serializeObject = function() 288{ 289 var o = {}; 290 var a = this.serializeArray(); 291 jQuery.each(a, function() { 292 if(this.name == 'sib_form_action' || this.name == 'sib_form_id' || this.name == 'email') 293 return true; // continue 294 if (o[this.name] !== undefined) { 295 if (!o[this.name].push) { 296 o[this.name] = [o[this.name]]; 297 } 298 o[this.name].push(this.value || ''); 299 } else { 300 o[this.name] = this.value || ''; 301 } 302 }); 303 return o; 304};
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.