1var arraySubmit = ''; 2var idThisForm = ''; 3var arrayCheckbox = ''; 4var arrayTextField= ''; 5(function ($) { 6$(document).ready(function () { 7 8'use strict'; 9 10//show popup form 11$('.button-qform').on('click', function(){ 12 $(this).addClass('active-q-b'); 13 let dataForm = $(this).attr('data-form'); 14 let showForm = $('.quasar-form[data-id="'+dataForm+'"]').closest('.modal-box-qform'); 15 showForm.css({'display' : 'flex'}); 16 //animation popup 17 setTimeout(function(){ 18 showForm.find('.swap-form-block').addClass('show-from-q'); 19 },100); 20}); 21 22$('.modal-box-qform').on('click', function(q){ 23 if( !$(q.target).hasClass('quasar-form') && ($(".quasar-form").has(q.target).length === 0 ) && !$(q.target).hasClass('fa-timesq') ) { 24 $('.modal-box-qform').css('display' , 'none').find('.swap-form-block').removeClass('show-from-q'); 25 $('.button-qform').removeClass('active-q-b'); 26 } 27}); 28 29//close modal Esc 30$(document).keyup(function(e) { 31 if (e.key === "Escape" || e.keyCode === 27) { 32 $('.modal-box-qform').each(function(){ 33 if ( $(this).css('display') =='flex'){ 34 $('.modal-box-qform').css('display' , 'none').find('.swap-form-block').removeClass('show-from-q'); 35 $('.button-qform').removeClass('active-q-b'); 36 } 37 }); 38 } 39}); 40 41//show popup form when you click on an element with class "data-starid" and attr data-starid 42$(document).on('click', '.quasar-form-button' , function(){ 43 let iformi = $(this).attr('data-quasarid'); 44 if (typeof iformi !== typeof undefined && iformi !== false) { 45 let showForm = $('.quasar-form[data-id="'+iformi+'"]').closest('.modal-box-qform'); 46 showForm.css({'display' : 'flex'}); 47 //animation popup 48 setTimeout(function(){ 49 showForm.find('.swap-form-block').addClass('show-from-q'); 50 },100); 51 } 52}); 53 54//show popup form link 55$(document).on('click', 'a' , function(q){ 56 let href = $(this).attr('href'); 57 58 if (typeof href !== typeof undefined){ 59 if ( href.match(/quasar-form-p-/g) ){ 60 q.preventDefault(); 61 let iformi = href.split('-'); 62 iformi = iformi[3]; 63 let showForm = $('.quasar-form[data-id="'+iformi+'"]').closest('.modal-box-qform'); 64 showForm.css({'display' : 'flex'}); 65 //animation popup 66 setTimeout(function(){ 67 showForm.find('.swap-form-block').addClass('show-from-q'); 68 },100); 69 } 70 } 71}); 72 73 74//close popup form 75$('.close-quasar-form, .close-quasar-form i').on('click', function(){ 76 $('.modal-box-qform').css('display' , 'none').find('.swap-form-block').removeClass('show-from-q'); 77}); 78 79 80//input style 2 81$('.form-main-element').on('focus', '.input-style-quasar, .textarea-style-quasar', function(){ 82 let field = $(this).closest('.form-element-q'); 83 //fix phone style 2 84 field.closest('.form-main-element').find('.type-phone-element').each(function(){ 85 if ( $(this).find('input').val() ===''){ $(this).removeClass('style-qform-2-focus'); } 86 }); 87 if ( field.hasClass('style-qform-2') ) { 88 field.addClass('style-qform-2-focus'); 89 } 90}); 91 92$('.form-main-element').on('focusout', '.style-qform-2 .input-style-quasar, .style-qform-2 .textarea-style-quasar', function(){ 93 if ( $(this).val()==='' ) { 94 let field = $(this).closest('.form-element-q'); 95 //all filed 96 if ( !field.hasClass('type-timepicker-element') ) { field.removeClass('style-qform-2-focus'); } 97 //timepicker field 98 if ( field.hasClass('type-timepicker-element') ) { 99 if ( field.find('.hour-picker-q').html() =='--' && field.find('.minut-picker-q').html() =='--' ) { field.removeClass('style-qform-2-focus'); } 100 } 101 } 102}); 103//calculation function 104function kalculation(thisForm) { 105 106 thisForm.find('.type-itog-element').each(function(){ 107 let stringCalculation = $(this).find('div').attr('data-kalkulation'); 108 let object = $(this); 109 let hide = object.attr('data-hide-total'); 110 let hideNumber = 0; 111 //array id for calculation 112 var arrayCalkulation = stringCalculation.match(/\[.*?\]/g); 113 var valueField = ''; 114 let rounding = $(this).attr('data-rounding'); 115 if (arrayCalkulation !==null){ 116 $.each( arrayCalkulation,function(index,value){ 117 var brackets = value; 118 var idfield = '#' + value.substr( 1, (value.length - 2 ))+' ';//remove brackets [ ] 119 var thisField = thisForm.find(idfield); 120 //value field 121 if ( thisField.hasClass('type-input-element') || thisField.hasClass('type-quantity-element') ){ 122 valueField = thisField.find('input').val(); 123 if ( valueField !== '' && !valueField.match(/[0-9]/g) ){valueField = 0;} 124 } 125 if ( thisField.hasClass('type-checkbox-element') || thisField.hasClass('checkbox-img') ){ 126 valueField = ''; 127 thisField.find('input').each(function(){ 128 if ($(this).prop("checked")){ 129 //total all field checkbox 130 if (valueField ===''){ valueField = $(this).attr('date-rasschet'); } 131 else { 132 if ( $(this).attr('date-rasschet') !=='' ){ 133 valueField = stringMath ( valueField +'+'+$(this).attr('date-rasschet') ); 134 } 135 } 136 } 137 }); 138 } 139 if ( thisField.hasClass('type-dropdawn-element') ){ 140 valueField = ''; 141 thisField.find('option').each(function(){ 142 if ($(this).prop("selected")){ 143 //total all option selected 144 if (valueField ===''){ valueField = $(this).attr('date-rasschet'); } 145 else valueField = stringMath ( valueField +'+'+$(this).attr('date-rasschet') ) ; 146 } 147 }); 148 } 149 if ( thisField.hasClass('type-range-element') ){ valueField = thisField.find('.tumbler-q-slider').html(); } 150 if ( thisField.hasClass('type-itog-element') ){ 151 valueField = thisField.find('.summa-itog').html(); 152 } 153 if (typeof valueField =="undefined"){ valueField = 0; hideNumber++; } 154 if ( valueField==='' ){ valueField = 0; hideNumber++;}
155 stringCalculation = stringCalculation.replace( value , valueField ); 156 }); 157 //hide not full fill 158 if ( hide == 'yes'){ 159 if ( hideNumber > 0){ object.addClass('hide-not-full'); } 160 if ( hideNumber === 0){ object.removeClass('hide-not-full'); } 161 } 162 163 //clear extra characters 164 if ( stringCalculation === ''){ stringCalculation = '0'; } 165 stringCalculation = stringCalculation.replace( /[^0-9+*\-\/\(\)\.]/g , '' ); 166 //blocked error delenie na 0 167 stringCalculation = stringCalculation.replace( /(\/0)/g , '/1' ); 168 var total = stringMath ( stringCalculation ) ; 169 if ( rounding == '1' ){ total = Math.round(total); }//standart down 170 if ( rounding == '2' ){ total = Math.ceil(total); }//Round up 171 if ( rounding == '3' ){ total = Math.floor(total); }//Round down 172 if ( rounding == '4' ){ total = total.toFixed(2); } 173 if ( rounding == '5' ){ total = total.toFixed(1); } 174 175 $(this).find('.summa-itog').html(total).attr('data-val-calculation', total);//output 176 177 let qforma = $(this).closest('.quasar-form'); 178 qforma.find('.form-element-q').attr('data-logick', '0'); 179 } 180 }); 181} 182 183 184//launch function calculation 185$('.quasar-form').on('click keyup', 'input' , function(){ 186 var thisForm = $(this).closest('.quasar-form'); 187 //validation 188 let element = $(this).closest('.form-element-q'); 189 if ( element.hasClass('type-input-element') ){ 190 if ( element.attr('data-validation') == 'number'){ 191 if ( $(this).val().match(/[^0-9]/g) ) { 192 if ( ! element.hasClass('error-validation') ) { 193 element.addClass('error-validation'); 194 showTextErrorForm(thisForm); 195 } 196 } 197 else { 198 if ( element.hasClass('error-validation') ) { 199 element.removeClass('error-validation'); 200 showTextErrorForm(thisForm); 201 } 202 } 203 } 204 if ( element.attr('data-validation') == 'number-calculator' ){ 205 if ( $(this).val().match(/[^0-9.,]/g) ) { 206 if ( ! element.hasClass('error-validation') ) { 207 element.addClass('error-validation'); 208 showTextErrorForm(thisForm); 209 } 210 } 211 else { 212 if ( element.hasClass('error-validation') ) { 213 element.removeClass('error-validation'); 214 showTextErrorForm(thisForm); 215 } 216 } 217 //replce zapetua na tochka for calculator 218 let val_replace = $(this).val().replace(/,/g, '.'); 219 $(this).val( val_replace ); 220 } 221 if ( element.attr('data-validation') == 'alphabete' ){ 222 if ( $(this).val().match(/[0-9@#$%^&*(){}|+=_â!"':;.,<>?!`~\-\]\[\\\/\s]/) ) { 223 if ( ! element.hasClass('error-validation') ) { 224 element.addClass('error-validation'); 225 showTextErrorForm(thisForm); 226 } 227 } 228 else { 229 if ( element.hasClass('error-validation') ) { 230 element.removeClass('error-validation'); 231 showTextErrorForm(thisForm); 232 } 233 } 234 } 235 } 236 if ( thisForm.find('.type-itog-element').length > 0 ) { 237 kalculation(thisForm); 238 } 239}); 240 241$('.quasar-form').on('change', 'select' , function(){ 242 var thisForm = $(this).closest('.quasar-form'); 243 if ( thisForm.find('.type-itog-element').length > 0 ) { 244 kalculation(thisForm); 245 } 246 //for logick zapolneno or nezapolneno 247 let object = $(this).closest('.form-element-q'); 248 if ( object.hasClass('type-dropdawn-element') ){ 249 let zapolnenie = 0; 250 let valuselect = object.find('option:selected'); 251 if ( valuselect.attr('data-selected')=='yes') { zapolnenie++; } 252 if ( zapolnenie > 0 ) { object.attr('data-val', 'false'); } 253 else { object.attr('data-val', 'true'); } 254 } 255}); 256 257 258//launch slider UI
259function sliderUpdate(){ 260 $('.type-range-element').each(function(){ 261 var element = $(this).find('.polzet'); 262 let width = element.attr('data-width'); 263 let color1 = element.attr('data-color1'); 264 let color2 = element.attr('data-color2'); 265 let color3 = element.attr('data-color3'); 266 let color4 = element.attr('data-color4'); 267 let minQ = Number(element.attr('data-min')); 268 let maxQ = Number(element.attr('data-max')); 269 let stepQ = Number(element.attr('data-step')); 270 let valQ = Number(element.attr('data-val')); 271 272 element.slider({// UI slider 273 min: minQ, 274 max: maxQ, 275 step: stepQ, 276 value: valQ, 277 range: "min", 278 animate: "fast", 279 slide : function(event, ui) { 280 if (ui.value !==0){ 281 $(this).find('span').html("<div class='tumbler-q-slider show-informer' style='color: "+color4+";'>" + ui.value + "</div>"); 282 } 283 else { 284 $(this).find('span').html("<div class='tumbler-q-slider' style='color: "+color4+";'>" + ui.value + "</div>"); 285 } 286 287 //1. launch calulation 288 var thisForm = $(this).closest('.quasar-form'); 289 if ( thisForm.find('.type-itog-element').length > 0 ) { kalculation(thisForm); } 290 //2. launch logic function 291 thisForm.find('.form-element-q').attr('data-logick', '0'); 292 } 293 }); 294 //add sclae in range 295 if ( element.attr('data-sh')==='yes' || element.attr('data-sh-2')==='yes' ) { 296 let slider = $(this).find('.polzet'); 297 let top = slider.attr('data-m-s'); 298 if ( element.attr('data-sh')==='yes' && element.attr('data-sh-2')==='not' ) { 299 if ( minQ!=='' && maxQ!=='' ){ 300 slider.addClass('scale-q'); 301 let summaVal = maxQ - minQ; 302 let leftPX = 0; 303 slider.append( $('<div class="rangeotm"><div class="scale-sl-q">'+minQ+'</div></div>').css({'left' : leftPX+'%', 'top': top, 'color': element.attr('data-color5') }) ); 304 leftPX = 100; 305 slider.append( $('<div class="rangeotm"><div class="scale-sl-q">'+maxQ+'</div></div>').css({'left': leftPX+'%', 'top': top, 'color': element.attr('data-color5') }) ); 306 } 307 } 308 else { 309 if ( element.attr('data-sh-2')==='yes' ) { 310 if ( minQ!=='' && maxQ!=='' ){ 311 slider.addClass('scale-q'); 312 let summaVal = (maxQ - minQ) / stepQ; 313 summaVal = Math.floor(summaVal); 314 let left = 100 / summaVal; 315 let leftPX = 0; 316 while( minQ <= maxQ ){ 317 let val = minQ; 318 if ( minQ != Math.floor(minQ) ){ 319 val = val.toFixed(1); 320 } 321 slider.append( $('<div class="rangeotm"><div class="scale-sl-q">'+val+'</div></div>').css({'left' : leftPX+'%', 'top' : top, 'color': element.attr('data-color5') }) ); 322 leftPX = leftPX + left; 323 minQ = minQ + stepQ; 324 } 325 } 326 } 327 } 328 } 329 //position 330 if ( element.attr('data-p-s')==='bottom' ){ element.addClass('button-scale-q'); } 331 332 $(this).find('.polzet').find('span').html("<div class='tumbler-q-slider'>" + element.slider("value") + "</div>"); 333 $(this).find('.ui-slider-range').css({ 334 'background-color' : color1, 335 'height' : element.css('height'), 336 'border-radius' : element.css('border-radius'), 337 }); 338 $(this).find('.polzet').css({ 'background-color' : color2 }); 339 $(this).find('.ui-slider-handle').css('background-color', color3); 340 }); 341} 342
343sliderUpdate(); 344 345//start calculator 346$('.quasar-form').each(function(){ 347 if ( $(this).find('.type-itog-element').length > 0 ){ 348 kalculation( $(this) ); 349 } 350}); 351 352 353//activation UI datepicker 354function datapiker() { 355 $('.type-data-element').each(function(){ 356 let lang = $(this).attr('data-lang'); 357 if ( lang =='ru' ){ 358 $.datepicker.setDefaults({ 359 closeText: 'ÐакÑÑÑÑ', 360 prevText: '<ÐÑед', 361 nextText: 'След>', 362 currentText: 'СегоднÑ', 363 monthNames: ['ЯнваÑÑ','ФевÑалÑ','ÐаÑÑ','ÐпÑелÑ','Ðай','ÐÑнÑ','ÐÑлÑ','ÐвгÑÑÑ','СенÑÑбÑÑ','ÐкÑÑбÑÑ','ÐоÑбÑÑ','ÐекабÑÑ'], 364 monthNamesShort: ['Янв','Фев','ÐаÑ','ÐпÑ','Ðай','ÐÑн','ÐÑл','Ðвг','Сен','ÐкÑ','ÐоÑ','Ðек'], 365 dayNames: ['воÑкÑеÑенÑе','понеделÑник','вÑоÑник','ÑÑеда','ÑеÑвеÑг','пÑÑниÑа','ÑÑббоÑа'], 366 dayNamesShort: ['вÑк','пнд','вÑÑ','ÑÑд','ÑÑв','пÑн','ÑбÑ'], 367 dayNamesMin: ['ÐÑ','Ðн','ÐÑ','СÑ','ЧÑ','ÐÑ','Сб'], 368 weekHeader: 'Ðед', 369 dateFormat: 'dd-mm-yy', 370 firstDay: 1, 371 showAnim: 'slideDown', 372 isRTL: false, 373 showMonthAfterYear: false, 374 yearSuffix: '' 375 } ); 376 } 377 let setting_1 = 0; 378 if ( $(this).attr('data-s-1') =='not' ){ setting_1 = null; } 379 let setting_2 = $(this).attr('data-s-2'); 380 381 let datacolor1 = $(this).find('input').attr('data-colorsw'); 382 let datacolor2 = $(this).find('input').attr('data-colorsw2'); 383 let datacolor3 = $(this).find('input').attr('data-colorsw3'); 384 385 $(this).find('input').datepicker({//date table call 386 beforeShow: function(input, inst) { 387 //before action 388 $('#ui-datepicker-div').addClass('qdatapicker').attr('data-id-field', $(this).closest('.type-data-element').attr('id') ); 389 $('#ui-datepicker-div').find('.ui-datepicker-header').css('background-color', datacolor1) ; 390 //color of setting 391 setTimeout(function(){ 392 $('.ui-datepicker-header').css({'background-color' : datacolor1 , 'color' : datacolor2 }).find('.ui-corner-all').css('color' , datacolor2 ); 393 $('.ui-datepicker-calendar a').css({'color' : datacolor3}); 394 },30); 395 }, 396 beforeShowDay: function(date){ 397 //disable wekend 398 if ( setting_2 =='yes' ){ 399 let dayOfWeek = date.getDay(); 400 if (dayOfWeek === 0 || dayOfWeek === 6){ 401 return [false]; 402 } 403 else { 404 return [true]; 405 } 406 } 407 else { return [true]; } 408 }, 409 onChangeMonthYear: function(year, month, widget) { 410 let datacolor1 = $(this).attr('data-colorsw'); 411 let datacolor2 = $(this).attr('data-colorsw2'); 412 let datacolor3 = $(this).attr('data-colorsw3'); 413 setTimeout(function(){ 414 $('.ui-datepicker-header').css({'background-color' : datacolor1 , 'color' : datacolor2 }).find('.ui-corner-all').css('color' , datacolor2 ); 415 $('.ui-datepicker-calendar a').css({'color' : datacolor3}); 416 },20); 417 }, 418 minDate: setting_1, 419 }); 420 }); 421} 422 423if( $('.type-data-element').length > 0 ){ 424 datapiker(); 425} 426 427//fix date style2 428$('.type-data-element').on('change', function(){ 429 let object = '#'+$('.qdatapicker').attr('data-id-field'); 430 if ( $(object).hasClass('style-qform-2') ){ 431 $(object).addClass('style-qform-2-focus'); 432 } 433}); 434 435//custom timepicker 436$('.quasar-form').on('click', '.type-timepicker-element .input-swap', function(){ 437 if ( $(this).find('.wrap-time-list-q').length === 0 ) { 438 let object = $(this).parent(); 439 $('.wrap-time-list-q').remove(); 440 $('.active-time-q').removeClass('active-time-q').find('.wrap-time-list-q').remove(); 441 object.addClass('active-time-q'); 442 let min = object.attr('data-min').split(':'); 443 let max = object.attr('data-max').split(':'); 444 let step = object.attr('data-step'); 445 let time = '<div class="wrap-time-list-q" style="background-color:'+object.attr('data-color-2')+';">';
446 let hours = '<div class="hours-list-q">'; 447 let minute = '<div class="minute-list-q">'; 448 let valHours = $(this).find('.hour-picker-q').html(); 449 let valMinute = $(this).find('.minut-picker-q').html(); 450 let number = 0; 451 let totalHour = 0; 452 453 while (number < 24) { 454 let val = ''; 455 if (number < 10){ val = '0'+number; } 456 else { val = number; } 457 if ( Number(val) >= min[0] && Number(val) <= max[0] ){ //min max hour 458 if ( String(valHours) == String(val) ){hours = hours + "<div class='active-t-q' style='color:"+object.attr('data-color-4')+"; background-color:"+object.attr('data-color-3')+";'>"+val+"</div>";} 459 else { hours = hours + "<div style='color:"+object.attr('data-color-1')+";'>"+val+"</div>"; } 460 totalHour++; 461 } 462 number++; 463 } 464 hours = hours + '</div>'; 465 time = time + hours; 466 467 number = 0; 468 let stepVal = 1; 469 while (number < 60) { 470 let val = ''; 471 if (number < 10){ val = '0'+number; } 472 else { val = number; } 473 if ( totalHour === 1 ){ 474 if ( stepVal === 1 ){//step 475 if ( Number(val) >= min[1] && Number(val) <= max[1] ){ //min max minut 476 if ( String(valMinute) == String(val) ){ minute = minute + "<div class='active-t-q' style='color:"+object.attr('data-color-4')+"; background-color:"+object.attr('data-color-3')+";'>"+val+"</div>";} 477 else { minute = minute + "<div style='color:"+object.attr('data-color-1')+";'>"+val+"</div>"; } 478 } 479 } 480 } 481 else { 482 //stepVal = Number(stepVal); 483 if ( stepVal === 1 ){//step 484 if ( String(valMinute) == String(val) ){ minute = minute + "<div class='active-t-q' style='color:"+object.attr('data-color-4')+"; background-color:"+object.attr('data-color-3')+";'>"+val+"</div>";} 485 else { minute = minute + "<div style='color:"+object.attr('data-color-1')+";'>"+val+"</div>"; } 486 } 487 } 488 number++; 489 stepVal--; 490 if ( stepVal === 0 ){ stepVal = Number(step); } 491 } 492 time = time + minute; 493 time = time + '</div>'; 494 $(this).append(time); 495 } 496}); 497 498//window timepicker remove 499$(document).on('click', function(e){ 500 if ( $('.wrap-time-list-q').length > 0 ){ 501 if ( (!$(".active-time-q").is(e.target)) && ($(".active-time-q").has(e.target).length === 0) ) { 502 $('.wrap-time-list-q').remove(); 503 $('.active-time-q').removeClass('active-time-q'); 504 } 505 } 506}); 507 508$('.quasar-form').on('click', '.hours-list-q div, .minute-list-q div' , function(e){ 509 let object = $(this).parent(); 510 let val = $(this).html(); 511 let mainObject = $(this).closest('.type-timepicker-element'); 512 $(this).parent().find('.active-t-q').removeClass('active-t-q').css({"color" : mainObject.attr('data-color-1'), "background-color" : '' }); 513 $(this).addClass('active-t-q').css({"background-color" : mainObject.attr('data-color-3'), "color" : mainObject.attr('data-color-4') }); 514 if ( object.hasClass('hours-list-q') ){ 515 object.closest('.type-timepicker-element').attr('data-hour' , val).find('.hour-picker-q').html(val); 516 } 517 if ( object.hasClass('minute-list-q') ){ 518 object.closest('.type-timepicker-element').attr('data-minute' , val).find('.minut-picker-q').html(val); 519 } 520 mainObject.removeClass('empty-filed-q'); 521 mainObject.attr( 'data-time', mainObject.find('.hour-picker-q').html() + ':' + mainObject.find('.minut-picker-q').html() );//for logic condition 522 //for logick 523 if ( mainObject.find('.hour-picker-q').html() !='--' && mainObject.find('.minut-picker-q').html() !='--' ) { 524 mainObject.find('input').trigger('keyup'); //zapolneno 525 } 526 //fix style 2 527 if ( mainObject.hasClass('style-qform-2') ){ 528 if ( mainObject.find('.hour-picker-q').html() !='--' || mainObject.find('.minut-picker-q').html() !='--' ) { 529 mainObject.find('.wrap-time-picker-q').css('display' ,'flex'); 530 mainObject.addClass('style-qform-2-focus'); 531 } 532 } 533});
534 535//captcha 536function captcha(){ 537 $('.type-captcha-element').each(function(){ 538 //random 539 var elementcaptcha = $(this).find('.captcha-element-q'); 540 var stringk = ''; 541 elementcaptcha.find('img').each(function(){ 542 function getRandomInRange(min, max) { 543 return Math.floor(Math.random() * (max - min + 1)) + min; 544 } 545 var random1 = getRandomInRange(0, 8); 546 var linkimg = $(this).attr('src').split('/'); 547 linkimg.pop(); 548 var string =''; 549 $.each(linkimg,function(index,value){ 550 string = string + value +'/'; 551 }); 552 string = string + 'qfc-'+random1+'.png'; 553 stringk = stringk + '/' + random1; 554 $(this).attr({'src': string }); 555 }); 556 stringk = stringk.split('/'); 557 if (stringk[1] > stringk[2] ) { 558 $(this).find('div').each(function(){ 559 if( $(this).html()=='+'){ $(this).html('-'); } 560 }); 561 } 562 else { 563 $(this).find('div').each(function(){ 564 if( $(this).html()=='-'){ $(this).html('+'); } 565 }); 566 } 567 }); 568} 569captcha(); 570 571 572 573//fix style with empty title 574$('.form-main-element .type-upload-element').each(function(){ 575 if ($(this).find('.heading-field-q').html()===''){ $(this).find('.heading-field-q').css('top' , '-5px'); } 576}); 577 578var idNumber = 0; 579//uplod file 580$('.type-upload-element').on('change', 'input[type="file"]', function(){ 581 if ( $(this).val()!=='' ) { 582 let nameFile = this.files[0].name; 583 let nameFileUpload = nameFile.length; 584 let sizeFile = this.files[0].size; 585 let condition = 0; 586 let button = $(this).closest('.type-upload-element'); 587 //type file 588 let arrayTypeFile = nameFile.split('.'); 589 let typeFile = arrayTypeFile .pop();// typeFile 590 $(this).closest('label').removeClass('empty-filed-q').prev('.messagereq').find('span').css('display', 'none'); 591 //conditions 592 //size file 593 let max = button.attr('data-v') * 1000000 ; 594 if ( sizeFile > max ){ 595 $(this).closest('label').addClass('empty-filed-q').prev('.messagereq').find('.error-upload-1').css('display', 'flex'); 596 $(this).attr('type', 'text'); 597 $(this).attr('type', 'file'); 598 $(this).closest('label').find('.textfq').removeClass('tochkiq'); 599 condition++; 600 } 601 //type fiel (typeFile) 602 let extension = button.attr('data-r'); 603 let number = 0; 604 if ( extension.indexOf(',') > 0 ){ 605 var arrayExtension = extension.split(','); 606 $.each(arrayExtension,function(index,value){ 607 if(value == typeFile){ number++; } 608 }); 609 } 610 if ( extension.indexOf(',') == -1 ){ 611 if (extension == typeFile){ number++; } 612 } 613 if ( number === 0 ){ 614 $(this).closest('label').addClass('empty-filed-q').prev('.messagereq').find('.error-upload-2').css('display', 'flex'); 615 $(this).attr('type', 'text'); 616 $(this).attr('type', 'file'); 617 $(this).closest('label').find('.textfq').removeClass('tochkiq'); 618 condition++; 619 } 620 //name file in button 621 if (nameFileUpload > 16 && condition === 0 ) { 622 nameFile = nameFile.substr( 0, nameFileUpload - (nameFileUpload - 16) ); //maximum name length 623 $(this).closest('label').find('.textfq').addClass('tochkiq'); 624 $(this).closest('label').find('.textfq').text(nameFile); 625 } 626 if (nameFileUpload <= 16) { 627 $(this).closest('label').find('.textfq').removeClass('tochkiq'); 628 $(this).closest('label').find('.textfq').text(nameFile); 629 } 630 idNumber++; 631 //plus add file 632 if( button.attr('data-max') > 1) {//condition file limit 633 if ( button.attr('data-max') > button.find('label').length ) { 634 if ( $(this).closest('.type-upload-element').find('.add-button-upload').length === 0 ) { 635 let CreadetElement ='<div class="additionally-box"> <div class="add-button-upload">'+ button.attr('data-add') +'</div></div>'; 636 button.append(CreadetElement); 637 } 638 } 639 } 640 } 641 else { 642 let textButton = $(this).closest('.type-upload-element').attr('data-text'); 643 $(this).closest('label').find('.textfq').removeClass('tochkiq').text(textButton); 644 } 645}); 646 647$('.type-upload-element').on('click', '.add-button-upload', function(){ 648 let stylebutton = []; 649 let button = $(this).closest('.type-upload-element'); 650 let idq = button.find('label').filter(":first").attr('for'); 651 stylebutton[0] = button.find('label'); 652 stylebutton[1] = stylebutton[0].attr('style'); 653 stylebutton[2] = stylebutton[0].attr('class'); 654 stylebutton[3] = stylebutton[0].find('i').attr('style'); 655 let idq2 = idq + idNumber; 656 //add upload button 657 let CreadetElement = '<span class="messagereq">'+button.find('.messagereq').filter(":first").html()+'</span> <label class="'+stylebutton[2]+'" style="'+stylebutton[1]+'" for="'+idq2+'"><span class="textfq">'+button.attr('data-text')+'</span> <div class="fa-icons-q"><i class="fa fa-uploadq" style="'+stylebutton[3]+'"></i></div>
657<input id="'+idq2+'" class="element-css-q" name="userFile1" type="file"></label>'; 658 button.find('.swap-button-upload').append(CreadetElement); 659 idNumber++; 660 //hide message 661 $('#'+idq2).closest('label').removeClass('empty-filed-q').prev('.messagereq').find('span').css('display', 'none'); 662 //add remove button 663 if ( button.find('.remove-button-upload').length === 0 && button.find('label').length > 1 ){ 664 CreadetElement ='<div class="remove-button-upload"><i class="fa fa-timesq"></i></div>'; 665 button.find('.additionally-box').append(CreadetElement); 666 } 667 //add class margin 668 if ( button.find('label').length > 1 ) { 669 if ( !button.find('.swap-button-upload').hasClass('margin-bottom-upload') ){ button.find('.swap-button-upload').addClass('margin-bottom-upload'); } 670 } 671 else { 672 if ( button.find('.swap-button-upload').hasClass('margin-bottom-upload') ){ 673 button.find('.swap-button-upload').removeClass('margin-bottom-upload'); 674 } 675 } 676 677 //remove plus add file 678 if ( $(this).closest('.type-upload-element').find('label').length >= $(this).closest('.type-upload-element').attr('data-max') ) { 679 $(this).remove(); 680 } 681}); 682 683$('.type-upload-element').on('click', '.remove-button-upload', function(){ 684 let button = $(this).closest('.type-upload-element'); 685 let remove = button.find('label').filter(":last"); 686 remove.prev('.messagereq').remove(); 687 remove.remove(); 688 if ( button.find('label').length == 1 ) { button.find('.remove-button-upload').remove(); } 689 //plus add file 690 if ( button.attr('data-max') > 1) {//condition file limit 691 if ( button.find('.add-button-upload').length === 0 ) { 692 if ( button.find('label').length > 0 ) { 693 let CreadetElement ='<div class="add-button-upload">'+ button.attr('data-add') +'</div>'; 694 button.find('.additionally-box').append(CreadetElement); 695 } 696 } 697 } 698}); 699 700//launch phone 701$('.type-phone-element').each(function(){ 702 let val = $(this).find('input').attr('data-mask'); 703 if ( $(this).find('input').attr('data-mask-a') !='not' ){ 704 if ( val !=='' ){ $(this).find('input').mask( val, {autoclear: false} ); } 705 } 706}); 707 708//auto filling 709$('.quasar-form').each(function(){ 710 let qforma = $(this); 711 qforma.find('.type-input-element input').each(function(){ 712 if ( $(this).attr('data-filling-a') == '1' && $(this).attr('data-filling') !== '' ) { 713 let input = $(this); 714 let classFiling = $(this).attr('data-filling'); 715 if ( !classFiling.match(/,/g) ){ 716 let object = $('.'+classFiling); 717 let type = object.prop('nodeName'); 718 if ( type == 'INPUT' || type == 'TEXTAREA' || type == 'SELECT' ){ 719 input.val( $('.'+classFiling).val() ) ; 720 } 721 else { 722 input.val( $('.'+classFiling).html() ) ; 723 } 724 //fix fot style 2 725 if ( input.closest('.form-element-q').hasClass('style-qform-2') ) { 726 if ( input.val !==''){ $(this).closest('.form-element-q').addClass('style-qform-2-focus'); } 727 } 728 } 729 } 730 }); 731}); 732 733 734function showTextErrorForm(qforma){ 735 if ( !qforma.hasClass('warning-add') ){ 736 qforma.find('.error-filed-q').each(function(){ 737 $(this).html( $(this).attr('data-text') ); 738 }); 739 740 let val = qforma.find('.error-qform'); 741 val.html( val.attr('data-text') ); 742 743 qforma.find('.messagereq span').each(function(){ 744 $(this).html( $(this).attr('data-text') ); 745 }); 746 747 val = qforma.find('.message-send-q span'); 748 val.html( val.attr('data-text') ); 749 750 val = qforma.find('.text-prorgress-send'); 751 val.html( val.attr('data-text')+': '); 752 753 val = qforma.find('.text-after-send-q'); 754 val.html( val.attr('data-text') ); 755 756 qforma.addClass('warning-add'); 757 758 //text after send 759 let object = qforma.find('.text-after-send-q'); 760 let objectHtml = object.html(); 761 let textDefoult = qforma.find('.none-element-send-q').html(); 762 if ( objectHtml.match(/\[default value\]/) ) { 763 objectHtml = objectHtml.replace( '[default value]' , textDefoult); 764 object.html( objectHtml ); 765 } 766 } 767} 768 769// Send emails 770$('.quasar-form').on('submit', function(e) { 771 772 e.preventDefault(); 773 e.stopPropagation(); 774 775 var qforma = $(this).closest('.quasar-form'); 776 showTextErrorForm(qforma); 777 qforma.find('.tab-box-q').filter(':last').addClass('last'); 778 if ( qforma.find('.activ-tab-q').hasClass('last') || qforma.find('.tab-box-q').length === 0 ) { 779 780 var valueRequed = 0; 781 var numberRequed = 0; 782 //required field conditions 783 qforma.find('.requed-field-q').each(function(){ 784 numberRequed++; 785 //1. input, datepicker, email 786 if ( $(this).hasClass('type-input-element') || $(this).hasClass('type-email-element') || $(this).hasClass('type-phone-element') || $(this).hasClass('type-data-element') || $(this).hasClass('type-upload-element') ) { 787 let input = $(this).find('input'); 788 if ( input.val() ==="" && input.attr('data-filling-a') != '2' && input.attr('data-filling-a') != '1' ) { 789 $(this).closest('.form-element-q').addClass('empty-filed-q'); 790 valueRequed = 1; 791 } 792 } 793 //2. timepicker 794 if ( $(this).hasClass('type-timepicker-element' ) ) { 795 if ( $(this).find('.hour-picker-q').html() =='--' || $(this).find('.minut-picker-q').html() =='--' ) { 796 $(this).closest('.form-element-q').addClass('empty-filed-q'); 797 valueRequed = 1; 798 } 799 } 800 //3. checkbox 801 if ( $(this).hasClass('type-checkbox-element') || $(this).hasClass('checkbox-img') || $(this).hasClass('type-privacy-element') ) { 802 let elementThis = $(this); 803 let number = 0; 804 $(this).find('input').each(function(){ 805 if ( $(this).prop("checked") ){ number++ ; } 806 }); 807 if (number === 0){ 808 if(!$(elementThis).hasClass('empty-filed-q')) { $(elementThis).addClass('empty-filed-q'); } 809 valueRequed = 1 ; 810 } 811 } 812 //4. textarea 813 if ($(this).hasClass('type-textarea-element')) { 814 if ($(this).find('textarea').val() ===""){ 815 $(this).addClass('empty-filed-q'); 816 valueRequed = 1; 817 } 818 } 819 //5. dropdawn 820 if ($(this).hasClass('type-dropdawn-element')) { 821 let valuselect = $(this).find('option:selected'); 822 if ( valuselect.attr('data-selected')=='yes') { 823 $(this).addClass('empty-filed-q'); 824 valueRequed = 1; 825 } 826 } 827 //6. captcha 828 if ($(this).hasClass('type-captcha-element')) { 829 if ($(this).find('input').val() ===""){ 830 $(this).addClass('empty-filed-q'); 831 valueRequed = 1; 832 } 833 else { 834 var stringc =''; 835 var valueinput = $(this).find('input').val(); 836 $(this).find('img').each(function(){ 837 var arrayCaptcha = $(this).attr('src').split('/'); 838 var valc = arrayCaptcha.pop(); 839 valc = valc.split('-'); 840 var valc2 = valc[1].split('.');
841 stringc = stringc + valc2[0] + '/'; 842 }); 843 stringc = stringc.split('/'); 844 var verification=''; 845 $(this).find('div.pl-form-q').each(function(){ 846 if ( $(this).html()=='-' ){ verification = ( Number(stringc[0])+1) - ( Number(stringc[1])+1 ); } 847 if ( $(this).html()=='+' ){ verification = ( Number(stringc[0])+1) + ( Number(stringc[1])+1 ); } 848 }); 849 //final validationFieldValue 850 if( valueinput != verification ){ 851 $(this).closest('.type-captcha-element').addClass('error-captcha-q'); 852 captcha(); 853 valueRequed = 2; 854 855 } 856 } 857 } 858 }); 859 //validation key 860 var numberfalid = 0; 861 var keyVerification = qforma.find('.form-main-element').attr('data-q'); 862 if (typeof keyVerification =="undefined"){ numberfalid++; } 863 else { 864 keyVerification = keyVerification.split('&'); 865 var arrayKey = keyVerification[0].split('A'); 866 if (keyVerification !=='' && arrayKey.length === 3){ 867 if ( qforma.attr('data-id') != ( keyVerification[1] - 7) ){ numberfalid++; } //condition id form 868 if ( arrayKey[0] != numberRequed ){ numberfalid++; } //quantity requed field 869 //quantity numbers and alphabets 870 if ( arrayKey[1] != qforma.find('.form-element-q[data-validation="Only numbers"]').length ){ numberfalid++; } 871 if ( arrayKey[2] != qforma.find('.form-element-q[data-validation="Only alphabets"]').length ){ numberfalid++; } 872 } 873 else { numberfalid++; } 874 875 if (numberfalid !== 0) { 876 qforma.find('.swap-error-qform').css('display', 'block'); 877 valueRequed = 10; 878 } 879 else {qforma.find('.swap-error-qform').css('display', 'none');} 880 } 881 //validation only numbers 882 qforma.find('.form-element-q[data-validation="number"]').each(function(){ 883 let input = $(this).find('input'); 884 if ( input.val().match(/[^0-9]/g) && input.attr('data-filling-a') != '2' && input.attr('data-filling-a') != '1') { 885 if ( ! $(this).hasClass('empty-filed-q') ) { 886 $(this).addClass('error-validation'); 887 valueRequed = 3; 888 } 889 } 890 }); 891 //validation only numbers for calculation 892 qforma.find('.form-element-q[data-validation="number-calculator"]').each(function(){ 893 let input = $(this).find('input'); 894 if ( input.val().match(/[^0-9.,]/g) && input.attr('data-filling-a') != '2' && input.attr('data-filling-a') != '1') { 895 if ( ! $(this).hasClass('empty-filed-q') ) { 896 $(this).addClass('error-validation'); 897 valueRequed = 3; 898 } 899 } 900 }); 901 //validation only alphabets 902 qforma.find('.form-element-q[data-validation="alphabete"]').each(function(){ 903 let input = $(this).find('input'); 904 if ( input.val().match(/[0-9@#$%^&*(){}|+=_â!"':;.,<>?!`~\-\]\[\\\/\s]/) ) { 905 if ( ! $(this).hasClass('empty-filed-q') && input.attr('data-filling-a') != '2' && input.attr('data-filling-a') != '1') { 906 $(this).addClass('error-validation'); 907 valueRequed = 3; 908 } 909 } 910 }); 911 //validation email 912 qforma.find('.type-email-element').each(function(){ 913 let email = $(this).find('input').val(); 914 if ( email !=='' ){ 915 function validateEmail() { 916 var re = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 917 return re.test(String(email).toLowerCase()); 918 } 919 let valid = validateEmail(); 920 if ( valid === false ){ 921 $(this).addClass('error-mail-q'); 922 valueRequed = 4; 923 } 924 } 925 }); 926 //validation phone 927 qforma.find('.type-phone-element').each(function(){ 928 let mask = $(this).find('input').attr('data-mask-a'); 929 if ( mask ==='yes' ){ 930 let mask2 = $(this).find('input').attr('data-mask'); 931 let number = mask2.match(/[0-9]/g).length; 932 if ( mask2 !== '' ){ 933 let phone = $(this).find('input').val(); 934 if ( phone !=='' ){ 935 phone = phone.match(/[0-9]/g).length; 936 if ( number != phone ) { 937 $(this).addClass('error-validation'); 938 valueRequed = 3; 939 } 940 } 941 942 } 943 } 944 }); 945 //validation special 946 if ( qforma.find('.special-field').val() !=='' ) { 947 valueRequed = 1; 948 } 949 950 if (valueRequed === 0){ 951 arrayCheckbox = ''; 952 arrayTextField = ''; 953 var dataField = ''; 954 var form_data = new FormData(); 955 form_data.append('id-form', qforma.attr('data-id') ); //add id this form in message 956 957 qforma.find('.form-element-q').each(function(){ 958 //input, email, datepicker 959 var heading = ''; 960 if ($(this).hasClass('type-input-element') || $(this).hasClass('type-email-element') || $(this).hasClass('type-phone-element') || $(this).hasClass('type-data-element') ){ 961 let input = $(this).find('input'); 962 //auto filling 963 if ( input.attr('data-filling-a') == '2' ) { 964 let classFiling = input.attr('data-filling'); 965 if ( !classFiling.match(/,/g) ){ 966 input.val( $('.'+classFiling).html() ) ; 967 } 968 else { 969 classFiling = classFiling.split(','); 970 if ( classFiling[0]!=='' && classFiling[1]!=='' ){ 971 //popup form 972 if ( qforma.hasClass('form-type-popup') ){ 973 let id = qforma.attr('data-id'); 974 let button = $('.active-q-b'); 975 let val = button.closest('.'+classFiling[0]).find('.'+classFiling[1]).html(); 976 input.val( val) ; 977 } 978 else { 979 let val = qforma.closest('.'+classFiling[0]).find('.'+classFiling[1]).html(); 980 $(this).val( val ) ; 981 } 982 } 983 } 984 } 985 986 if ($(this).find('input').val() !==''){ 987 if ( $(this).find('.heading-field-q').length > 0 ) { 988 heading = $(this).find('.heading-field-q').html(); 989 } 990 else { 991 heading= ''; 992 } 993 dataField = dataField + $(this).attr('id') + ";" + heading + ';' + $(this).find('input').val() + 'RazDelITEL'; 994 arrayTextField = arrayTextField + $(this).attr('id') + ";" + heading + ';' + input.val() + 'RazDelITEL'; 995 } 996 } 997 //checkbox 998 if ( $(this).hasClass('type-checkbox-element') || $(this).hasClass('checkbox-img') ){ 999 let validationFieldValue = 0; 1000 let thisElement = $(this); 1001 $(this).find('input').each(function(){ 1002 if ( $(this).prop("checked") ){ 1003 validationFieldValue++; 1004 if (validationFieldValue == 1) { 1005 dataField = dataField + thisElement.attr('id') + ";" + thisElement.find('.heading-field-q').html() + ";"; 1006 } 1007 dataField = dataField + $(this).next('label').find('.html-text-check-q').html() + ';'; 1008 arrayCheckbox = arrayCheckbox + $(this).next('label').find('.html-text-check-q').html() + ';'; 1009 } 1010 }); 1011 if (validationFieldValue !== 0){ 1012 dataField = dataField +'RazDelITEL'; 1013 arrayCheckbox = arrayCheckbox +'custom-class:' + $(this).find('input').attr('class')+ 'RazDelITEL'; 1014 } 1015 } 1016 //upload 1017 if ($(this).hasClass('type-upload-element')){ 1018 $(this).find('input').each( function(){ 1019 var idnameq = $(this).attr('name'); 1020 form_data.append('file[]', $(this).prop('files')[0]); 1021 }); 1022 } 1023 1024 //textarea 1025 if ($(this).hasClass('type-textarea-element')) { 1026 if ( $(this).find('.heading-field-q').length > 0 ) { 1027 heading = $(this).find('.heading-field-q').html(); 1028 } 1029 else heading = ''; 1030 if ( $(this).find('textarea').val() !==''){ 1031 dataField = dataField + $(this).attr('id') + ";" + heading + ';' + $(this).find('textarea').val() + 'RazDelITEL'; 1032 } 1033 } 1034 //dropdown 1035 if ($(this).hasClass('type-dropdawn-element')) { 1036 if ( $(this).find('.heading-field-q').length > 0 ) { 1037 heading = $(this).find('.heading-field-q').html(); 1038 } 1039 else heading = ''; 1040 if ($(this).find('select').val() !==''){ 1041 dataField = dataField + $(this).attr('id') + ";" + heading + ';' + $(this).find('select').val() + 'RazDelITEL'; 1042 } 1043 } 1044 //range 1045 if ($(this).hasClass('type-range-element')) { 1046 dataField = dataField + $(this).attr('id') + ";" + $(this).find('.heading-field-q').html() + ';' + $(this).find(".polzet").slider( "value" ) + 'RazDelITEL' ; 1047 } 1048 //timepicker 1049 if ($(this).hasClass('type-timepicker-element')) { 1050 if ( $(this).find('.hour-picker-q').html() !='--' || $(this).find('.minut-picker-q').html() !='--' ) { 1051 dataField = dataField + $(this).attr('id') + ";" + $(this).find('.heading-field-q').html() + ';' + $(this).find(".hour-picker-q").html() + ':' + $(this).find(".minut-picker-q").html() + 'RazDelITEL' ; 1052 } 1053 } 1054 //total 1055 if ($(this).hasClass('type-itog-element')) { 1056 dataField = dataField + $(this).attr('id') + ";" + ";" + $(this).find('div').html() + 'RazDelITEL'; 1057 } 1058 }); 1059 1060 //data mail 1061 form_data.append('action', 'mail_send_q'); 1062 form_data.append('nonce_code', params.nonce); 1063 form_data.append('contentQform', dataField ); 1064 form_data.append('urlpage', window.location.href ); 1065 form_data.append('titlepage', qforma.attr('data-title') ); 1066 //addon 1 info product 1067 let stringWooData = ''; 1068 if ( $('.wrap-button-quasar-woo').length > 0 ){ 1069 let object = $('.active-q-b').closest('.wrap-button-quasar-woo'); 1070 //id
1071 stringWooData = stringWooData +'id;'+ object.attr('data-id') +';' + object.attr('data-id-v') +'/'; 1072 //name 1073 if ( qforma.find('.type-name-product').length > 0 ){ 1074 stringWooData = stringWooData +'name;'+ qforma.find('.type-name-product').html() +'/'; 1075 } 1076 //quantity 1077 if ( qforma.find('.number-product-in-q').length > 0 ){ 1078 stringWooData = stringWooData +'quantity;'+ qforma.find('.number-product-in-q input').val() +';default/'; 1079 } 1080 else { 1081 if ( $('.active-q-b').length > 0 ){ 1082 let val = object.attr('data-qua'); 1083 if ( val !== 0 ){ 1084 if ( qforma.find('#'+val).length > 0 ){ 1085 stringWooData = stringWooData +'quantity;'+ qforma.find('#'+val).find('input').val() +';custom/'; 1086 } 1087 } 1088 } 1089 } 1090 //prise 1091 if ( qforma.find('.product-prise-q').length > 0 ){ 1092 stringWooData = stringWooData +'price;'+ object.attr('data-id') +'/'; 1093 } 1094 //empty 1095 if ( qforma.find('.wrap-select-variable-q').length > 0 ){ 1096 let block = qforma.find('.wrap-select-variable-q'); 1097 if ( block.hasClass('error-variable-q') ){ 1098 block.removeClass('error-variable-q').find('.text-requed-woo-q').remove(); 1099 } 1100 if ( object.attr('data-fill')=='not' ){ 1101 block.addClass('error-variable-q').append( '<div class="text-requed-woo-q">'+object.find('.variable-block-q').attr('data-text-r')+'</div>' ); 1102 return; 1103 } 1104 else { 1105 if ( object.attr('data-id-v')=='none' || object.attr('data-id-v')==='' || object.attr('data-full')==='not' ){ 1106 block.addClass('error-variable-q').append( '<div class="text-requed-woo-q" style="top: -25px;">'+object.find('.variable-block-q').attr('data-text-not-v')+'</div>' ); 1107 return; 1108 } 1109 } 1110 1111 } 1112 //data val 1113 stringWooData = stringWooData +'data-val;'+ object.attr('data-val') +'/'; 1114 } 1115 if ( stringWooData !=='' ){form_data.append('product-info', stringWooData ); } 1116 1117 $.ajax({ 1118 beforeSend: function() { 1119 qforma.find('.text-after-send-q').css('display', 'flex'); 1120 //collapse form 1121 if ( qforma.find('.text-after-send-q').attr('data-after-submit') =='yes' ){ 1122 qforma.find('.form-main-element').slideToggle(); 1123 } 1124 else { 1125 qforma.find('.text-after-send-q').css({ 1126 'position' : 'absolute', 1127 'z-index' : '5', 1128 'background-color' : '#fff', 1129 'left' : '20px', 1130 'right' : '20px', 1131 'border' : '1px solid #d5d2d2', 1132 }); 1133 qforma.find('.text-after-send-q').css({ 1134 'opacity' : '1', 1135 }); 1136 1137 setTimeout(function(){ 1138 qforma.find('.text-after-send-q').css({ 1139 'display' : 'none', 1140 }); 1141 }, 2800); 1142 } 1143 1144 //scroll after submit 1145 if ( !qforma.hasClass('form-type-popup') && qforma.find('.text-after-send-q').attr('data-scroll') =='yes' ){ 1146 let heightWindow3 = ( $(window).height() / 100 ) * 40 ; 1147 let poz = qforma.find('.text-after-send-q').offset().top - heightWindow3; 1148 $('html, body').animate({ 1149 scrollTop: poz 1150 }, 300); 1151 } 1152 }, 1153 xhr: function() { 1154 var xhr = new window.XMLHttpRequest(); 1155 xhr.upload.addEventListener("progress", function(evt) { 1156 if (evt.lengthComputable) { 1157 var percentComplete = (evt.loaded / evt.total) * 100; 1158 percentComplete = percentComplete.toFixed(0) + '%'; 1159 qforma.find('.text-after-send-q .percent-send-q').html(percentComplete); 1160 } 1161 }, false); 1162 return xhr; 1163 }, 1164 url : params.ajaxurlq, 1165 type : 'POST', 1166 data : form_data, 1167 cache : false, 1168 processData : false, 1169 contentType : false, 1170 success: function() { 1171 qforma.find('.message-send-q').css('display' , 'block'); 1172 qforma.find('.text-prorgress-send, .swap-tabs-element, .percent-send-q').css('display' , 'none'); 1173 //pay 1174 if ( qforma.find('.type-paypal-element').length > 0 ){ 1175 setTimeout(function(){ 1176 let object = qforma.find('.type-paypal-element'); 1177 let pay_data = new FormData(); 1178 pay_data.append('action', 'pay_pal_q'); 1179 pay_data.append('nonce_code', params.nonce); 1180 pay_data.append('idpay', object.attr('id') ); 1181 pay_data.append('idform', qforma.attr('data-id') ); 1182 pay_data.append('urlpage', window.location.href ); 1183 pay_data.append('titlepage', qforma.attr('data-title') ); 1184 1185 let attr1 = object.attr('data-i-1'); 1186 let attr2 = object.attr('data-i-2'); 1187 if (typeof attr1 !== typeof undefined && attr1 !== false) { 1188 attr1 = qforma.find('#'+attr1).find('.summa-itog').html(); 1189 pay_data.append('attr1', attr1 ); 1190 } 1191 if (typeof attr2 !== typeof undefined && attr2 !== false) { 1192 attr2 = qforma.find('#'+attr2).find('.summa-itog').html(); 1193 pay_data.append('attr2', attr2 ); 1194 } 1195 $.ajax({ 1196 url : params.ajaxurlq, 1197 type : 'POST', 1198 data : pay_data, 1199 cache : false, 1200 processData : false, 1201 contentType : false, 1202 success: function(q) { 1203 let last = q[q.length-1]; 1204 if (last == '0'){ 1205 q = q.substring(0, q.length - 1); 1206 } 1207 window.location.href = q; 1208 } 1209 }); 1210 1211 }, 1200); 1212 1213 } 1214 //redirect 1215 let redirect = qforma.find('.url-r').attr('data-url'); 1216 if ( redirect !== '') { 1217 setTimeout(function(){ 1218 window.location.href = redirect; 1219 }, 1200); 1220 } 1221 }, 1222 error: function(errorThrown) { 1223 } 1224 }); 1225 idThisForm = qforma.attr('data-id'); 1226 arraySubmit = dataField.split('RazDelITEL'); 1227 if ( arrayCheckbox !=='' ){ arrayCheckbox = arrayCheckbox.split('RazDelITEL'); } 1228 if ( arrayTextField !=='' ){ arrayTextField = arrayTextField.split('RazDelITEL'); } 1229 } 1230 else { 1231 arraySubmit = false;
1232 //scroll enable 1233 if ( qforma.find('.text-after-send-q').attr('data-scroll') =='yes' ){ 1234 //error field 1235 let last_error =''; 1236 if ( valueRequed == 1 ){ 1237 last_error = qforma.find('.empty-filed-q:last'); 1238 } 1239 if ( valueRequed == 3 ){ 1240 last_error = qforma.find('.error-validation:last'); 1241 } 1242 if ( valueRequed == 4 ){ 1243 last_error = qforma.find('.error-mail-q:last'); 1244 } 1245 if ( valueRequed == 2 ){ 1246 last_error = qforma.find('.error-captcha-q:last'); 1247 } 1248 1249 if ( last_error !=='' && !qforma.hasClass('form-type-popup') ){ 1250 //scroll 1251 let heightWindow3 = ( $(window).height() / 100) * 40 ; 1252 let poz = last_error.offset().top - heightWindow3; 1253 $('html, body').animate({ 1254 scrollTop: poz 1255 }, 500); 1256 } 1257 } 1258 } 1259 //activ event submit 1260 qforma.find('.submit-quasar-form-event').trigger('click'); 1261 } 1262 //click on the next tab when submit is clicked 1263 if ( qforma.find('.tab-box-q').length > 0 ){ qforma.find('.activ-tab-q').next().trigger('click'); } 1264}); 1265 1266 1267$('.form-main-element').on('click', 'input, textarea, select' , function(){ 1268 var elementClass = $(this).closest('.form-element-q'); 1269 if ( elementClass.hasClass('error-validation') || elementClass.hasClass('empty-filed-q') || elementClass.hasClass('error-mail-q') || elementClass.hasClass('error-captcha-q') ){ 1270 $(this).closest('.form-element-q').removeClass('empty-filed-q').removeClass('error-validation').removeClass('error-captcha-q').removeClass('error-mail-q'); 1271 } 1272}); 1273 1274 1275}); 1276})(jQuery);
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.