(function($) {
if($('.wpcf7-form').length && $('.contact-pop-mask').length<1){
$('body').append('<div class="contact-pop-mask"></div>');
}
$(function() {
try {
if (typeof _wpcf7 == 'undefined' || _wpcf7 === null)
_wpcf7 = {};
_wpcf7 = $.extend({ cached: 0 }, _wpcf7);
_wpcf7.supportHtml5Placeholder
= 'placeholder' in document.createElement('input');
$('div.wpcf7 > form').ajaxForm({
beforeSubmit: function(formData, jqForm, options) {
jqForm.wpcf7ClearResponseOutput();
jqForm.find('.ajax-loader').fadeIn(200);
if(!$('body').hasClass('contact-validation-active')){
$('body').addClass('contact-validation-active');
}
$('.contact-pop-mask').fadeIn(200);
return true;
},
beforeSerialize: function(jqForm, options) {
jqForm.find('[placeholder].placeheld').each(function(i, n) {
$(n).val('');
});
return true;
},
data: { '_wpcf7_is_ajax_call': 1 },
dataType: 'json',
success: function(data) {
if (! $.isPlainObject(data) || $.isEmptyObject(data))
return;
var ro = $(data.into).find('div.wpcf7-response-output');
$(data.into).wpcf7ClearResponseOutput();
$(data.into).find('.wpcf7-form-control').removeClass('wpcf7-not-valid');
$(data.into).find('form.wpcf7-form').removeClass('invalid spam sent failed');
if (data.captcha)
$(data.into).wpcf7RefillCaptcha(data.captcha);
if (data.quiz)
$(data.into).wpcf7RefillQuiz(data.quiz);
if (data.invalids) {
$.each(data.invalids, function(i, n) {
$(data.into).find(n.into).wpcf7NotValidTip(n.message);
$(data.into).find(n.into).find('.wpcf7-form-control').addClass('wpcf7-not-valid');
});
ro.addClass('wpcf7-validation-errors');
$(data.into).find('form.wpcf7-form').addClass('invalid');
$(data.into).trigger('invalid.wpcf7');
if(!$('body').hasClass('contact-validation-active')){
$('body').addClass('contact-validation-active');
}
// hide
function validationError(){
$('.wpcf7-validation-errors').fadeOut(350);
$('.contact-pop-mask').fadeOut(200);
$('body').removeClass('contact-validation-active');
}
$('.verify-pop-close').on('click',function(){
validationError()
})
var t=setTimeout(validationError,3000);
$('.wpcf7-response-output .verify-pop-close').on('click',function(){
clearTimeout(t);
})
if($('div.wpcf7-response-output').length && $('div.wpcf7-response-output .verify-pop-close').length<1){
$('div.wpcf7-response-output').append('<span class="verify-pop-close"></span>');
}
} else if (1 == data.spam) {
ro.addClass('wpcf7-spam-blocked');
$(data.into).find('form.wpcf7-form').addClass('spam');
$(data.into).trigger('spam.wpcf7');
} else if (1 == data.mailSent) {
ro.addClass('wpcf7-mail-sent-ok');
$(data.into).find('form.wpcf7-form').addClass('sent');
if (data.onSentOk)
$.each(data.onSentOk, function(i, n) { eval(n) });
$(data.into).trigger('mailsent.wpcf7');
if(!$('body').hasClass('contact-validation-active')){
$('body').addClass('contact-validation-active');
}
// hide
function sentOk(){
$('.wpcf7-mail-sent-ok').fadeOut(350);
$('.contact-pop-mask').fadeOut(200);
$('body').removeClass('contact-validation-active');
}
$('.verify-pop-close').on('click',function(){
sentOk();
})
var t=setTimeout(sentOk,3000);
$('.wpcf7-response-output .verify-pop-close').on('click',function(){
clearTimeout(t);
})
if($('div.wpcf7-response-output').length && $('div.wpcf7-response-output .verify-pop-close').length<1){
$('div.wpcf7-response-output').append('<span class="verify-pop-close"></span>');
}
} else {
ro.addClass('wpcf7-mail-sent-ng');
$(data.into).find('form.wpcf7-form').addClass('failed');
$(data.into).trigger('mailfailed.wpcf7');
}
if (data.onSubmit)
$.each(data.onSubmit, function(i, n) { eval(n) });
$(data.into).trigger('submit.wpcf7');
if (1 == data.mailSent)
$(data.into).find('form').resetForm().clearForm();
$(data.into).find('[placeholder].placeheld').each(function(i, n) {
$(n).val($(n).attr('placeholder'));
});
$(data.into).wpcf7FillResponseOutput(data.message);
}
});
$('div.wpcf7 > form').each(function(i, n) {
if (_wpcf7.cached)
$(n).wpcf7OnloadRefill();
$(n).wpcf7ToggleSubmit();
$(n).find('.wpcf7-submit').wpcf7AjaxLoader();
$(n).find('.wpcf7-acceptance').click(function() {
$(n).wpcf7ToggleSubmit();
});
$(n).find('.wpcf7-exclusive-checkbox').each(function(i, n) {
$(n).find('input:checkbox').click(function() {
$(n).find('input:checkbox').not(this).removeAttr('checked');
});
});
$(n).find('[placeholder]').each(function(i, n) {
var input = $(n);
if (_wpcf7.supportHtml5Placeholder)
return;
input.val(input.attr('placeholder'));
input.addClass('placeheld');
input.focus(function() {
if ($(this).hasClass('placeheld'))
$(this).val('').removeClass('placeheld');
});
input.blur(function() {
if ('' == $(this).val()) {
$(this).val($(this).attr('placeholder'));
$(this).addClass('placeheld');
}
});
});
});
} catch (e) {
}
});
$.fn.wpcf7AjaxLoader = function() {
return this.each(function() {
var loader=$('<div class="contact-verify-pop ajax-loader"><span class="msg-ico-loader"></span><div class="verify-pop-txt">表单提交中...</div></div>');
$(this).parents('form').after(loader);
});
};
$.fn.wpcf7ToggleSubmit = function() {
return this.each(function() {
var form = $(this);
if (this.tagName.toLowerCase() != 'form')
form = $(this).find('form').first();
if (form.hasClass('wpcf7-acceptance-as-validation'))
return;
var submit = form.find('input:submit');
if (! submit.length) return;
var acceptances = form.find('input:checkbox.wpcf7-acceptance');
if (! acceptances.length) return;
submit.removeAttr('disabled');
acceptances.each(function(i, n) {
n = $(n);
if (n.hasClass('wpcf7-invert') && n.is(':checked')
|| ! n.hasClass('wpcf7-invert') && ! n.is(':checked'))
submit.attr('disabled', 'disabled');
});
});
};
$.fn.wpcf7NotValidTip = function(message) {
return this.each(function() {
var into = $(this);
into.append('<span class="wpcf7-not-valid-tip">' + message + '</span>');
$('span.wpcf7-not-valid-tip').mouseover(function() {
$(this).fadeOut('fast');
});
into.find(':input').mouseover(function() {
into.find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
});
into.find(':input').focus(function() {
into.find('.wpcf7-not-valid-tip').not(':hidden').fadeOut('fast');
});
});
};
$.fn.wpcf7OnloadRefill = function() {
return this.each(function() {
var url = $(this).attr('action');
if (0 < url.indexOf('#'))
url = url.substr(0, url.indexOf('#'));
var id = $(this).find('input[name="_wpcf7"]').val();
var unitTag = $(this).find('input[name="_wpcf7_unit_tag"]').val();
$.getJSON(url,
{ _wpcf7_is_ajax_call: 1, _wpcf7: id },
function(data) {
if (data && data.captcha)
$('#' + unitTag).wpcf7RefillCaptcha(data.captcha);
if (data && data.quiz)
$('#' + unitTag).wpcf7RefillQuiz(data.quiz);
}
);
});
};
$.fn.wpcf7RefillCaptcha = function(captcha) {
return this.each(function() {
var form = $(this);
$.each(captcha, function(i, n) {
form.find(':input[name="' + i + '"]').clearFields();
form.find('img.wpcf7-captcha-' + i).attr('src', n);
var match = /([0-9]+)\.(png|gif|jpeg)$/.exec(n);
form.find('input:hidden[name="_wpcf7_captcha_challenge_' + i + '"]').attr('value', match[1]);
});
});
};
$.fn.wpcf7RefillQuiz = function(quiz) {
return this.each(function() {
var form = $(this);
$.each(quiz, function(i, n) {
form.find(':input[name="' + i + '"]').clearFields();
form.find(':input[name="' + i + '"]').siblings('span.wpcf7-quiz-label').text(n[0]);
form.find('input:hidden[name="_wpcf7_quiz_answer_' + i + '"]').attr('value', n[1]);
});
});
};
$.fn.wpcf7ClearResponseOutput = function() {
return this.each(function() {
$(this).find('div.wpcf7-response-output').hide().empty().append('<span class="verify-pop-close"></span>').removeClass('wpcf7-mail-sent-ok wpcf7-mail-sent-ng wpcf7-validation-errors wpcf7-spam-blocked');
$(this).find('span.wpcf7-not-valid-tip').remove();
$('body').removeClass('contact-validation-active');
// $(this).find('.ajax-loader').css({ visibility: 'hidden' });
// $('body').removeClass('ajax-loader-active');
// jqForm.find('.ajax-loader').fadeOut(200);
// $('.contact-pop-mask').fadeOut(200);
});
};
$.fn.wpcf7FillResponseOutput = function(message) {
return this.each(function() {
$(this).find('div.wpcf7-response-output').append(message).slideDown('fast');
});
};
})(jQuery);