/**
* FMM Custom Fields
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* @author FME Modules
* @copyright 2019 fmemodules.com All right reserved
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* @category FMM Modules
* @package Customfields
*/
var steps = [];
var slist = [];
var links = [];
function orderStep(step) {
steps.push(step);
}
function addCarrier(fieldsHtml) {
var chDiv = $('
');
chDiv.append(fieldsHtml);
if ($("#extra_carrier").find("#shipping_form").length) {
$("#shipping_form")
.parent()
.remove();
$("#extra_carrier")
.append(chDiv)
.show();
}
}
function addAddress(fieldsHtml) {
var chDiv = $('');
chDiv.append(fieldsHtml);
$(".add-address").last().prepend(chDiv);
$("div.js-address-form form").after(chDiv);
$("div.js-address-form #customfields div.fmm_cf_shipping_block").css(
"width",
"100%"
);
$("div.js-address-form #customfields").css("padding-top", "10px");
$("#carrier_area").before(chDiv);
}
function setDatePicker() {
$(".fields_datapicker ").datepicker({
dateFormat: "yy-mm-dd",
prevText: "",
nextText: ""
});
}
function sendForm(step) {
var redirect = true;
var formData = new FormData($("#" + step + "_form")[0]);
var ajaxData = {
url: $("#" + step + "_form").attr("action"),
data: formData,
method: "post",
dataType: "json",
contentType: false,
processData: false,
success: function(response) {
var content = $("#customfieldsblock_" + step);
content.find(".error").remove();
if (!response.result) {
redirect = false;
if (response.errors) {
content.prepend(
''
);
var ul = $("");
for (var i = 0; i < response.errors.length; i++) {
ul.append($("
" + response.errors[i] + "
"));
}
$("#" + step + "_error").append(ul);
appendErrorConsoleItems(response.errors);
}
}
if (slist.length) {
sendForm(slist.pop());
} else if (redirect) {
trigger(links);
}
}
};
var xhr = $.ajax(ajaxData);
}
function sendFormAddresses(step, ev) {
if ($("#checkout-addresses-step").find("#" + step + "_form").length) {
var redirect = true;
var formData = new FormData($("#" + step + "_form")[0]);
var ajaxData = {
url: $("#" + step + "_form").attr("action"),
data: formData,
method: "post",
dataType: "json",
async: false,
contentType: false,
processData: false,
success: function(response) {
var content = $("#customfieldsblock_" + step);
content.find(".error").remove();
if (response.result === false) {
redirect = false;
if (response.errors) {
content.prepend(
''
);
var ul = $("");
for (var i = 0; i < response.errors.length; i++) {
ul.append($("
" + response.errors[i] + "
"));
}
$("#" + step + "_error").append(ul);
appendErrorConsoleItems(response.errors);
}
}
}
};
var xhr = $.ajax(ajaxData);
return xhr.responseJSON.result;
}
}
function sendFormShipment(step, ev) {
var redirect = true;
var formData = new FormData($("#" + step + "_form")[0]);
var ajaxData = {
url: $("#" + step + "_form").attr("action"),
data: formData,
method: "post",
dataType: "json",
contentType: false,
processData: false,
success: function(response) {
var content = $("#customfieldsblock_" + step);
content.find(".error").remove();
if (!response.result) {
redirect = false;
if (response.errors) {
content.prepend(
''
);
var ul = $("");
for (var i = 0; i < response.errors.length; i++) {
ul.append($("
" + response.errors[i] + "
"));
}
$("#" + step + "_error").append(ul);
appendErrorConsoleItems(response.errors);
}
}
if (redirect) {
$(ev).after(
''
);
$("#fmm_cf_trigger_shippment").click();
}
}
};
var xhr = $.ajax(ajaxData);
}
function sendFormPayment(step, ev) {
var redirect = true;
var formData = new FormData($("#" + step + "_form")[0]);
var ajaxData = {
url: $("#" + step + "_form").attr("action"),
data: formData,
method: "post",
dataType: "json",
contentType: false,
processData: false,
success: function(response) {
var content = $("#customfieldsblock_" + step);
content.find(".error").remove();
if (!response.result) {
redirect = false;
if (response.errors) {
content.prepend(
''
);
var ul = $("");
for (var i = 0; i < response.errors.length; i++) {
ul.append($("
" + response.errors[i] + "
"));
}
$("#" + step + "_error").append(ul);
appendErrorConsoleItems(response.errors);
}
}
if (redirect) {
//if there is no error trigger click on default payment button
$("#payment-confirmation button").trigger('click');
}
}
};
var xhr = $.ajax(ajaxData);
}
function trigger(links) {
if (this.links.is("a")) {
if (this.links.children().is("form")) {
this.links.children().submit();
} else {
location.href = this.links.attr("href");
}
} else if (this.links.is("img")) {
location.href = this.links.parent().attr("href");
} else if (this.links.parent().is("form")) {
this.links.parent().submit();
} else if (this.links.children(":first").is("a")) {
location.href = this.links.children(":first").attr("href");
} else if (this.links.parent().is("a")) {
location.href = this.links.parent().attr("href");
} else if (this.links.parent().parent().is("a")) {
location.href = this.links.parent().parent().attr("href");
} else if (
this.links.parent().parent().parent().is("a")) {
location.href = this.links.parent().parent().parent().attr("href");
} else {
this.links.unbind("click");
this.links.trigger("click");
}
}
$(document).find(".fields_datapicker ").datepicker({
dateFormat: "yy-mm-dd",
prevText: "",
nextText: ""
});
//function saveFieldData() {
// Summary step
$(document).on('click', "div.cart-detailed-actions a.btn", function(event) {
if($('.checkout_form').length) {
event.preventDefault();
var is_checked = checkRequiredBoxes();
if (is_checked.length && $.inArray(false, is_checked) >= 0) {
return false;
} else {
links = $(this);
if (!steps.length) {
trigger();
}
slist = [].concat(steps);
sendForm(slist.pop());
return false;
}
}
});
// For Addresses
$(document).on("click", "#checkout-addresses-step .continue", function(event) {
if ($("#checkout-addresses-step").find(".checkout_form").length) {
event.preventDefault();
var results = [];
var is_checked = checkRequiredBoxes();
if (is_checked.length && $.inArray(false, is_checked) >= 0) {
return false;
} else {
$("#checkout-addresses-step").find(".checkout_form").each(function(e) {
if ($("#" + $(this).data("step") + "_form").length) {
var result = sendFormAddresses($(this).data("step"), this);
results.push(result);
}
});
if ($.inArray(false, results) === -1) {
$(this).after(
''
);
$("#fmm_cf_trigger_addresses").click();
}
return false;
}
}
});
//For Shipping Step
$(document).on('click', "#checkout-delivery-step form .continue", function(event) {
if ($("#shipping_form").length) {
var is_checked = checkRequiredBoxes();
if (is_checked.length && $.inArray(false, is_checked) >= 0) {
return false;
} else {
sendFormShipment("shipping", this);
return false;
}
}
});
//For payment step - override payment button
if ($("#payment_form").length) {
var _paymentBtn = $("#payment-confirmation button[type=submit]");
if (_paymentBtn) {
var _overridePaymentBtn = $(getPaymentBtn($.trim(_paymentBtn.html())));
_paymentBtn.hide().after(_overridePaymentBtn);
_overridePaymentBtn.after(_paymentBtn).show();
}
$(document).on('click', "#fmm-payment-btn", function(event) {
if (false == $('#fmm-payment-btn').hasClass('cf_disabled_btn')) {
var is_checked = checkRequiredBoxes();
if (is_checked.length && $.inArray(false, is_checked) >= 0) {
return false;
} else {
sendFormPayment("payment", this);
return false;
}
}
});
}
//}
$(document).on('click', '#checkout-payment-step *', function() {
var _selected_payment = $('#checkout-payment-step').find('input[name="payment-option"]:checked').length;
var _terms_n_cond = $('#conditions-to-approve').find('input[type="checkbox"]:checked').length;
if ( (typeof _selected_payment !== 'undefined' && _selected_payment >= 1) && (typeof _terms_n_cond !== 'undefined' && _terms_n_cond >= 1) ) {
$('#fmm-payment-btn').removeClass('cf_disabled_btn');
} else {
if (false == $('#fmm-payment-btn').hasClass('cf_disabled_btn')) {
$('#fmm-payment-btn').addClass('cf_disabled_btn');
}
}
})
function runScript() {
if ($(".checkout_form").length) {
setDatePicker();
//saveFieldData();
}
}
$(document).on("click", "button[name=saveCustomFields]", function(event) {
var result = [];
var is_checked = checkRequiredBoxes();
if (is_checked.length && $.inArray(false, is_checked) >= 0) {
event.preventDefault();
return false;
} else {
$(".sending_loader").show();
$(".checkout_form").each(function(e) {
var step = $(this).data("step");
result.push(sendFormOrderDetail(step));
});
$(".sending_loader").fadeOut(600, function() {
if ($.inArray(false, result) === -1) {
location.reload(false);
}
});
}
});
//order-detail page
function sendFormOrderDetail(step) {
if ($("#checkoutblock-wrapper").find("#" + step + "_form").length) {
var formData = new FormData($("#" + step + "_form")[0]);
var ajaxData = {
url: $("#" + step + "_form").attr("action"),
data: formData,
method: "post",
dataType: "json",
async: false,
contentType: false,
processData: false,
success: function(response) {
var content = $("#customfieldsblock_" + step);
content.find(".error").remove();
if (response.result === false) {
if (response.errors) {
content.prepend(
''
);
var ul = $("");
for (var i = 0; i < response.errors.length; i++) {
ul.append($("