HEX
Server: LiteSpeed
System: Linux l24.yourwebhosting.net 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: turkishi (1582)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //home/turkishi/www/wp-content/plugins/extensions-for-cf7/assets/js/conditional-field.js
(function ($) {
	"use strict";
	var extcf7_show_animation = {
		"height": "show",
		"marginTop": "show",
		"marginBottom": "show",
		"paddingTop": "show",
		"paddingBottom": "show"
	};

	var extcf7_hide_animation = {
		"height": "hide",
		"marginTop": "hide",
		"marginBottom": "hide",
		"paddingTop": "hide",
		"paddingBottom": "hide"
	};
	
	var extcf7_animation_status = extcf7_conditional_settings.animitation_status;
	var extcf7_animation_intime = parseInt(extcf7_conditional_settings.animitation_in_time);
	var extcf7_animation_out_time = parseInt(extcf7_conditional_settings.animitation_out_time);
	var condition_depends_field = [];

	// Initialize the all form field.
	function extcf7_global(){
		$('.wpcf7-form').each(function(){
			const form = $(this),
				conditional_options = form.find('input[name="_extcf7_conditional_options"]');
			if( !conditional_options.length ){
				return;
			}
			
			const options_element = conditional_options.eq(0);
			
			if (!options_element.length || !options_element.val()) {
				return;
			}

			const form_options = JSON.parse(options_element.val());
			
			form_options.conditions.forEach(function(condition){
				const rule_applied_field = $('[data-id="'+condition.rule_applied_field+'"]');
				condition.and_condition_rules.forEach(function(rules){

					if(!condition_depends_field.includes(rules.if_field_input)){
						condition_depends_field.push(rules.if_field_input);
					}

					const from_field_selector = extcf7_input_checkbox_name(form, rules.if_field_input);
					extcf7_check_condition(form, condition.and_condition_rules, rule_applied_field);

					from_field_selector.each(function(){
						const tag = $(this).get(0);
						
						if( tag.tagName == 'INPUT' ){
							var input_attr_type = $(this).attr('type');
							if(input_attr_type == 'text'){
								from_field_selector.on('keyup', function(){
									extcf7_check_condition(form, condition.and_condition_rules, rule_applied_field);
								});
							}else if(input_attr_type == 'email'){
								from_field_selector.on('keyup', function(){
									extcf7_check_condition(form, condition.and_condition_rules, rule_applied_field);
								});
							}else if(input_attr_type == 'radio'){
								from_field_selector.on('change', function(){
									extcf7_check_condition(form, condition.and_condition_rules, rule_applied_field);
								});
							}else if(input_attr_type == 'checkbox'){
								from_field_selector.on('change', function(){
									extcf7_check_condition(form, condition.and_condition_rules, rule_applied_field);
								});
							}
						}else if( tag.tagName == 'SELECT' ){
							from_field_selector.on('change', function(){
								extcf7_check_condition(form, condition.and_condition_rules, rule_applied_field);
							});	
						}else if( tag.tagName == 'TEXTAREA' ){
							from_field_selector.on('keyup', function(){
								extcf7_check_condition(form, condition.and_condition_rules, rule_applied_field);
							});	
						}
					});
				});
			});

		});
	}

	// show hide field based on conditional value
	function extcf7_check_condition(form, coditions_rules, rule_applied_field){
		var condition_status = extcf7_is_condition_ok(form, coditions_rules);
    	if(condition_status){
    		if('on' == extcf7_animation_status){
    			rule_applied_field.animate(extcf7_show_animation, extcf7_animation_intime);
    		}else{
    			rule_applied_field.show();
    		}
    	}else{
			if(rule_applied_field.data('clear') !== undefined){
				clear_fied_on_hide(rule_applied_field);
			}
    		if('on' == extcf7_animation_status){
    			rule_applied_field.animate(extcf7_hide_animation, extcf7_animation_out_time);
    		}else{
    			rule_applied_field.hide();
    		}
    	}
	}
    
    //check input type checkbox name
	function extcf7_input_checkbox_name(form, from_field_selector){
		var input_tag =$(form).find(`[name="${from_field_selector}"]`);
		if( typeof input_tag.get(0) === "undefined"){
    		input_tag = $(form).find(`[name="${from_field_selector}[]"]`);
    	}
    	return input_tag;
	}

	//check applied condition is true or flase basen on field value
	function extcf7_is_condition_ok(form, conditions){

		var condition_status;
		var conditon_length = conditions.length;
		var pre_input_val;
		var current_input_val;
		var pre_cnd;
		var current_cnd;
		var next_input_val;
		var next_cnd;

		for (var k = 0; k < conditon_length; k++){

			if('and' == conditions[k].if_type_input || 'or' == conditions[k].if_type_input){
				pre_input_val 	  = extcf7_get_input_val(form, conditions[k-1]);
				current_input_val = extcf7_get_input_val(form, conditions[k]);
				pre_cnd 		  = extcf7_compare_condition(conditions[k-1], pre_input_val);
				current_cnd 	  = extcf7_compare_condition(conditions[k], current_input_val);
				if( k < conditon_length - 1 ){
					next_input_val = extcf7_get_input_val(form, conditions[k+1]);
					next_cnd 	   = extcf7_compare_condition(conditions[k+1], next_input_val);
				}
			}

			if(!conditions[k].if_type_input){
				var if_field_input_value = extcf7_get_input_val(form, conditions[k]);
				var field_value_status 	 = extcf7_compare_condition(conditions[k],if_field_input_value);
				
				if( conditon_length > 1 ){
					condition_status = extcf7_1st_cnd_method(form, conditions,field_value_status);
					return condition_status;
					break;
				}else{
					condition_status = field_value_status;
				}

			}else if('and' == conditions[k].if_type_input){
				
				if(conditions[k+1].if_type_input == 'and'){
					condition_status = pre_cnd && current_cnd && next_cnd ? true : false;
				}else{
					condition_status = (pre_cnd && current_cnd) || next_cnd ? true : false;
				}

			}else if('or' == conditions[k].if_type_input){

				if(conditions[k+1].if_type_input == 'and'){
					condition_status = (pre_cnd || current_cnd) && next_cnd ? true : false;
				}else{
					condition_status = (pre_cnd || current_cnd) || next_cnd ? true : false;
				}

			}
		}
		return condition_status;
	}

	// compare conditonal logic for the very fast if condition
	function extcf7_1st_cnd_method(form, conditions,first_value_status){
		var cnd_status = first_value_status;
		var input_value;
		var value_status;
		for (var i = 1; i < conditions.length; i++) {
			input_value = extcf7_get_input_val(form, conditions[i]);
			value_status = extcf7_compare_condition(conditions[i],input_value);
			if(conditions[i].if_type_input == 'and'){
				cnd_status = cnd_status && value_status;
			}else{
				cnd_status = cnd_status || value_status;
			}
		}

		return cnd_status;
	}

	// compare the input field value with conditional field value
	function extcf7_compare_condition(rules,input_value){
		if(rules.operator_input == "equal"){
			if(input_value == rules.if_value_input){
				return true;
			}
		}else if(rules.operator_input == "not-equal"){
			if(input_value != rules.if_value_input){
				return true;
			}
		}

		return false;	
	}

	// get the form input field value
	function extcf7_get_input_val(form, rules){

		var if_input_value;
		var if_input_selector = extcf7_input_checkbox_name(form, rules.if_field_input);

		if(if_input_selector.get(0).tagName == 'INPUT' && if_input_selector.attr('type') == 'checkbox'){
			if(if_input_selector.prop("checked") == true){
				if_input_value = "checked"
			}else if(if_input_selector.prop("checked") == false){
				if_input_value = "unchecked"
			}
		}else if(if_input_selector.get(0).tagName == 'INPUT' && if_input_selector.attr('type') == 'radio'){
			var radio_selector = $(form).find(':input[value="'+rules.if_value_input+'"]');
			if(radio_selector.prop("checked")){
				if_input_value = radio_selector.val();
			}
		}else{
			if_input_value = if_input_selector.val();
		}

		return if_input_value;
	}

	//clear field on hide
	function clear_fied_on_hide(rule_applied_field ){
		var $inputs = $(':input', rule_applied_field).not(':button, :submit, :reset, :hidden');
        $inputs.each(function(){
            var $this = $(this);
            $this.val(this.defaultValue);
            $this.prop('checked', this.defaultChecked);
            if(condition_depends_field.includes($this.attr('name'))){
            	$this.trigger("change");
            	$this.trigger("keyup");
            }
        });

        $('textarea', rule_applied_field).each(function() {
            var $this = $(this);
            $this.val(this.defaultValue);
            if(condition_depends_field.includes($this.attr('name'))){
            	$this.trigger("keyup");
            }
        });

        $('select', rule_applied_field).each(function() {
            var $this = $(this);
            if ($this.val() === null) {
                $this.val($("option:first",$this).val());
                if(condition_depends_field.includes($this.attr('name'))){
	            	$this.trigger("change");
	            }
            }
        });
	}

	extcf7_global();

	if ( 'true' === extcf7_conditional_settings.elementor_editor_mode ) {
        $( window ).on( 'elementor/frontend/init', function () {
            elementorFrontend.hooks.addAction( 'frontend/element_ready/widget', function ( $scope, $ ) {
                extcf7_global();
            } );
        } );
    }

})(jQuery);