1/** 2 * FILE for all the javascript functionality for the front end of the plugin 3 */ 4/* For front end OTP widget */ 5var rm_ajax_url = rm_ajax.url; 6var rm_validation_attr = ['data-rm-valid-username','data-rm-valid-email']; 7var rm_js_data; 8 9function rmInitGoogleApi() { 10 var rm_init_map_containers = setInterval(function(){ 11 if (typeof rmInitMap === 'function') { 12 var rm_all_maps = jQuery(".rm-map-controls-uninitialized"); 13 var i; 14 var curr_id = ''; 15 if(rm_all_maps.length>0) clearInterval(rm_init_map_containers); 16 for (i = 0; i < rm_all_maps.length; i++) { 17 if(jQuery(rm_all_maps[i]).is(':visible')){ 18 curr_id = rm_all_maps[i].getAttribute("id"); 19 jQuery(rm_all_maps[i]).removeClass("rm-map-controls-uninitialized"); 20 rmInitMap(curr_id); 21 } 22 } 23 } 24 }, 100); 25} 26 27// This is a dummy request to exchange cookies after auto login 28function rm_send_dummy_ajax_request(url){ 29 var data = {'action' : 'rm_dummy_refresh'}; 30 jQuery.post (rm_ajax_url, data, function(){ 31 if(url) 32 window.location=url; 33 else{ 34 //jQuery("#rm_ajax_login").hide(); 35 //jQuery("#rm_ajax_after_login").show(); 36 } 37 }); 38} 39 40function scroll_down_end(element) { 41 42 if (element.scrollTop + element.offsetHeight >= element.scrollHeight) 43 { 44 var div = jQuery(element).parent().siblings(); 45 jQuery(div).children().removeAttr('disabled'); 46 47 } 48 else 49 { 50 var text_height = jQuery(element).css('font-size').replace('px', ''); 51 text_height = Math.ceil(parseInt(text_height)); 52 var field_height = Math.floor(jQuery(element).height()); 53 var line_per_field = Math.floor(jQuery(element).height() / text_height); 54 var text = jQuery(element).val(); 55 var lines = text.split(/\r|\r\n|\n/); 56 var count = text.length; 57 58 var count = count / field_height; 59 60 var count = Math.floor(count); 61 62 lines = lines.length; 63 count =count *line_per_field; 64 if (lines > count) 65 count = lines; 66 67 if (count <= line_per_field) 68 { 69 count = 1; 70 } 71 72 if ((count * field_height) <= field_height) { 73 74 var div = jQuery(element).parent().siblings(); 75 76 jQuery(div).children().removeAttr('disabled'); 77 78 } 79 } 80 81} 82 83var rm_call_otp = function (event,elem,opType) { 84 85 if (event.keyCode == 13 || opType=="submit") { 86 87 var otp_key_status = jQuery(elem + " #rm_otp_login #rm_otp_enter_otp .rm_otp_kcontact").is(":visible"); 88 var user_key_status = jQuery(elem + " #rm_otp_login #rm_otp_enter_password .rm_otp_kcontact").is(":visible"); 89 90 var data = { 91 'action': 'rm_set_otp', 92 'rm_sec_nonce': rm_ajax.nonce, 93 'rm_otp_email': jQuery(elem + " #rm_otp_econtact").val(), 94 'rm_slug': 'rm_front_set_otp' 95 }; 96 if (otp_key_status) 97 { 98 data.rm_otp_key = jQuery(elem + " #rm_otp_enter_otp .rm_otp_kcontact").val(); 99 }else 100 if(user_key_status){ 101 if(jQuery(elem + " #rm_rememberme").is(':checked')) 102 data.rm_remember = 'yes'; 103 data.rm_username = jQuery(elem + " #rm_username").val(); 104 data.rm_user_key = jQuery(elem + " #rm_otp_enter_password .rm_otp_kcontact").val(); 105 } 106 107 jQuery(elem + " .rm_hide_when_loader").hide(); 108 jQuery(elem + " .rm_loader").show(); 109 jQuery.post(rm_ajax_url, data, function (response) { 110 jQuery(elem + " .rm_loader").hide(); 111 jQuery(elem + " .rm_hide_when_loader").show(); 112 var responseObj = jQuery.parseJSON(response); 113 if (responseObj.error == true) { 114 jQuery(elem + " #rm_otp_login .rm_f_notifications .rm_f_error").hide().html(responseObj.msg).slideDown('slow'); 115 jQuery(elem + " #rm_otp_login .rm_f_notifications .rm_f_success").hide(); 116 /*jQuery("#rm_otp_login " + responseObj.hide).hide('slow');*/ 117 } else { 118 jQuery(elem + " #rm_otp_login .rm_f_notifications .rm_f_error").hide(); 119 jQuery(elem + " #rm_otp_login .rm_f_notifications .rm_f_success").hide().html(responseObj.msg).slideDown('slow'); 120 jQuery(elem + " #rm_otp_login " + responseObj.show).show(); 121 jQuery(elem + " #rm_otp_login " + responseObj.hide).hide(); 122 123 if(responseObj.username){ 124 jQuery(elem + " #rm_username").val(responseObj.username); 125 }else 126 jQuery(elem + " #rm_username").val(''); 127 128 if (responseObj.reload) { 129 location.reload(); 130 } 131 132 if (responseObj.redirect) { 133 window.location = responseObj.redirect; 134 } 135 136 } 137 }); 138 } 139}; 140 141/*All the functions to be hooked on the front end at document ready*/ 142jQuery(document).ready(function () { 143 if(jQuery('#id_rm_tp_timezone').length > 0) 144 jQuery('#id_rm_tp_timezone').val(-new Date().getTimezoneOffset()/60); 145 var tab_container= jQuery('.rm_tabbing_container'); 146 if(tab_container.length>0){ 147 tab_container.tabs(); 148 } 149 jQuery('.rm_terms_textarea').each(function () { 150 var a = jQuery(this).children('textarea'); 151 if (a.length > 0) 152 scroll_down_end(a); 153 }); 154 155 jQuery(".rm_floating_action").click(function(){ 156 jQuery(".rm_floating_box").toggle('medium'); 157 }); 158 159 if(jQuery("#rm_f_mail_notification").length>0){ 160 jQuery("#rm_f_mail_notification").show('fast', function () { 161 jQuery("#rm_f_mail_notification").fadeOut(3000); 162 }); 163 } 164 165//Code for async login 166/* 167 jQuery( document ).on( "click", ".rm_login_btn", function(event) { 168 var btnLbl = jQuery(this).val(); 169 var formvalidid = ''; 170 if(jQuery("#rm_login_form_1").length){ 171 formvalidid = 'rm_login_form_1'; 172 } else if(jQuery("#rm_otp_form_1").length){ 173 formvalidid = 'rm_otp_form_1'; 174 } 175 if(validate_empty_required_fields(formvalidid)){ 176 jQuery('.rm_login_btn').prop('disabled', true); 177 jQuery('.rm_login_btn').prop('value', ''); 178 jQuery('.rm_login_btn').toggleClass('rm-login-btn-loader'); 179 event.preventDefault(); 180 var form = jQuery("#"+formvalidid); 181 jQuery.post( form.attr('action'), form.serialize()).done(function( data ) { 182 if(data.includes("alert-error")){ 183 // remove previous errors 184 jQuery('.alert-error').remove(); 185 // add errors 186 var elements = jQuery(data); 187 var found = jQuery('.alert-error', elements); 188 jQuery('input[name="rm_slug"]').after(found); 189 jQuery('.rm_login_btn').prop('disabled', false); 190 jQuery('.rm_login_btn').prop('value', btnLbl); 191 jQuery('.rm_login_btn').toggleClass('rm-login-btn-loader'); 192 } else if(data.includes("rm_otp_form_1")) { 193 document.write(data); 194 } else{ 195 // request for redirection url 196 var ndata= { 197 'action': 'rm_get_after_login_redirect', 198 };
199 jQuery.post(rm_ajax_url, ndata, function(response) { 200 resp = JSON.parse(response); 201 if(resp['redirect'] != '') { 202 window.location.href = resp['redirect']; 203 } else 204 alert("Error occured during redirection"); 205 }); 206 } 207 }); 208 } 209 }); 210*/ 211}); 212 213function setup_payment_method_visibility(payment_method_type,form_id,form_no) { 214 215 switch (payment_method_type) 216 { 217 case 'paypal': 218 jQuery('#rm_stripe_fields_container_'+form_id+'_'+form_no).slideUp(); 219 break; 220 case 'stripe': 221 jQuery('#rm_stripe_fields_container_'+form_id+'_'+form_no).slideDown(); 222 break; 223 } 224} 225 226 227function rm_toggle_tel_error(valid,el,msg){ 228 jQuery("." + el.prop('id') + "-error").remove(); 229 var inputValue= el.val(); 230 var form_con=el.closest('form'); 231 setTimeout(function(){ form_con.find('[type=submit]').prop('disabled',false);},500); 232 if(inputValue.length==0 && el.prop('required')){ 233 return false; 234 } 235 236 if(!el.is(':visible')) 237 { 238 return false; 239 } 240 241 if(el.length>0 && inputValue.length>0){ 242 if(!valid){ 243 if(el.closest(".rminput").length>0){ 244 setTimeout(function(){el.closest(".rminput").append('<div><label class="'+ el.prop('id') +'-error rm-form-field-invalid-msg">' + msg + '</label></div'); },500); 245 return true; 246 } 247 else{ 248 setTimeout(function(){el.closest(".intl-tel-input").append('<div><label class="'+ el.prop('id') +'-error rm-form-field-invalid-msg">' + msg + '</label></div'); },500); 249 return false; 250 } 251 } 252 } 253 return false; 254} 255 256function rm_toggle_tel_wc_error(valid,el,msg){ 257 if(el.closest('.rmwc-input').length==0) 258 return true; 259 260 261 jQuery("." + el.prop('id') + "-error").remove(); 262 var inputValue= el.val(); 263 var form_con=el.closest('form'); 264 setTimeout(function(){ form_con.find('[type=submit]').prop('disabled',false);},500); 265 if(inputValue.length==0 && el.prop('required')){ 266 return true; 267 } 268 269 if(!el.is(':visible')) 270 { 271 return true; 272 } 273 274 if(el.length>0 && inputValue.length>0){ 275 if(!valid){ 276 if(el.closest(".rminput").length>0){ 277 setTimeout(function(){el.closest(".rminput").append('<div><label class="'+ el.prop('id') +'-error rm-form-field-invalid-msg">' + msg + '</label></div'); },500); 278 return false; 279 } 280 else{ 281 setTimeout(function(){el.closest(".intl-tel-input").append('<div><label class="'+ el.prop('id') +'-error rm-form-field-invalid-msg">' + msg + '</label></div'); },500); 282 return true; 283 } 284 } 285 } 286 return true; 287} 288 289/* 290function validate_empty_required_fields(formId) { 291 let allAreFilled = true; 292 document.getElementById(formId).querySelectorAll("[required]").forEach(function(i) { 293 if (!allAreFilled) allAreFilled = false; 294 if (!i.value) allAreFilled = false; 295 if (i.type === "radio") { 296 let radioValueCheck = false; 297 document.getElementById("myForm").querySelectorAll(`[name=${i.name}]`).forEach(function(r) { 298 if (r.checked) radioValueCheck = true; 299 }) 300 allAreFilled = radioValueCheck; 301 } 302 }) 303 if (!allAreFilled) { 304 allAreFilled = false; 305 } 306 307 return allAreFilled; 308} 309*/ 310 311/*launches all the functions assigned to an element on click event*/ 312 313function performClick(elemId, s_id, f_id) { 314 var elem = document.getElementById(elemId); 315 if (elem && document.createEvent) { 316 var evt = document.createEvent("MouseEvents"); 317 evt.initEvent("click", true, false); 318 elem.dispatchEvent(evt); 319 } 320} 321 322 323function rm_append_field(tag, element_id) { 324 jQuery('#' + element_id).append("<" + tag + " class='appendable_options'>" + jQuery('#' + element_id).children(tag + ".appendable_options").html() + "</" + tag + ">"); 325} 326 327function rm_delete_appended_field(element, element_id) { 328 if (jQuery(element).parents("#".element_id).children(".appendable_options").length > 1) 329 jQuery(element).parent(".appendable_options").remove(); 330} 331 332 333function rm_get_country_code_by_name(country_list,selected_country){ 334 var regex = new RegExp(selected_country + "\[[A-Z{{2}}
334\]",'i'); 335 if(selected_country.toLowerCase()=='india'){ 336 return 'in'; 337 } 338 else if(selected_country.toLowerCase()=='' || selected_country.toLowerCase()=='us' || selected_country.toLowerCase()=='united_states'){ 339 return 'us'; 340 } 341 else if(selected_country.toLowerCase()=='canada'){ 342 return 'ca'; 343 } 344 345 var country_code=''; 346 for(country in country_list) 347 { 348 var found= country.search(regex); 349 if(found>=0){ 350 var index= country.search(/\[[A-Z]{2}\]/i); 351 352 if(index>=0) 353 { 354 country_code= country.substr(index+1,2).toLowerCase(); 355 return country_code; 356 } 357 } 358 } 359 return country_code; 360} 361 362var rm_toggleFloatingScreens= function(screen_name){ 363 jQuery("#" + screen_name).animate({width:'toggle'},300,"linear"); 364 /*jQuery("#" + screen_name).slideToggle('medium');*/ 365 jQuery('.rm_floating_screens .rm_hidden').not("#" + screen_name).hide(); 366} 367 368var rm_closeFloatingScreens= function(screen_name){ 369 jQuery("#" + screen_name).animate({width:'toggle'},300,"linear",function(){ 370 jQuery(this).hide(); 371 }); 372 /*jQuery('.rm_floating_screens .rm_hidden').hide('medium');*/ 373} 374 375var rm_empty_tp_entry = function(tpid){ 376 jQuery("#" + tpid).val(''); 377} 378var rm_user_exists= function(el,url,data){ 379 var valid; 380 jQuery.post(url, data, function(response) { 381 elementId= jQuery(el).attr('id'); 382 jQuery("." + elementId + "-error").remove(); 383 response= JSON.parse(response); 384 if(response.status){ 385 /* if(!jQuery("#" + elementId + "-error").length)*/ 386 jQuery(el).parent(".rminput").append('<div><label class="'+ elementId +'-error rm-form-field-invalid-msg">' + response.msg + '</label></div>'); 387 jQuery(el).attr(data.attr,0); 388 if (jQuery('#rm-menu').length > 0) { 389 jQuery("#rm-menu").css('transform', 'translateY(0px)'); 390 } 391 392 } 393 else{ 394 jQuery("." + elementId + "-error").remove(); 395 jQuery(el).attr(data.attr,1); 396 } 397 }); 398} 399 400var rm_get_state= function(el,url,data){ 401 jQuery.post(url, data, function(response) { 402 elementId= jQuery(el).attr('id'); 403 console.log(response); 404 //console.log(data.state_field_id); 405 var name = jQuery('#'+data.state_field_id+'_attrs').attr('data-name'); 406 var placeholder = jQuery('#'+data.state_field_id+'_attrs').attr('data-placeholder'); 407 var class_val = jQuery('#'+data.state_field_id+'_attrs').attr('data-class'); 408 var style = jQuery('#'+data.state_field_id+'_attrs').attr('data-style'); 409 console.log('--'+style); 410 var required = jQuery('#'+data.state_field_id+'_attrs').attr('data-required'); 411 var required_attr = ''; 412 if(required!=''){ 413 required_attr = 'required="required"'; 414 } 415 var value = jQuery('#'+data.state_field_id+'_attrs').attr('data-value'); 416 if(response!='' && response!=0){ 417 jQuery('#'+data.state_field_id).html('<select name="'+name+'" style="'+style+'" class="'+class_val+'" placeholder="'+placeholder+'" '+required_attr+'>'+response+'</select>'); 418 }else{ 419 jQuery('#'+data.state_field_id).html('<input type="text" name="'+name+'" style="'+style+'" placeholder="'+placeholder+'" class="'+class_val+'" value="'+value+'" '+required_attr+'>'); 420 } 421 }); 422} 423 424/* Intializing the necessary scripts*/ 425jQuery(document).ready(function(){ 426 if(jQuery(".data-conditional").length>0) 427 jQuery(".data-conditional").conditionize({}); 428}); 429 430 431jQuery(document).ready(function () { 432 jQuery(".rm_mapv_container").each(function() { 433 if (jQuery(this).width() < 600) { 434 jQuery(this).addClass("rm_mapvsm"); 435 436 437 } else { 438 jQuery(this).addClass("rm_mapvlg"); 439 440 } 441 }); 442}); 443 444 445/* Login Widget Popup */ 446 447 jQuery(document).ready(function(){ 448 449 var rmColor = jQuery(".rm_widget_container").find("a").css('color'); 450 jQuery(".widget_rm_login_btn_widget .rm_widget_container div a.rm-button").css("border-color", rmColor); 451 452 var pgWidget_ParentWidth = jQuery('.widget_rm_login_btn_widget').width(); 453 if (pgWidget_ParentWidth < 280) { 454 jQuery('.widget_rm_login_btn_widget').addClass('rm-narrow-widget'); 455 456 } 457 458 459 460 }); 461 462 var resizeboxes = function() { 463 if (jQuery("#rm_front_sub_tabs").width() < 800) 464 { 465 jQuery("#rm_front_sub_tabs").addClass("rmNarrow"); 466 jQuery("#rm_front_sub_tabs").removeClass("rmWide"); 467 } 468 else 469 { 470 jQuery("#rm_front_sub_tabs").removeClass("rmNarrow"); 471 jQuery("#rm_front_sub_tabs").addClass("rmWide"); 472 } 473}; 474 475resizeboxes(); 476 477jQuery(window).on('load', function(){ 478 resizeboxes(); 479}); 480 481 482function handle_data(email,first_name,type,token) { 483 var data = { 484 'action': 'rm_login_social_user', 485 'email': email, 486 'type': type, 487 'token': token 488 }; 489 490 /* since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php*/ 491 jQuery.post(rm_ajax_url, data, function(response) { 492 resp = JSON.parse(response); 493 if(resp['code'] == 'allowed') { 494 if(resp['msg'].length) 495 location = resp['msg']; 496 else 497 location.reload(); 498 } else 499 alert(resp['msg']); 500 }); 501} 502 503jQuery(document).ready(function(){ 504 jQuery(".rm_form_field_type_richtext").parent() .addClass("rm-richtext-fw"); 505}); 506 507jQuery(document).ready(function(){ 508 //jQuery(".rmagic-row").each(function(){ 509 // var classList = jQuery(this).find(".rmagic-fields-wrap").attr("class"); 510 // var classArr = classList.split(/\s+/); 511 // if(classArr.length > 1){ 512 // var cplPad = classArr[1].split('-'); 513 // jQuery(this).css("padding", "cplPad[2]px"); 514 // console.log(cplPad[2]); 515 // } 516 //}); 517 518 var padArr = []; 519 jQuery(".rmagic-row").each(function () { 520 var classList = jQuery(this).find(".rmagic-fields-wrap").attr("class"); 521 if(typeof classList != "undefined") { 522 var classArr = classList.split(/\s+/); 523 } else { 524 var classArr = []; 525 } 526 if (classArr.length > 1) { 527 var cplPad = classArr[1].split('-'); 528 if (padArr.indexOf(cplPad[2]) < 0) {
529 padArr.push(cplPad[2]); 530 } 531 } 532 }); 533 if (padArr.length > 0) { 534 var sheet = document.createElement('style'); 535 var sheetStyle = ''; 536 for (var i = 0; i < padArr.length; i++) { 537 sheetStyle += '.rm-gutter-' + padArr[i] + '{--rm-field-gutter:' + padArr[i] + 'px;}'; 538 } 539 sheet.innerHTML = sheetStyle; 540 jQuery("head").append(sheet); 541 } 542}); 543 544// Making sure action is empty on login form 545jQuery(document).ready(function () { 546 jQuery("form#rm_login_form_1").submit(function(event) { 547 jQuery(this).attr("action",""); 548 }); 549}); 550 551//User Area Block Resizer 552 553 var resize_submission_boxes = function() { 554 555 //console.log(jQuery(".rm-user-details-card").width()); 556 557 if (jQuery(".rm-user-details-card").width() < 450){ 558 559 jQuery(".rm-user-details-card").addClass("rm-narrow-card"); 560 jQuery(".rm-user-details-card").removeClass("rm-wide-card"); 561 } 562 563 else{ 564 565 jQuery(".rm-user-details-card").removeClass("rm-narrow-card"); 566 jQuery(".rm-user-details-card").addClass("rm-wide-card"); 567 568 } 569}; 570 571jQuery(window).on('resize', resize_submission_boxes); 572 573jQuery(document).ready(function () { 574 setTimeout(function () { 575 resize_submission_boxes(); 576 }, 500); 577 578 jQuery("i.rm_front_field_icon").each(function(index) { 579 jQuery(this).css("opacity",jQuery(this).data("opacity")); 580 }); 581}); 582 583//User Area Block Resizer End 584 585 586 587jQuery(document).ready(function () { 588 if (jQuery(".rm_paypal_order_details")[0]) { 589 jQuery('html, body').animate({ 590 scrollTop: jQuery('.rm_paypal_order_details').offset().top 591 }, 'slow'); 592 } 593 594 595 if (jQuery(".rm-post-sub-msg")[0]) { 596 jQuery('html, body').animate({ 597 scrollTop: jQuery('.rm-post-sub-msg').offset().top 598 }, 'slow'); 599 } 600 601}); 602 603jQuery(document).ready(function () { 604 jQuery('.rmagic-row').each(function () { 605 if (jQuery(this).find('.rmagic-col-12 .rmagic-field[style*="display: none"]').length > 0) { 606 jQuery(this).addClass('rm-hidden-row'); 607 } 608 }); 609 610});
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.