/**
 * @package Helix3 Framework
 * @author JoomShaper https://www.joomshaper.com
 * @copyright (c) 2010 - 2021 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
 */
jQuery(function ($) {
	//Web Fonts
	$(".list-font-families").on("change", function (event) {
		event.preventDefault();

		var $that = $(this),
			layoutName = $(this).val(),
			data = {
				action: "fontVariants",
				layoutName: layoutName,
			};

		var request = {
			option: "com_ajax",
			plugin: "helix3",
			data: data,
			format: "json",
		};

		$.ajax({
			type: "POST",
			data: request,
			success: function (response) {
				var font = $.parseJSON(response.data);
				$that.closest(".webfont").find(".list-font-weight").html(font.variants);
				$that.closest(".webfont").find(".list-font-subset").html(font.subsets);
			},
		});

		//Change Preview
		var font = $that.val().replace(" ", "+");
		$("head").append(
			"<link href='//fonts.googleapis.com/css?family=" + font + "' rel='stylesheet' type='text/css'>"
		);
		$(this).closest(".webfont").find(".webfont-preview").fadeIn().css("font-family", $(this).val());

		return false;
	});

	//Font Size
	$(".list-font-weight").on("change", function (event) {
		event.preventDefault();

		var variant = $(this).val(),
			weight = "",
			style = "",
			family = $(this).closest(".webfont").find(".list-font-families").val().replace(" ", "+") + ":" + variant;

		if (variant == "regular") {
			weight = "regular";
			style = "";
		} else if (variant == "italic") {
			weight = "regular";
			style = "italic";
		} else {
			weight = parseInt(variant);
			style = $(this).val().replace(weight, "");
		}

		$("head").append(
			"<link href='//fonts.googleapis.com/css?family=" + family + "' rel='stylesheet' type='text/css'>"
		);
		$(this)
			.closest(".webfont")
			.find(".webfont-preview")
			.fadeIn()
			.css({
				"font-family": $(this).closest(".webfont").find(".list-font-families").val(),
				"font-weight": weight,
				"font-style": style,
			});
	});

	//Font Subset
	$(".list-font-subset").on("change", function (event) {
		event.preventDefault();

		var subsets = $(this).val(),
			variant = $(this).closest(".webfont").find(".list-font-weight").val(),
			weight = "",
			style = "",
			family =
				$(this).closest(".webfont").find(".list-font-families").val().replace(" ", "+") +
				":" +
				variant +
				"&subset=" +
				subsets;

		if (variant == "regular") {
			weight = "regular";
			style = "";
		} else if (variant == "italic") {
			weight = "regular";
			style = "italic";
		} else {
			weight = parseInt(variant);
			style = $(this).val().replace(weight, "");
		}

		$("head").append(
			"<link href='//fonts.googleapis.com/css?family=" + family + "' rel='stylesheet' type='text/css'>"
		);
	});

	//Font Size
	$(".webfont-size").on("change", function (event) {
		event.preventDefault();

		var font_size = $(this).val(),
			subsets = $(this).closest(".webfont").find(".list-font-subset").val(),
			variant = $(this).closest(".webfont").find(".list-font-weight").val(),
			weight = "",
			style = "",
			family =
				$(this).closest(".webfont").find(".list-font-families").val().replace(" ", "+") +
				":" +
				variant +
				"&subset=" +
				subsets;

		if (variant == "regular") {
			weight = "regular";
			style = "";
		} else if (variant == "italic") {
			weight = "regular";
			style = "italic";
		} else {
			weight = parseInt(variant);
			style = $(this).val().replace(weight, "");
		}

		$("head").append(
			"<link href='//fonts.googleapis.com/css?family=" + family + "' rel='stylesheet' type='text/css'>"
		);
		$(this)
			.closest(".webfont")
			.find(".webfont-preview")
			.fadeIn()
			.css({
				"font-family": $(this).closest(".webfont").find(".list-font-families").val(),
				"font-weight": weight,
				"font-style": style,
				"font-size": $(this).val() + "px",
				"line-height": "1",
			});
	});

	//Update Fonts list
	$(".btn-update-fonts-list").on("click", function (event) {
		event.preventDefault();

		var $that = $(this),
			data = {
				action: "updateFonts",
				layoutName: "",
			};

		var request = {
			option: "com_ajax",
			plugin: "helix3",
			data: data,
			format: "raw",
		};

		$.ajax({
			type: "POST",
			data: request,
			beforeSend: function () {
				$that.prepend('<i class="fa fa-spinner fa-spin"></i> ');
			},
			success: function (response) {
				$that.after(response);
				$that.find(".fa-spinner").remove();
				$that
					.next()
					.delay(1000)
					.fadeOut(300, function () {
						$(this).remove();
					});
			},
		});

		return false;
	});
});
