/**
*
* JQuery addapter class so we can use built in JQuery validator. NOTE: this is
* only skeleton, implementing only small part of possible validation, Usage:
*
*
* $(function(){$.fn.stripesValidation('${metaData.formId}', ${metaData});});
*
*
* Dependancies: JQuery.1.3.1 JQuery.Form JQuery.Validate
*
* Licence: Same as JQuery, thus: Dual licensed under the MIT and GPL licenses.
* http://docs.jquery.com/License
*/
(function($) {
/**
* Processess Stripes meta data and converting it so JQuery Validation
* plugin is used for client side validation
*
* @param formId
* id of a form to be processed
* @param metaData
* metadata that is produced by stripes tag
*/
$.fn.stripesValidation = function(formId, metaData) {
var form = $('#' + formId);
var idCount = 0;
for ( var fieldName in metaData) {
var field = form.find('[name="' + fieldName + '"]');
addValidation(field, metaData[fieldName]);
// run validation:
form.validate();
}
function addValidation(field, obj) {
for ( var prop in obj) {
var val = obj[prop];
switch (prop) {
case 'label':
break;
case 'required':
if (val) {
// add only if true
field.addClass(prop);
}
break;
case 'minlength': // should already be there
case 'maxlength': // should already be there
field.attr(prop, val);
break;
case 'minvalue':
field.attr('min', val);
break;
case 'maxvalue':
field.attr('max', val);
break;
case 'mask':
setMask(field, val);
break;
case 'typeConverter':
setConverter(field, val);
break;
// VU
case 'ignoreCRLFInLength':
if(val){
field.addClass(prop);
}
break;
default:
debug('missing this:' + prop + ':' + val);
}
}
}
/**
* Adds regular expression validation
*
* @param field
* field reference
* @param mask
* regular expression mask
*/
function setMask(field, mask) {
idCount++;
var methodRef = 'maskMethod' + idCount;
field.addClass(methodRef);
$.validator.addClassRules({
methodRef : {
methodRef : true
}
});
$.validator.addMethod(methodRef, function(value) {
return mask.test(value);
}, 'El valor capturado no es v\u00E1lido.');
}
/**
* Add converter mappings
*
* @param field
* field reference
* @param converter
* converter used by stripes for given field
*/
function setConverter(field, converter) {
if (converter == 'EmailTypeConverter') {
field.addClass('email');
} else if (converter == 'DateTypeConverter') {
field.addClass('date');
if ($.fn.datepicker) {
field.datepicker();
}
} else if (converter == 'CreditCardTypeConverter') {
field.addClass('creditcard');
} else if (converter == 'IntegerTypeConverter') {
field.addClass('number');
} else if (converter == 'PercentageTypeConverter') {
field.addClass('number');
// Begin - VU
} else if (converter == 'RFCPersonaMoralTypeConverter') {
field.addClass('rfcPersonaMoral');
} else if (converter == 'RFCPersonaFisicaTypeConverter') {
field.addClass('rfcPersonaFisica');
} else if (converter == 'NombreTypeConverter') {
field.addClass('nombre');
} else if (converter == 'NombrePersonaTypeConverter') {
field.addClass('nombrePersona');
} else if (converter == 'UsuarioContrasenaTypeConverter') {
field.addClass('usuarioContrasena');
} else if (converter == 'DescripcionDireccionTypeConverter') {
field.addClass('descripcionDireccion');
} else if (converter == 'BigDecimal2DecimalsTypeConverter') {
field.addClass('bigDecimal2Decimals');
} else if (converter == 'BigDecimal3DecimalsTypeConverter') {
field.addClass('bigDecimal3Decimals');
} else if (converter == 'CURPTypeConverter') {
field.addClass('curp');
} else if (converter == 'NumeroPermisoImportacionExportacionTypeConverter') {
field.addClass('numeroPermisoImportacionExportacion');
} else if (converter == 'NumeroPermisoImportacionCNSNSTypeConverter') {
field.addClass('numeroPermisoImportacionCNSNS');
} else if (converter == 'Cantidad15_4TypeConverter') {
field.addClass('cantidad15_4');
} else if (converter == 'CodigoPostalNacionalTypeConverter') {
field.addClass('codigoPostalNacional');
} else if (converter == 'CodigoPostalExtranjeroTypeConverter') {
field.addClass('codigoPostalExtranjero');
// End - VU
} else {
debug('missing converter mapping:' + converter);
}
}
function debug(msg) {
if (window.console && window.console.log) {
window.console.log(msg);
}
}
};
})(jQuery);
// add the date picker control to fields with a class of datepicker
//$(function() {
// if (!$.datepicker)
// return;
//
// $.datepicker.setDefaults({
// showOn : 'button',
// /*buttonImage : contextPath + '/images/main/calendar-icon-20.png',
// buttonImageOnly : true,*/
// buttonText: "",
// showOptions: { direction: "up" },
// changeMonth : true,
// changeYear : true,
// showButtonPanel : true,
// defaultDate : null,
// dateFormat : 'm/d/yy',
// });
//
// $('.datepicker').datepicker();
//});