b0y-101 Mini Shell


Current Path : E:/www/plan/components/com_jevents/assets/js/
File Upload :
Current File : E:/www/plan/components/com_jevents/assets/js/conditionalfields.js

/* copyright GWE Systems Ltd : 2015 All rights reserved */

var jevConditional = {
	setupJevConditions: function(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray) {
		var condition = jQuery("#"+condparam+ conditions);
		
		var radioElements = condition.find('input[type=radio]');
		if (radioElements.length)
		{
			radioElements.each(function (i ,  re)
			{
				// Need both for Chosen replacements
				jQuery(re).on("click", function() {
					jevConditional.jevCondition(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray)
				});
				jQuery(re).on("change", function() {
					jevConditional.jevCondition(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray)
				});
			});
		}
		else if (condition.prop("tagName") == "SELECT") {
			var condition_chzn = jQuery("#"+condition.attr("id") + "_chzn");
			if (condition_chzn.length) {
				condition_chzn.each (function (i, cc)
				{
					jQuery(cc).on("click", function() {
						jevConditional.jevCondition(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray)
					});
				});
			}
			else
				condition.on("change", function() {
					jevConditional.jevCondition(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray)
				});
		}
		else {
			condition.on("change", function() {
				jevConditional.jevCondition(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray)
			});
		}
		jevConditional.jevCondition(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray)
	},
	jevCondition: function(conditional,fielddefault,condlabel ,condparam, conditions, fieldparam,condarray,fielddefaultarray) {
		var condition = jQuery('#'+condparam + conditions);
		var eventsno = jQuery('#'+fieldparam+conditional);
		if (!condition.length || !eventsno.length)
		{
			//alert('no match ' +  '#'+condparam + conditions + " " +condition.length +" " + '#'+fieldparam+conditional + " "+eventsno.length);
			return;
		}
		// Joomla 3.x named element is inside control and also control-group elements
		var hiddencontrol = eventsno.parent().parent();
		// Joomla 2.5
		if (hiddencontrol.prop("tagName")=="UL")
		{
			hiddencontrol = eventsno.parent();
		}

		var conditionsarray = condarray;
		if (condition.prop('type') == "checkbox")
		{
			condition.val(condition.prop('checked') ? 1 : 0);
		}

		var radioElements = condition.find('input[type=radio]');
		if (radioElements.length){

		}
		radioElements.each (function(i, re) {
			if (jQuery(re).prop('checked'))
			{
				//alert(jQuery(re).parent().html() + " "+jQuery(re).prop('checked')+ " "+jQuery(re).val
				condition.val(jQuery(re).val());
			}
		});

		if (condition.prop('multiple') && condition.prop("tagName") == "SELECT")
		{
			condition.find('option:selected').each (function(i, co)
			{
				if (conditionsarray.indexOf(jQuery(co).val() ) >= 0)
				{
					conditionsarray.push( jQuery(co).val());
				}
			});
		}

		var checkboxElements = condition.prop('type')=="checkbox"? new Array(condition) : condition.find('input[type=checkbox]');
		if (checkboxElements.length>0)
		{
			condition.val( new Array());
			checkboxElements.each (function (i, cbe)
			{
				if (jQuery(cbe).prop('checked') && conditionsarray.indexOf(jQuery(cbe).val()) >= 0)
				{
					condition.val( conditionsarray[jQuery(cbe).val()]);
				}
			});
		}

		// If condition is valid then show the row
		if (conditionsarray.indexOf(condition.val()) >= 0)
		{
			if (hiddencontrol.prop("tagName") == "TR")
			{
				hiddencontrol.css("display", "table-row");
			}
			else if (hiddencontrol.prop("tagName") == "SPAN")
			{
				hiddencontrol.css("display", "inline");
			}
			else
			{
				hiddencontrol.css("display", "block");
			}
		}
		// else hide the row and revert the value to its default
		else
		{
			// Is the dependent field is a select list, or radio list
			if (eventsno.find('option').length)
			{
				var defaultarray = fielddefaultarray;
				eventsno.find('option').each (function (i, eno)
				{
					if (defaultarray.indexOf(jQuery(eno).val()) >= 0)
					{
						jQuery(eno).prop('selected', true);
					}
					else
					{
						jQuery(eno).prop('selected', false);
					}
				});
			}
			else
			{
				eventsno.val( fielddefault);
			}
			hiddencontrol.css("display", "none");
		}
		try {
			jQuery(eventsno).trigger("liszt:updated");
		}
		catch (e) {
		}
	}
};

Copyright © 2019 by b0y-101