Shoora
3/31/2019 - 5:43 PM

validateForm.js

validateForm.js

console.log('script.js подключен !!!');

/*
    jQuery Masked Input Plugin
    Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)
    Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
    Version: 1.4.1
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b,c=navigator.userAgent,d=/iphone/i.test(c),e=/chrome/i.test(c),f=/android/i.test(c);a.mask={definitions:{9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},autoclear:!0,dataName:"rawMaskFn",placeholder:"_"},a.fn.extend({caret:function(a,b){var c;if(0!==this.length&&!this.is(":hidden"))return"number"==typeof a?(b="number"==typeof b?b:a,this.each(function(){this.setSelectionRange?this.setSelectionRange(a,b):this.createTextRange&&(c=this.createTextRange(),c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",a),c.select())})):(this[0].setSelectionRange?(a=this[0].selectionStart,b=this[0].selectionEnd):document.selection&&document.selection.createRange&&(c=document.selection.createRange(),a=0-c.duplicate().moveStart("character",-1e5),b=a+c.text.length),{begin:a,end:b})},unmask:function(){return this.trigger("unmask")},mask:function(c,g){var h,i,j,k,l,m,n,o;if(!c&&this.length>0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a<g.placeholder.length?a:0)}function q(a){for(;++a<n&&!j[a];);return a}function r(a){for(;--a>=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.begin<l&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}else{for(A(!0);b.begin<n&&!j[b.begin];)b.begin++;B.caret(b.begin,b.begin)}h()}function v(){A(),B.val()!=E&&B.change()}function w(a){if(!B.prop("readonly")){var b,c,e,f=a.which||a.keyCode;o=B.val(),8===f||46===f||d&&127===f?(b=B.caret(),c=b.begin,e=b.end,e-c===0&&(c=46!==f?r(c):e=q(c-1),e=46===f?q(e):e),y(c,e),s(c,e-1),a.preventDefault()):13===f?v.call(this,a):27===f&&(B.val(E),B.caret(0,A()),a.preventDefault())}}function x(b){if(!B.prop("readonly")){var c,d,e,g=b.which||b.keyCode,i=B.caret();if(!(b.ctrlKey||b.altKey||b.metaKey||32>g)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++<e.length;)if(c=e.charAt(d-1),j[b].test(c)){C[b]=c,f=b;break}if(d>e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a))},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})});
function showAjaxError()
{
    var ajaxErrorMessage="При загрузке данных произошла ошибка! Возможно, отсутствует соединение с Internet, попробуйте, пожалуйста, позже";
    alert(ajaxErrorMessage);
}
$(window).load(function() {
    //Вешаем на контейнер инициализацию формы
    $('.customFormContainer').each(function(){
        customFormInit($(this), $(this));        
    });
    //Вешаем на ссылку инициализацию формы
    $(document).on('click','.customFormLink',function(){
        customFormInit('body', $(this));
        return false;
    });
    
    //Очищаем числовые поля от лишних символов
    $(document).on('keyup blur','.customFormDigitalField',function(){
        this.value = this.value.replace (/[\D]+/, '');
    });
    
    $(document).on('focus','.customFormFieldInputText',function(){
        $(this).removeClass('customErrorField');
        $('.customFormErrors').fadeOut(300);
    });
    
    //Вешаемся на отправку формы 
    $(document).on('submit','.customForm form',function(){
        var curForm=$(this);
        var curSubmitBTN=curForm.find('input[type="submit"]');
        var btnText=curSubmitBTN.val();
        var curFormErrorContainer=curForm.find('.customFormErrors');
        if (curForm.parents('.customFormContainer').length>0)
        {
            var needRefreshForm=true;
        } else
        {
            var needRefreshForm=false;
        }
        curFormErrorContainer.hide();
        
        /*Данные счётчика метрики*/
        var metrikaCounter=curForm.find('input.metrikaCounter').val();
        var metrikaTargetTry=curForm.find('input.metrikaTargetTry').val();
        var metrikaTargetSuccess=curForm.find('input.metrikaTargetSuccess').val();
        if (metrikaCounter && metrikaTargetTry && metrikaTargetSuccess)
        {
            window['yaCounter'+metrikaCounter].reachGoal(metrikaTargetTry);
        }
        /*Данные счётчика метрики --- конец*/
        
        /*Данные счётчика GA*/
        var gaTargetTry=curForm.find('input.gaTargetTry').val();
        var gaTargetSuccess=curForm.find('input.gaTargetSuccess').val();
        if (gaTargetTry && gaTargetSuccess)
        {
            ga('send', 'event', 'button', 'click', gaTargetTry);
        }
        /*Данные счётчика GA --- конец*/
        
        var redirectURL=curForm.find('input.redirectURL').val();
        
        var curName=curForm.find('input[name="name"]').first();
        var curEmail=curForm.find('input[name="email"]').first();
        var curPhone=curForm.find('input[name="phone"]').first();
        var curTextarea=curForm.find('textarea[name="textarea"]').first();
        var curFormCode=curForm.find('input[name="form_code"]').first().val();
        
        var formIsEmpty=false;
        var curNameVal=$.trim(curName.val());
        var curEmailVal=$.trim(curEmail.val());
        var curPhoneVal=$.trim(curPhone.val());
        var curTextareaVal=$.trim(curTextarea.val());
        //var curFormName=curForm.find('.customFormName').html();
        //var curFormText=curForm.find('.customFormText').html();
        
        var initParams=curForm.data('init-params');
        
        //var curFormTitle=curForm.find('input[name="form_title"]').val(curFormName);
        
        
        //проверяем имя
        if (curName.length!=0)
        {
            if (curName.hasClass('customFormFieldRequired'))
            {
                if (curNameVal.length<3)
                {
                    curName.addClass('customErrorField');
                    curForm.find('.customFormErrorsNameEmpty').show();
                } else
                {
                    curName.removeClass('customErrorField');
                    curForm.find('.customFormErrorsNameEmpty').hide();
                }
            }   
        }
        
        //проверяем e-mail
        if (curEmail.length!=0)
        {
            if (curEmail.hasClass('customFormFieldRequired'))
            {
                curForm.find('.customFormErrorsMailError').hide();
                curForm.find('.customFormErrorsMailEmpty').hide();
                curForm.find('.customFormErrorsMailDomainError').hide();
                if (curEmailVal.length>0)
                {
                    var email_pattern=/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,14}$/i;
                    if (email_pattern.test(curEmailVal))
                    {
                        curForm.find('.customFormErrorsMailError').hide();
                        $.ajax
                        ({
                            url: "/ajax/checkDomain.php",
                            data: {mail:curEmailVal},
                            type: "POST", 
                            dataType: 'json', 
                            async: false, 
                            cache: false,   
                            success: function(result)
                            {
                                if (result.success=="1")
                                {
                                    curEmail.removeClass('customErrorField');
                                    curForm.find('.customFormErrorsMailDomainError').hide();
                                    
                                    
                                } else
                                {
                                    curEmail.addClass('customErrorField');
                                    curForm.find('.customFormErrorsMailDomainError').show();
                                    
                                }
                            },
                        	error:  function(xhr, ajaxOptions, thrownError){
                        	    var ajaxStatus="Status: "+xhr.status+" Error: "+thrownError+"\n"+ajaxOptions; 
                        	}
                        });
                    } else
                    {
                        curEmail.addClass('customErrorField');
                        curForm.find('.customFormErrorsMailError').show();
                        
                    }
                } else
                {
                    curEmail.addClass('customErrorField');
                    curForm.find('.customFormErrorsMailEmpty').show();
                    
                }
            }   
        }
        
        //проверяем телефон
        if (curPhone.hasClass('customFormFieldRequired'))
        {
            curForm.find('.customFormErrorsPhoneEmpty').hide();
            if (curPhoneVal.length!=17)
            {    
                curPhone.addClass('customErrorField');
                curForm.find('.customFormErrorsPhoneEmpty').show();
            } else
            {
                curPhone.removeClass('customErrorField');
                curForm.find('.customFormErrorsPhoneEmpty').hide();
            }
        }
        
        //проверяем текстовое поле
        if (curTextarea.hasClass('customFormFieldRequired'))
        {
           if (curTextareaVal.length>0)
           {
               curTextarea.removeClass('customErrorField');
               curForm.find('.customFormErrorsTextareaError').hide();
           } else
           {
               curTextarea.addClass('customErrorField');
               curForm.find('.customFormErrorsTextareaError').show();
           }
        }
        
        //проверяем оценку
        if (curForm.find('input[name="grade"]').length>0)
        {
            var curGrade=curForm.find('input[name="grade"]');
            var curGradeVal=parseInt(curGrade.val());
            if (curGrade.hasClass('customFormFieldRequired'))
            {
               if (curGradeVal>0 && curGradeVal<6)
               {
                   curGrade.removeClass('customErrorField');
                   curForm.find('.customFormErrorsGradeError').hide();
               } else
               {
                   curGrade.addClass('customErrorField');
                   curForm.find('.customFormErrorsGradeError').show();
               }
            }  
        }
        //проверяем chekbox


        if (curForm.find('input[name="cheker"]').length>0)
        {
            var curChekbox=curForm.find('input[name="cheker"]');
			var chekIn = $("input:checkbox:checked").length;
            if (curChekbox.hasClass('customFormFieldRequired'))
            {
               if (chekIn>0)
               {
                   curChekbox.removeClass('customErrorField');
                   curForm.find('.customFormErrorsChekbox').hide();
               } else
               {
                   curChekbox.addClass('customErrorField');
                   curForm.find('.customFormErrorsChekbox').show();
               }
            }  
        }
        
		var check = curForm.Chilren('')    ;
		
		
        //Если ошибок заполнения полей нет, пытаемся отправить форму
        if (curForm.find('.customErrorField').length==0)
        {
            startWaitForm(curSubmitBTN);
            var form = curForm[0]; // You need to use standart javascript object here
            var formData = new FormData(form);
            if (curForm.find('.file').length>0 && curForm.find('.file')[0].files.length>0)
            {
                formData.append('file', curForm.find('.file')[0].files[0]);
            }
            $.ajax
            ({
                url: "/ajax/sendForm.php",
                data: formData,
                contentType: false,
                processData: false,
                type: "POST",
                dataType: 'json',  
                cache: false,   
                success: function(res)
                {
                    if (res.success=="1")
                    {
                        
                        if (curFormCode=='index_calc')
                        {
                            $('.calc_tooths > div').removeClass('active');
                        }
                        
                        if (metrikaCounter && metrikaTargetSuccess)
                        {
                            window['yaCounter'+metrikaCounter].reachGoal(metrikaTargetSuccess);
                        }
                        if (gaTargetTry && gaTargetSuccess)
                        {
                            ga('send', 'event', 'button', 'click', gaTargetSuccess);
                        }
                        if (redirectURL)
                        {
                            location.href=redirectURL;
                        } else
                        {
                            if (curFormCode=='new_otzyv')
                            {
                                var curSuccessRequestTitle=successRequestTitleOtzyv;
                                var curSuccessRequestBody=successRequestBodyOtzyv;
                            } else
                            {
                                var curSuccessRequestTitle=successRequestTitle;
                                var curSuccessRequestBody=successRequestBody;
                            }
                            $.magnificPopup.open({
                                items: {
                                    src: $('<div class="white-popup white-popup-block zoom-anim-dialog"><div class="popup_header">'+curSuccessRequestTitle+'</div><div class="success_send">'+curSuccessRequestBody+'</div></div>'),
                                    type: 'inline'
                                },
                        		preloader: false,
                        		modal: false,
                                removalDelay: 300,
                                closeOnBgClick: false,
                                mainClass: 'my-mfp-slide-bottom',
                                callbacks: {
                                    open: function() {
                                        if (IS_GADGET)
                                        {
                                            document.location.hash='popup';
                                            observerCloseMagnificPopup();
                                            $.magnificPopup.instance.close = function () {
                                                removeHashForPopups();    
                                                $.magnificPopup.proto.close.call(this);
                                            };
                                        }
                                    }
                                }                            
                            });
                            if (needRefreshForm)
                            {
                        	    customFormInit(curForm.parents('.customFormContainer'), curForm.parents('.customFormContainer'));
                            }      
                            stopWaitForm(curSubmitBTN,btnText);              
                        }
                    } else
                    {
                        stopWaitForm(curSubmitBTN,btnText);
                        alert(res.error);
                    }
                },
            	error:  function(xhr, ajaxOptions, thrownError){
            	    var ajaxStatus="Status: "+xhr.status+" Error: "+thrownError+"\n"+ajaxOptions;
            	    stopWaitForm(curSubmitBTN,btnText);
                    showAjaxError();
            	}              
            });                
        } else
        {
            stopWaitForm(curSubmitBTN,btnText,curFormErrorContainer,curForm,true);  
        }
        return false;
    });    
});

