function camelize(string) {
    var a = string.split('_'), i;
    s = [];
    for (i=0; i<a.length; i++){
        s.push(a[i].charAt(0).toUpperCase() + a[i].substring(1));
    }
    s = s.join('');
    return s;
}

/**
 * Mètode que mostra els errors de validació amb Ajax.
 * El paràmetre "section" serveix per a indicar dins
 * de quina capa (mitjançant classe o id) es troben els inputs
 */
function onError(data, section) {
    jQuery.each(data.data, function(model, errors) {
        for (fieldName in this) {
            var element = jQuery((typeof section != 'undefined' ? section + " " : "") + "#" + camelize(model + '_' + fieldName));
            var _insert = jQuery(document.createElement('div'));
			// Si el label està darrera en lloc de davant inserim l'error després del label (bàsicament per als checkbox..)
			if(jQuery(element).next().is('label') && jQuery(element).next().attr('for') == camelize(model + '_' + fieldName))
				_insert.insertAfter(element.next());
			else 
				_insert.insertAfter(element);
			_insert.hide().addClass('error-message').text(this[fieldName]).slideDown();
        }
    });
};
