/**
* NOTICE OF LICENSE
*
* This source file is subject to the Software License Agreement
* that is bundled with this package in the file LICENSE.txt.
*
* @author Peter Sliacky (Zelarg)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
//console.info('back.js loaded');
(function ($) {
$.fn.fixMe = function () {
return this.each(function () {
var $this = $(this),
$t_fixed;
function init() {
$this.wrap('
');
$t_fixed = $this.clone();
$t_fixed.find("tbody").remove().end().addClass("fixed").insertBefore($this);
resizeFixed();
}
function resizeFixed() {
$t_fixed.find("th").each(function (index) {
$(this).css("width", $this.find("th").eq(index).outerWidth() + "px");
});
}
function scrollFixed() {
var offset = $(this).scrollTop(),
tableOffsetTop = $this.offset().top,
tableOffsetBottom = tableOffsetTop + $this.height() - $this.find("thead").height();
if (offset < tableOffsetTop || offset > tableOffsetBottom)
$t_fixed.hide();
else if (offset >= tableOffsetTop && offset <= tableOffsetBottom && $t_fixed.is(":hidden"))
$t_fixed.show();
}
$(window).resize(resizeFixed);
$(window).scroll(scrollFixed);
init();
});
};
})(jQuery);
function dataUpdate() {
var sortedObject = sortable('table.address-fields tbody', 'serialize');
var json = JSON.stringify(sortedObject[0].container, null, 2);
$('#TC_invoice_fields').val(json).trigger('change');
json = JSON.stringify(sortedObject[1].container, null, 2);
$('#TC_delivery_fields').val(json).trigger('change');
}
function customerFieldsUpdate() {
var sortedObject = sortable('table.customer-fields tbody', 'serialize');
var json = JSON.stringify(sortedObject[0].container, null, 2);
$('#TC_customer_fields').val(json).trigger('change');
}
function extend(obj, src) {
Object.keys(src).forEach(function (key) {
obj[key] = src[key];
});
return obj;
}
function disableDetailsOnVisibilityChange() {
$('input[name=visible]').on('change', function () {
if ($(this).is(':checked')) {
$(this).closest('tr').find('input').not('[name=visible]').not('[type=hidden]').attr('disabled', false);
} else {
$(this).closest('tr').find('input').not('[name=visible]').not('[type=hidden]').attr('disabled', true);
}
});
}
function updateLeftRightRatioPct(left_right_ratio) {
$('.checkout-block-container.left legend').attr('data-content', ' [' + left_right_ratio + '%]');
$('.checkout-block-container.right legend').attr('data-content', ' [' + (100 - left_right_ratio) + '%]');
}
function expandBlocksClasses() {
$('.checkout-block-item > [name=classes], .block-classes-info').toggle();
// Disable drag&drop on input fields, inside of .checkout-block-items
$('.checkout-block-item').on('mousedown', 'input', function () {
$(this).parent('.checkout-block-item').attr('draggable', false);
})
$('.checkout-block-item').mouseover(function () {
$(this).attr('draggable', true);
})
}
var blocksLayoutSortableObject;
function initSortableContainers() {
blocksLayoutSortableObject = sortable('.checkout-block-sortable-container', {
placeholderClass: 'ph-class',
items: '.checkout-block-item',
hoverClass: 'hvr-class',
forcePlaceholderSize: true,
acceptFrom: '.checkout-block-sortable-container',
containerSerializer: function (serializedContainer) {
var serialized = {};
var classes = null;
var gridPosition = $(serializedContainer.node).closest('.checkout-block-container').find('legend').text();
$.each($(serializedContainer.node).find('.checkout-block-item'), function () {
classes = $(this).find('[name=classes]').val();
blockName = $(this).find('[name=blockName]').val();
serialized[blockName] = classes
});
var result = [];
result[gridPosition] = serialized;
return result;
}
});
for (var i = 0; i < blocksLayoutSortableObject.length; i++) {
blocksLayoutSortableObject[i].addEventListener('sortupdate', blocksLayoutDataUpdate2);
}
}
function blocksLayoutDataUpdate2() {
// var sortedObject = sortable('.checkout-block-sortable-container', 'serialize');
// var layout = {};
// for (var i = 0; i < 4; i++) {
// layout = extend(layout, sortedObject[i].container);
// }
// json = JSON.stringify(layout, null, 2);
// $('#TC_blocks_layout').val(json);
var layout = {};
layout = traverseBlocksTree($('.blocks-layout.top-level > .checkout-block-container'));
var json = JSON.stringify(layout, null, 2);
// console.info(json);
$('#TC_blocks_layout').val(json).trigger('change');
}
var inner_area = '\
\
\
\
\
\
';
var new_fieldset_html = '';
function splitTwoBlocks(splitElements, direction) {
//var instanceKey = splitElements.map(function() { return $(this).attr('id'); }).toArray().join(':');
var elements = splitElements.toArray();
var instance = Split(elements, {
minSize: 50,
sizes: [
Math.round(elements[0].dataset.defaultSize),
100 - Math.round(elements[0].dataset.defaultSize)
],
direction: direction,
elementStyle: function (dimension, size, gutterSize) {
return {
'flex-basis': 'calc(' + size + '% - ' + gutterSize + 'px)'
}
},
onDragStart: function () {
var isizes = instance.getSizes();
$(elements[0]).prepend('' + Math.round(isizes[0]) + '%');
$(elements[1]).prepend('' + Math.round(isizes[1]) + '%');
$(elements).addClass('resizing');
},
onDrag: function () {
var isizes = instance.getSizes();
$(elements[0]).find(".size-display").text(Math.round(isizes[0]) + '%');
$(elements[1]).find(".size-display").text(Math.round(isizes[1]) + '%');
},
onDragEnd: function () {
$(elements[0]).find(".size-display").remove();
$(elements[1]).find(".size-display").remove();
$(elements).removeClass('resizing');
blocksLayoutDataUpdate2();
}
});
// set instances from both sides, for easier deletion
var ii = 0;
splitElements.each(function () {
split_instances[$(this).attr('id')] = {instance: instance, position: ii++};
});
}
function splitCheckoutBlockContainer(thisEl, direction) {
// direction = 'vertical' or 'horizontal'
var thisContainer = thisEl.closest('.checkout-block-container');
var thisInnerArea = thisContainer.find('.inner-area');
thisContainer.prepend(
'
' +
'' +
new_fieldset_html +
'
'
);
thisContainer.find('.checkout-block-container').first().prepend(thisInnerArea);
$('.checkout-block-container').uniqueId();
splitTwoBlocks(thisContainer.find('.checkout-block-container'), direction);
initSortableContainers();
blocksLayoutDataUpdate2();
return false;
}
function removeEmptyContainer(thisEl) {
var thisContainer = thisEl.closest('.checkout-block-container');
// Allow remove container only on empty containers
if (thisContainer.find('.checkout-block-item').length) {
alert('This container is not empty, please move all blocks to another container and then try again');
return;
}
split_instances[thisContainer.attr('id')]['instance'].destroy();
var splitParent = thisContainer.parent().closest('.checkout-block-container');
// one of 2 is deleted
thisContainer.remove();
// the other one is promoted to higher level
var siblingContainerHtml = splitParent.find('.checkout-block-container').html();
splitParent.html(siblingContainerHtml);
initSortableContainers();
blocksLayoutDataUpdate2();
}
var jtl = $('.blocks-layout.top-level > .checkout-block-container');
var containersTree = {};
function traverseBlocksTree(checkoutBlockContainerNode) {
var result = {};
checkoutBlockContainerNode.children('[class^=flex-split], .inner-area').each(function () {
// console.info($(this));
if ('flex-split-horizontal' === $(this).attr('class') ||
'flex-split-vertical' === $(this).attr('class')) {
result[$(this).attr('class')] = [
traverseBlocksTree($(this).children('.checkout-block-container').eq(0)),
traverseBlocksTree($(this).children('.checkout-block-container').eq(1))
];
} else {
var blocks = $(this).find('.checkout-block-sortable-container .checkout-block-item');
var blocks_res = [];
var block_detail = {};
blocks.each(function () {
block_detail[$(this).find('.block-name').text()] = $(this).find('[name=classes]').val();
blocks_res.push(block_detail);
block_detail = {};
});
result['blocks'] = blocks_res;
}
// Update size of actual container in JSON generated code
var split_instance = split_instances[$(this).closest('.checkout-block-container').attr('id')];
if ("undefined" !== typeof split_instance) {
result['size'] = split_instance['instance'].getSizes()[split_instance['position']];
} else {
result['size'] = 100;
}
});
return result;
}
var split_instances = {};
function fontChangeHandler($fontNameEl) {
var fontName = $fontNameEl.val().replace(/\+/g, '-');
var weightOptionsName = 'font-weight-' + fontName;
var weightOptionsStr = $('[name=' + weightOptionsName + ']').val();
if ('undefined' !== typeof weightOptionsStr) {
var weightOptions = weightOptionsStr.split(',');
for (var i = 0, len = weightOptions.length; i < len; i++) {
var weightValues = weightOptions[i].split(' ');
// console.info(weightValues);
}
var selectEl = $('#TC_fontWeight');
var oldVal = selectEl.val();
selectEl.children().remove();
$.each(weightOptions, function (i, item) {
var weightValues = weightOptions[i].split(' ');
$(selectEl).append($('