/*jshint browser:true, devel:true */
/*global _, jQuery, ajaxurl, wpml_reset_pro_trans_config_strings */

/** @namespace wpml_reset_pro_trans_config_strings.placeHolder */
/** @namespace wpml_reset_pro_trans_config_strings.confirmation */
/** @namespace wpml_reset_pro_trans_config_strings.reset */
/** @namespace wpml_reset_pro_trans_config_strings.action */
/** @namespace wpml_reset_pro_trans_config_strings.nonce */

var ResetProTransConfig = function () {
	"use strict";

	var self = this;

	self.init = function () {
		var checkBox = jQuery('#icl_reset_pro_check');
		var button = jQuery('#icl_reset_pro_but');
		checkBox.on('change', function () {
			if (checkBox.is(":checked")) {
				button.removeClass('button-primary-disabled');
			} else {
				button.addClass('button-primary-disabled');
			}
		});
		button.on('click', function (event) {
			var spinner;
			var canReset;
			var result = false;
			var checkBoxChecked;
			var userConfirms;
			var buttonDisabled;

			event.preventDefault();
			buttonDisabled = button.hasClass('button-primary-disabled');
			checkBoxChecked = checkBox.is(":checked");
			canReset = !buttonDisabled && checkBoxChecked;
			if (canReset) {
				userConfirms = confirm(wpml_reset_pro_trans_config_strings.confirmation);
				result = userConfirms;
			}

			if (result) {
				spinner = jQuery('#' + wpml_reset_pro_trans_config_strings.placeHolder).find('.spinner');
				button.prop('disabled', true);

				spinner.addClass('is-active');

				jQuery.ajax({
					type:     "POST",
					url:      ajaxurl,
					data:     {
						'action': wpml_reset_pro_trans_config_strings.action,
						'nonce':  wpml_reset_pro_trans_config_strings.nonce
					},
					dataType: 'json',
					success             :  function (response) {
						if (response.success) {
							alert(response.data);
							document.location.reload(true);
						} else {
							alert(response.data);
						}
					},
					error               :    function (jqXHR, status, error) {
						var parsedResponse = jqXHR.statusText || status || error;
						alert(parsedResponse);
					},
                                complete: function () {
                                    button.prop('disabled', false);
                                    button.next().fadeOut();
                                    spinner.removeClass('is-active');
                                }
                            });
            }
        });
    };

    jQuery(function () {
        resetProTransConfig.init();
    });
};

var resetProTransConfig = new ResetProTransConfig();