//Функция, которая стартует перед отправкой формы и показывает процесс ожидания работы формы
function startWaitForm(formSubmitBtnObj)
{
    formSubmitBtnObj.val('Подождите...');
    formSubmitBtnObj.attr('disabled','disabled');    
}
//Функция, которая стартует после отправки формы, завершает ожидание
function stopWaitForm(formSubmitBtnObj,btnText,curFormErrorContainer,curForm,needShowErrors)
{
    window.setTimeout(function () {
        formSubmitBtnObj.removeAttr('disabled');
        formSubmitBtnObj.val(btnText);
        
        if (needShowErrors)
        {
            curFormErrorContainer.fadeIn(300);
            var curFormErrorContainerHeight=curFormErrorContainer.outerHeight();
            var curFormErrorContainerBottom=curFormErrorContainerHeight-curForm.find('.customFormFields').position().top;
            if (curFormErrorContainerBottom>0)
            {
                curFormErrorContainer.css('top','-'+curFormErrorContainerBottom+'px');    
            } else
            {
                curFormErrorContainer.css('top',Math.abs(curFormErrorContainerBottom)+'px');
            }
        }
    }, 10);        
}
/*Инициализация формы*/
function customFormInit(parentContainer, objInitiator)
{
    var title=objInitiator.data('title');
    var text=objInitiator.data('text');
    var initParams=objInitiator.data('params');
    
    var successText=objInitiator.data('success-text');
    var metrikaCounter=objInitiator.data('metrika-counter');
    var metrikaTargetTry=objInitiator.data('metrika-target-try');
    var metrikaTargetSuccess=objInitiator.data('metrika-target-success');
    
    var gaTargetTry=objInitiator.data('ga-target-try');
    var gaTargetSuccess=objInitiator.data('ga-target-success');
    
    var redirectURL=objInitiator.data('redirect-url');
    var bntText=objInitiator.data('btn-text');
    var formCode=objInitiator.data('form-code');
    var serviceFormName=objInitiator.data('service-form-name');
    var notPostToFO=objInitiator.data('not-post-to-fo');
    
    var fieldTitleName=objInitiator.data('field-title-name');
    var fieldTitleEmail=objInitiator.data('field-title-email');
    var fieldTitlePhone=objInitiator.data('field-title-phone');
    var customTextareaTitle=objInitiator.data('custom-textarea-title');
    var fieldPlaceholderName=objInitiator.data('field-placeholder-name');
    var fieldPlaceholderEmail=objInitiator.data('field-placeholder-email');
    var fieldPlaceholderPhone=objInitiator.data('field-placeholder-phone');
    var customTextareaPlaceholder=objInitiator.data('custom-textarea-placeholder');
    
    var showName=initParams[0];
    var showMail=initParams[1];
    var showPhone=initParams[2];
    var showTextarea=initParams[3];
    var needName=initParams[5];
    var needMail=initParams[6];
    var needPhone=initParams[7];
    var needTextarea=initParams[8];
    var classRequired="";
    var star="";
    var formHTML="";
    
    if (customTextareaPlaceholder==undefined)
    {
        customTextareaPlaceholder="";
    }
    
    if (parentContainer=="body")
    {
        formHTML='<div id="customFormPopupContainer">';
    }
    
    formHTML+='<div class="customForm"><div class="customFormContent">';
    
    if (parentContainer=="body")
    {
        formHTML+='<div id="customFormCloseBtn"></div>';
    }
    
    formHTML+='<div class="tester"></div><form method="post" data-init-params="'+initParams+'" class="form_'+formCode+'"><div class="successText"><span>'+successText+'</span></div>';
    if (title!=undefined)
    {
        formHTML+='<div class="popup_header">'+title+'</div>';
        formHTML+='<input type="hidden" name="form_title" value="'+title+'" />';
    }
    if (text!=undefined)
    {
        formHTML+='<div class="customFormText">'+text+'</div>';
        formHTML+='<input type="hidden" name="form_text" value="'+text+'" />';
    }    
        
    formHTML+='<div class="customFormErrors"><div class="customFormErrorsNameEmpty">Введите ваше имя</div>'+
              '<div class="customFormErrorsMailEmpty">Введите E-mail</div><div class="customFormErrorsMailError">Неправильный формат e-mail</div>'+
              '<div class="customFormErrorsMailDomainError">Неправильно указан e-mail адрес</div>'+
              '<div class="customFormErrorsGradeError">Оцените работу клиники</div>'+
              '<div class="customFormErrorsPhoneEmpty">Введите номер телефона</div><div class="customFormErrorsPhoneError">Неправильный формат номера телефона</div>\
              <div class="customFormErrorsChekbox">Нужно согласие на обработку данных</div>';
    if (needTextarea=="Y")
    {   
        formHTML+='<div class="customFormErrorsTextareaError">Вы не заполнили поле "'+customTextareaPlaceholder+'"</div>';
    }
    formHTML+='</div><div class="customFormFields">';
    if (showName=="Y")
    {
        classRequired="";
        star="";
        if (needName=="Y")
        {
            classRequired=" customFormFieldRequired";     
            star=" *";       
        }
        //Если существует параметр кастомного тайтла поля "Имя"
        if (fieldTitleName!=undefined)
        {
            //Если параметр кастомного тайтла поля "Имя" НЕ пустой
            if (fieldTitleName!="")
            {
                formHTML+='<div class="customFormFieldTitle">'+fieldTitleName+star+'</div>';        
            } else
            {
                //проверяем, указан ли кастомный placeholder
                //Если параметр кастомного тайтла поля "Имя" ПУСТОЙ и существует кастомный placeholder
                if (fieldPlaceholderName!=undefined)
                {
                    //Если кастомный placeholder ПУСТОЙ
                    //то выводим стандартный тайтл!
                    if (fieldPlaceholderName=="")
                    {
                        formHTML+='<div class="customFormFieldTitle">Имя'+star+'</div>';    
                    }
                }
            }
        } else
        {
            //Если НЕ существует параметр кастомного тайтла поля "Имя"
            formHTML+='<div class="customFormFieldTitle">Имя'+star+'</div>';
        }
        
        //Если существует кастомный placeholder поля "Имя"
        if (fieldPlaceholderName!=undefined)
        {
            //Если он НЕ пустой
            if (fieldPlaceholderName!="")
            {
                //проверяем, существует ли кастомный тайтл
                if (fieldTitleName!=undefined)
                {
                    //если кастомный тайтл пустой, выводим кастомный placeholder с признаком обязательности заполнения
                    if (fieldTitleName=="")
                    {
                        formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderName+star+'" /></div>';
                    } else
                    {
                        //если кастомный тайтл НЕ пустой
                        //то просто подменяем placeholder
                        formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderName+'" /></div>';
                    }
                } else
                {
                    //если кастомный тайтл НЕ существует
                    //то просто подменяем placeholder
                    formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderName+'" /></div>';
                }
            } else
            {
                formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="" /></div>';
            }
        } else
        {
            if (fieldTitleName!=undefined)
            {
                //если кастомный тайтл пустой, выводим стандартный placeholder с признаком обязательности заполнения
                if (fieldTitleName=="")
                {
                    formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Иван Иванович'+star+'" /></div>';
                } else
                {
                    //если кастомный тайтл НЕ пустой
                    //то просто выводим стандартный placeholder
                    formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Иван Иванович" /></div>';
                }
            } else
            {
                formHTML+='<div class="customFormFieldBody"><input type="text" name="name" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Иван Иванович" /></div>';
            }
        }        
    }
    if (showPhone=="Y")
    {
        classRequired="";
        star="";
        if (needPhone=="Y")
        {
            classRequired=" customFormFieldRequired";   
            star=" *";         
        }        
        //Если существует параметр кастомного тайтла поля "Телефон"
        if (fieldTitlePhone!=undefined)
        {
            //Если параметр кастомного тайтла поля "Телефон" НЕ пустой
            if (fieldTitlePhone!="")
            {
                formHTML+='<div class="customFormFieldTitle">'+fieldTitlePhone+star+'</div>';        
            } else
            {
                //проверяем, указан ли кастомный placeholder
                //Если параметр кастомного тайтла поля "Телефон" ПУСТОЙ и существует кастомный placeholder
                if (fieldPlaceholderPhone!=undefined)
                {
                    //Если кастомный placeholder ПУСТОЙ
                    //то выводим стандартный тайтл!
                    if (fieldPlaceholderPhone=="")
                    {
                        formHTML+='<div class="customFormFieldTitle">Ваш номер телефона'+star+'</div>';    
                    }
                }
            }
        } else
        {
            //Если НЕ существует параметр кастомного тайтла поля "Телефон"
            formHTML+='<div class="customFormFieldTitle">Ваш номер телефона'+star+'</div>';
        }
        
        //Если существует кастомный placeholder поля "Телефон"
        if (fieldPlaceholderPhone!=undefined)
        {
            //Если он НЕ пустой
            if (fieldPlaceholderPhone!="")
            {
                //проверяем, существует ли кастомный тайтл
                if (fieldTitlePhone!=undefined)
                {
                    //если кастомный тайтл пустой, выводим кастомный placeholder с признаком обязательности заполнения
                    if (fieldTitlePhone=="")
                    {
                        formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderPhone+star+'" /></div>';
                    } else
                    {
                        //если кастомный тайтл НЕ пустой
                        //то просто подменяем placeholder
                        formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderPhone+'" /></div>';
                    }
                } else
                {
                    //если кастомный тайтл НЕ существует
                    //то просто подменяем placeholder
                    formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderPhone+'" /></div>';
                }
            } else
            {
                formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="" /></div>';
            }
        } else
        {
            if (fieldTitlePhone!=undefined)
            {
                //если кастомный тайтл пустой, выводим стандартный placeholder с признаком обязательности заполнения
                if (fieldTitlePhone=="")
                {
                    formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Ваш номер телефона'+star+'" /></div>';
                } else
                {
                    //если кастомный тайтл НЕ пустой
                    //то просто выводим стандартный placeholder
                    formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Ваш номер телефона" /></div>';
                }
            } else
            {
                formHTML+='<div class="customFormFieldBody"><input type="tel" name="phone" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="Ваш номер телефона" /></div>';
            }
        }        
    }
    if (showMail=="Y")
    {
        classRequired="";
        star="";
        if (needMail=="Y")
        {
            classRequired=" customFormFieldRequired";   
            star=" *";         
        }        
        //Если существует параметр кастомного тайтла поля "E-mail"
        if (fieldTitleEmail!=undefined)
        {
            //Если параметр кастомного тайтла поля "E-mail" НЕ пустой
            if (fieldTitleEmail!="")
            {
                formHTML+='<div class="customFormFieldTitle">'+fieldTitleEmail+star+'</div>';        
            } else
            {
                //проверяем, указан ли кастомный placeholder
                //Если параметр кастомного тайтла поля "E-mail" ПУСТОЙ и существует кастомный placeholder
                if (fieldPlaceholderEmail!=undefined)
                {
                    //Если кастомный placeholder ПУСТОЙ
                    //то выводим стандартный тайтл!
                    if (fieldPlaceholderEmail=="")
                    {
                        formHTML+='<div class="customFormFieldTitle">Введите Ваш E-MAIL'+star+'</div>';    
                    }
                }
            }
        } else
        {
            //Если НЕ существует параметр кастомного тайтла поля "E-mail"
            formHTML+='<div class="customFormFieldTitle">Введите Ваш E-MAIL'+star+'</div>';
        }
        
        //Если существует кастомный placeholder поля "E-mail"
        if (fieldPlaceholderEmail!=undefined)
        {
            //Если он НЕ пустой
            if (fieldPlaceholderEmail!="")
            {
                //проверяем, существует ли кастомный тайтл
                if (fieldTitleEmail!=undefined)
                {
                    //если кастомный тайтл пустой, выводим кастомный placeholder с признаком обязательности заполнения
                    if (fieldTitleEmail=="")
                    {
                        formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderEmail+star+'" /></div>';
                    } else
                    {
                        //если кастомный тайтл НЕ пустой
                        //то просто подменяем placeholder
                        formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderEmail+'" /></div>';
                    }
                } else
                {
                    //если кастомный тайтл НЕ существует
                    //то просто подменяем placeholder
                    formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="'+fieldPlaceholderEmail+'" /></div>';
                }
            } else
            {
                formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="" /></div>';
            }
        } else
        {
            if (fieldTitleEmail!=undefined)
            {
                //если кастомный тайтл пустой, выводим стандартный placeholder с признаком обязательности заполнения
                if (fieldTitleEmail=="")
                {
                    formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="ivan.ivanovich@mail.ru'+star+'" /></div>';
                } else
                {
                    //если кастомный тайтл НЕ пустой
                    //то просто выводим стандартный placeholder
                    formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="ivan.ivanovich@mail.ru" /></div>';
                }
            } else
            {
                formHTML+='<div class="customFormFieldBody"><input type="email" name="email" class="form-control customFormFieldInputText'+classRequired+'" maxlength="50" placeholder="ivan.ivanovich@mail.ru" /></div>';
            }
        }        
    }
    
    if (showTextarea=="Y")
    {
        classRequired="";
        star="";
        if (needTextarea=="Y")
        {
            classRequired=" customFormFieldRequired"; 
            star=" *";           
        }  
        if (customTextareaTitle!="")
        {
            formHTML+='<div class="customFormFieldTitle">'+customTextareaTitle+star+'</div>';    
        }
        if (customTextareaPlaceholder!="")
        {
            customTextareaTitle=customTextareaPlaceholder;    
        }
        formHTML+='<div class="customFormFieldBody"><textarea name="textarea" class="form-control textareaField customFormFieldInputText'+classRequired+'" maxlength="1000" placeholder="'+customTextareaPlaceholder+star+'"></textarea><input type="hidden" name="textarea_title" value="'+customTextareaTitle+'" /></div>';
    }
    formHTML+='</div><input type="hidden" name="site" value="'+location.href+'" /><input type="hidden" name="referrer" value="'+document.referrer+'" /><input type="hidden" name="form_code" value="'+formCode+'" />';
    if (metrikaCounter && metrikaTargetTry && metrikaTargetSuccess)
    {
        formHTML+='<input type="hidden" class="metrikaCounter" value="'+metrikaCounter+'" /><input type="hidden" class="metrikaTargetTry" value="'+metrikaTargetTry+'" /><input type="hidden" class="metrikaTargetSuccess" value="'+metrikaTargetSuccess+'" />';
    }
    if (gaTargetTry && gaTargetSuccess)
    {
        formHTML+='<input type="hidden" class="gaTargetTry" value="'+gaTargetTry+'" /><input type="hidden" class="gaTargetSuccess" value="'+gaTargetSuccess+'" />';
    }
    if (notPostToFO!=undefined)
    {
        formHTML+='<input type="hidden" name="notPostToFO" value="'+notPostToFO+'" />';
    }
    if (redirectURL)
    {
        formHTML+='<input type="hidden" class="redirectURL" value="'+redirectURL+'" />';
    } 
    if (serviceFormName)
    {
        formHTML+='<input type="hidden" name="serviceFormName" value="'+serviceFormName+'" />';
    }
    formHTML+='<textarea name="hiddenAnyText" class="hiddenAnyText"></textarea>';
    
    if (parentContainer=="body" && formCode!="new_otzyv")
    {
		formHTML+='\
				<div class="cheker">\
					<input type="checkbox" name="cheker" /><span>  Я согласен на обработку моих персональных данных </span>\
				</div>';
	
        formHTML+='<div class="third_faces">Ваши персональные данные не будут переданы третьим лицам. Мы заботимся о Вас и Ваших данных!</div>';
    }
    if (bntText)
    {
        formHTML+='<div class="form-btn-block"><input class="customFormSubmitBtn btn" type="submit" value="'+bntText+'" /></form></div></div></div>';    
    } else
    {
        formHTML+='<div class="form-btn-block"><input class="customFormSubmitBtn btn" type="submit" value=" Отправить " /></form></div></div></div>';
    }
    if (parentContainer=="body")
    {
        formHTML+='</div>';
        $.magnificPopup.open({
            tClose: 'Закрыть (Esc)',
            tLoading: 'Загрузка...',
            items: {
                src: '<div class="white-popup white-popup-block zoom-anim-dialog">'+formHTML+'</div>',
            },
            type: 'inline',
            preloader: true,
	        modal: false,
            removalDelay: 300,
            closeOnBgClick:false,
            mainClass: 'my-mfp-zoom-in',
            midClick: true,
            callbacks: {
                open: function() {
                    $("#customFormPopupContainer input[name='phone']").mask("+9 (999) 999-9999");
                    if (IS_GADGET)
                    {
                        document.location.hash='popup';
                        observerCloseMagnificPopup();
                        $.magnificPopup.instance.close = function () {
                            removeHashForPopups();
                            $.magnificPopup.proto.close.call(this);
                        };
                    } 
                    if (typeof customFormInitCallback == 'function') { customFormInitCallback($("#customFormPopupContainer"),formCode); }
                }
            }
        });
    } else
    {
        parentContainer.html(formHTML);
        parentContainer.find("input[name='phone']").mask("+9 (999) 999-9999");
        if (typeof customFormInitCallback == 'function') { customFormInitCallback(parentContainer,formCode); }
    }        
}
/*Инициализация формы --- конец*/

/*
Использовать данную функцию для дополнительных действий с формами после их инициализации,
code - это код формы (например, data-form-code="55") 
function customFormInitCallback(obj,code) {
    switch (code) {
        case 55:
            obj.find('.customFormFields').append('<div class="customFormFieldBody"><input type="text" id="form_mk_time" class="form-control customFormFieldInputText" placeholder="Удобное время звонка"></div>');
            break;
    }
}
*/