File: /home/i/e/s/iestorre/biologia/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(co.val() ) >= 0)
{
conditionsarray.push( 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) {
}
}
};