var validateForm = function() {
    let hasErrors = false;
    let data = {};

    $('.help-block').remove();

    $('#contact_form').find('.form-control').each(function() {
        let $this = $(this);
        let key = $this.prop('name');
        let value = $this.val();
        let element = $(`input[name="${key}"]`);
		
		data[key] = value;
		switch (key) {
			case 'name':
				if(value.length < 3 || value.length > 25) {
					showValidationFormError(element,`Name must be atleast 3 to 25 characters long!`);
					hasErrors = true;
					return false;
				}
				break;
			case 'email':
				if(!validateEmailAddress(value)) {
					showValidationFormError(element,`Please enter a valid email address!`);
					hasErrors = true;
					return false;
				}
				break;
			default:
				break;
		}
       
    });
    
    if(!hasErrors) {
			
			let btn = $('#form_submit');
			$.ajax({
				url: '/signup/validatedomain',
				type: 'POST',
				data: data,
				beforeSend: function() {
					btn.html('<i class="fa fa-spinner fa-spin"></i>&nbsp;Please Wait');
					$('#form_submit').prop('disabled', true);
				},
				success: function(response) {
					btn.html('Sign Up');
					btn.prop('disabled', false);
					if(!response.status) {
						showValidationFormError($(`input[name="${response.error}"]`),response.message);
						return false;
					}else{
						btn.prop('disabled', true);
						window.password = data.password;
						window.loginnow(data.email);
					}
				}
			});
        
    }
}

var validateFormFinal = function(obj) {
    let hasErrors = false;
    let data = {};
	data['did'] = obj.did;
    $('.help-block').remove();

    $('#contact_form').find('.form-control').each(function() {
        let $this = $(this);
        let key = $this.prop('name');
        let value = $this.val();
        let element = $(`input[name="${key}"]`);

        data[key] = value;
        
     
		switch (key) {
			case 'name':
				if(value.length < 3 || value.length > 25) {
					showValidationFormError(element,`Name must be atleast 3 to 25 characters long!`);
					hasErrors = true;
					return false;
				}
				break;
			case 'email':
				if(!validateEmailAddress(value)) {
					showValidationFormError(element,`Please enter a valid email address!`);
					hasErrors = true;
					return false;
				}
				break;
			default:
				break;
		}
        
    });
    
    if(!hasErrors) {
        register(data);
    }else{
		window.handleLogout();
	}
}
var validateEmailAddress = function(email) {
    let regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

    return regex.test(email);
}
var showValidationFormError = function(element, message) {
    element.parents('.mb-3')
        .append(`<small class="help-block with-errors">${message}</small>`);
}

window.magiccallback = function(data){
//add button loading here....
	window.did = data.did;
	$('#form_submit').prop('disabled', false);
	if(data.status){
		validateFormFinal(data);
	}else{
		window.handleLogout();
	}
}
var register = function(data) {
    let btn = $('#form_submit');
    $.ajax({
        url: '/signup/register',
        type: 'POST',
        data: data,
        beforeSend: function() {
            btn.html('<i class="fa fa-spinner fa-spin"></i>&nbsp;Saving');
			$('#form_submit').prop('disabled', true);
        },
        success: function(response) {
			$('#form_submit').prop('disabled', false);

            btn.html('Sign Up');

            if(!response.status) {
                showValidationFormError($(`input[name="${response.error}"]`),response.message);
                return false;
            }
            
            login(data.email);
        }
    });
}

var login = function(email) {
    let btn = $('#form_submit');

    $.ajax({
        url: '/login/magiclogin',
        type: 'POST',
        data: { email: email, did: window.did },
        beforeSend: function() {
            btn.html('<i class="fa fa-spinner fa-spin"></i>&nbsp;Please wait');
			$('#form_submit').prop('disabled', true);
        },
        success: function(response) {
			$('#form_submit').prop('disabled', false);
            if(response.status) {
                //window.location.href = '/signup/success';
            	window.location.href = '/dashboard';
            }
        }
    });
}
