var conditionalForm =
{
// hide zone
clearZone : function(zone, fieldid)
{
// remove .inPath class starting from closest .form-group.isNode
// (aka "clean path")
jQuery('#groupe'+fieldid+'.form-group.isNode')
.nextAll()
.removeClass('inPath')
.hide();
// hide selected zone
jQuery('div#' + zone).each(function()
{
// hide sub zone that should be hidden
jQuery(this).find('li.toHide').each(function()
{
jQuery(this).hide('normal');
});
jQuery(this).hide('normal');
});
// reset text inputs and selects, except radio and checkbox buttons
jQuery('div#' + zone + ' :input').each(function()
{
jQuery(this).not(':radio, :checkbox').val('');
jQuery(this).removeAttr('checked').removeAttr('selected');
});
},
// manage fields controled by boolean checkbox inputs
handleCheckboxBoolean : function(zone, fieldid, activationvalue)
{
jQuery('div#' + zone).css('display','none');
jQuery('div#field' + fieldid + ' :checkbox').bind('click change', function()
{
if (jQuery(this).is(':checked') && jQuery(this).val() == activationvalue)
{
jQuery('div#' + zone).addClass('inPath').show('normal');
}
else
{
conditionalForm.clearZone(zone, fieldid);
}
}).change();
},
// manage fields controled by checkbox inputs
handleCheckbox : function(zone, fieldid, activationvalue)
{
jQuery('div#' + zone).css('display','none');
jQuery('label#' + fieldid + ' :checkbox').bind('click change', function()
{
if(jQuery(this).is(':checked'))
{
jQuery('div#' + zone).addClass('inPath').show('normal');
}
else
{
conditionalForm.clearZone(zone, fieldid);
}
}).change();
},
// manage fields controled by list
handleList : function(zone, fieldid, activationvalue)
{
jQuery('div#' + zone).css('display', 'none');
jQuery('select#' + fieldid).change(function ()
{
jQuery('select#' + fieldid + ' option:selected').each(function()
{
if (jQuery(this).val() == activationvalue)
{
jQuery('div#' + zone).addClass('inPath').show('normal');
}
else
{
conditionalForm.clearZone(zone, fieldid);
}
});
}).change();
},
// manage fields controled by radio inputs
handleRadio : function(zone, fieldid, activationvalue)
{
jQuery('div#' + zone).css('display', 'none');
jQuery('div#field' + fieldid + ' :radio').bind('click change', function()
{
if (jQuery(this).is(':checked'))
{
if(jQuery(this).val() == activationvalue)
{
jQuery('div#' + zone).addClass('inPath').show('normal');
}
else
{
conditionalForm.clearZone(zone, fieldid);
}
}
}).change();
}
};
var CAPTCHA =
{
reload : function(input, url)
{
input.setAttribute('src', this.buildCaptchaImageURL(url))
},
buildCaptchaImageURL : function(url)
{
return url.replace(new RegExp('amp;', 'g'), '') + '&rnd=' + Math.random();
}
};