(function($) {
	$(document).ready(function(){
		
		$("button[data-fit-bounds-to-shape]").each(function(index, el) {
			
			$(el).on("click", function(event) {
				
				var name = $(el).attr("data-fit-bounds-to-shape");
				var shape = window[name];
				var bounds;
				
				if(shape instanceof google.maps.Polygon || shape instanceof google.maps.Polyline)
				{
					bounds = new google.maps.LatLngBounds();
					shape.getPath().forEach(function(element, index) {
						bounds.extend(element);
					});
				}
				else
					bounds = shape.getBounds();
			
				MYMAP.map.fitBounds(bounds);
			});
			
		});
		
		$(document.body).on("click", "#wpgmza-gdpr-privacy-policy-notice .notice-dismiss", function(event) {
			
			$.ajax(WPGMZA.ajaxurl, {
				data: {
					action: "wpgmza_gdpr_privacy_policy_notice_dismissed"
				}
			})
			
		});
		
		$("body").on("click",".wpgmza_copy_shortcode", function() {
			var $temp = $('<input>');
			var $tmp2 = $('<span id="wpgmza_tmp" style="display:none; width:100%; text-align:center;">');
			$("body").append($temp);
			$temp.val($(this).val()).select();
			document.execCommand("copy");
			$temp.remove();
			$(this).after($tmp2);
			$($tmp2).html(wpgmaps_localize_strings["wpgm_copy_string"]);
			$($tmp2).fadeIn();
			setTimeout(function(){ $($tmp2).fadeOut(); }, 1000);
			setTimeout(function(){ $($tmp2).remove(); }, 1500);
		});

		$('#wpgmza_settings_enable_usage_tracking').change(function(event) {

			var usage_tracking = $(this);

			if (usage_tracking.is (':checked')){
				var enabled = true;
			} else {
				var enabled = false;
			}
			var email = $("#wpgmza_admin_email_coupon").val();

			var data = {
				action: 'request_coupon',
				email: email,
				status: enabled
			}
			$.post(ajaxurl, data, function(response){
			});

		});

		var radiusStoreLocator      = $('.wpgmza-store-locator-default-radius'),
			radiusStoreLocatorKm    = $('#wpgmza_store_locator_default_radius_km'),
			radiusStoreLocatorMi    = $('#wpgmza_store_locator_default_radius_mi');

		radiusStoreLocator.on('change', function() {
			radiusStoreLocator.val($(this).val());
		});

		$('#wpgmza_store_locator_distance').on('change', function() {
			radiusStoreLocator.removeClass('active');

			if ($(this).attr('checked')){
				radiusStoreLocatorMi.addClass('active');
			} else {
				radiusStoreLocatorKm.addClass('active');
			}
		});
		
		// If the store locator radii aren't valid when trying to save, switch to that tab so the error message is visible
		$("input[name='wpgmza_save_settings']").on("click", function() {
			var input = $("input.wpgmza_store_locator_radii");
			var value = input.val();
			var regex = new RegExp(input.attr("pattern"));
			
			if(!value.match(regex))
				$("#wpgmaps_tabs").tabs({active: 3});
		});
			
			$("#wpgmza_store_locator_distance").on("change", function(event) {
				
				var units = $(this).prop("checked") ? "mi" : "km";
				
				$(".wpgmza-store-locator-default-radius option").each(function(index, el) {
					
					$(el).html(
						$(el).html().match(/\d+/) + units
					);
					
				});
				
			});
		
	});
	
	$(window).on("load", function(event) {
		
		if(WPGMZA.settings.engine == "google-maps")
			return;
		
		$(".wpgmza-open-layers-feature-unavailable:not(.notice)").each(function(index, el) {
			
			var warning = $($(".notice.wpgmza-open-layers-feature-unavailable")[0]).clone();
			$(warning).show();
			$(el).prepend(warning);
			
			$.merge(
				$(el).find("input, select, textarea, button, .button-primary"),
				$(el).siblings("input, select, textarea, button, .button-primary")
			).each(function(index, el) {
				if($(el).hasClass("button-primary"))
					$(el).attr("href", "javascript: ;");
				else
					$(el).prop("disabled", true);
			});
			
		});
		
		$(".wpgmza-open-layers-feature-coming-soon:not(.notice)").each(function(index, el) {
			
			var warning = $($(".notice.wpgmza-open-layers-feature-coming-soon")[0]).clone();
			$(warning).show();
			$(el).prepend(warning);
			
			$.merge(
				$(el).find("input, select, textarea, button, .button-primary"),
				$(el).siblings("input, select, textarea, button, .button-primary")
			).each(function(index, el) {
				if($(el).hasClass("button-primary"))
					$(el).attr("href", "javascript: ;");
				else
					$(el).prop("disabled", true);
			});
			
		});
		
	});
	
})(jQuery);