$(document).ready(function(){
	initMasks();
	initSimplebar();
	initTooltip();

	
	// go to anchor animation
	$(document).on('click', 'a', function(e){
		if (window.location.pathname !== $(this).prop('pathname')) {
			return;
		}

		let href = $(this).attr('href');
		if (typeof href != 'undefined' && href.indexOf('#block_') === 0) {
			e.preventDefault();

			if (href.indexOf('#block_group_') === 0) {
				let groupId = href.substr(13);
				let $block = $('.block[data-group-id="'+groupId+'"]');
				if ($block.length) {
					href = '#' + $block.parent().attr('id');
				}
			}

			$('html, body').animate({ 
                scrollTop: $(href).offset().top - 100
            }, 500); // TODO: get distance to block and calculate time needed for the smooth speed
		}
	});
});

function initSimplebar()
{
	$('.js-simplebar').each(function(){new SimpleBar(this)});
}

function initTooltip()
{
	$('[data-toggle="tooltip"]').tooltip();
}

// convert serialized array to obj
function convertFormArrToObj(dataArr)
{
	let data = {};

	for (i = 0; i < dataArr.length; i++) {
		if (dataArr[i]['name'].indexOf('[]') !== -1) {
			let name = dataArr[i]['name'].slice(0, -2);
			if (!data[name]) {
				data[name] = [];
			}
			data[name].push(dataArr[i]['value']);
		} else if (dataArr[i]['name'].indexOf('[') !== -1) { // fucking awesome kostyl!
			let firstBracketPos = dataArr[i]['name'].indexOf('[');
			let name = dataArr[i]['name'].substr(0, firstBracketPos) + ']' + dataArr[i]['name'].substr(firstBracketPos);
			data[name] = dataArr[i]['value'];
		} else if (data[dataArr[i]['name']]) {
			if (!Array.isArray(data[dataArr[i]['name']])) {
				data[dataArr[i]['name']] = [data[dataArr[i]['name']]];
			}
			data[dataArr[i]['name']].push(dataArr[i]['value']);
		} else {
			data[dataArr[i]['name']] = dataArr[i]['value'];
		}
	}

	return data;
}

function startBtnLoad($btn)
{
	let width = $btn.outerWidth();
	let height = $btn.outerHeight();

	$btn.data('original-html', $btn.html());
	$btn.html('<div class="spinner-grow"></div>');
	$btn.css('width', width);
	$btn.css('height', height);
	$btn.addClass('loading');

	$btn.prop('disabled', true);

	$btn.css('padding', 0);
	$btn.css('display', 'inline-flex');
	$btn.css('justify-content', 'center');
	$btn.css('align-items', 'center');
}

function endBtnLoad($btn)
{
	let originalText = $btn.data('original-html');
	$btn.html(originalText);
	$btn.removeClass('loading');

	$btn.prop('disabled', false);

	$btn.attr('style', '');
}

/* cookies */
function getCookie(name) {
	let matches = document.cookie.match(new RegExp(
	  "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	));
	return matches ? decodeURIComponent(matches[1]) : undefined;
}
function setCookie(name, value, options = {}) {

	options = Object.assign({ path: '/' }, options);
  
	if (options.expires instanceof Date) {
	  	options.expires = options.expires.toUTCString();
	}
  
	let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);
  
	for (let optionKey in options) {
		updatedCookie += "; " + optionKey;
		let optionValue = options[optionKey];
		if (optionValue !== true) {
			updatedCookie += "=" + optionValue;
		}
	}
  
	document.cookie = updatedCookie;
}
function deleteCookie(name) {
	setCookie(name, "", {
		'max-age': -1
	})
}