(function($){
/*
* updateEvent()
* FUNCIÓ“N: lanzar acción de interfaz
* PARAMS: id - del botón para el que lanza la acción de interfaz
* panel - panel donde se encuentran los campos
* regOrigen - número de registro de la ventana origen
*/
$.fn.updateEvent = function(options)
{
var defaults = $.extend({
id: '',
actualizaA: '',
panel: '',
claseM: '',
formulario: ''
},options);
//$(this).loading(msgLoad); // En ventanas modales da problemas REVISAR
var actionOld = $(defaults.formulario).attr('action');
id = defaults.id;
if ($('#'+defaults.id).is(':radio')) {
id = $(this).attr('name');
}
else if ($('#'+defaults.id).is(':checkbox'))
{
id = $(this).attr('id').substr(1,$(this).attr('id').length);
}
var action = 'phrame.php?action=gvHrefreshUI&gvHclass='+defaults.claseM+'&gvHfname='+$(defaults.formulario).attr('id')+'&gvHfrom='+id+'&gvHvalue='+$('#'+id).val()+'&gvHtarget='+defaults.actualizaA;
$(defaults.formulario).prop('action',action);
$(defaults.formulario).prop('target','oculto');
$(defaults.formulario).submit();
$(defaults.formulario).prop('action',actionOld);
};
/*
* iconUpdate()
* FUNCIÓ“N: Activar botones de la barra inferior
* PARAMS: id - del botón para el que se van a activar los campos
* panel - panel donde se encuentran los campos
*/
$.fn.iconUpdate = function(options)
{
var defaults = $.extend({
id: '',
panel: '',
modo: 'on'
},options);
if (defaults.modo == 'on')
{
$('#capa_menuFalso').show();
$('#capa_menuReal').hide();
if ($('#'+defaults.panel+'_imgModificado').length > 0)
{
$('#'+defaults.panel+'_imgModificado').show();
}
}
else {
$('#capa_menuFalso').hide();
$('#capa_menuReal').show();
if ($('#'+defaults.panel+'_imgModificado').length > 0)
{
$('#'+defaults.panel+'_imgModificado').hide();
}
}
}
/*
* fieldsRequired()
* FUNCIÓ“N: Comprobación obligatorios
* PARAMS: id - del botón que comprobará los campos
* panel - panel donde se encuentran los campos
*/
$.fn.fieldsRequired = function(options)
{
var defaults = $.extend({
id: '',
panel: '',
estadoPanel: 'R'
},options);
var correcto = 'correcto';
var fields = '';
if ((defaults.panel == 'edi') || (defaults.panel == 'ediDetalle'))
{
id = $('div[id*=pag_'+defaults.panel+'_]').attr('id');
sufijo = id.split('_')[2];
if (defaults.estadoPanel == 'I')
{
sufijo = $('div[data-gvhpagina*='+defaults.panel+'_ins]').attr('id').split('_')[2];
}
if (($('input[type=hidden]').filter('[id*=est_'+defaults.panel+']').val() != 'nada') || (defaults.estadoPanel != 'R'))
{
$(('input[id*='+defaults.panel+'_'+sufijo+']:required')).map(function() {
if ($(this).val() == '')
{
label = $("label[for='"+$(this).attr('id')+"']").text();
label = label.substring(1,label.length-1);
fields += '- '+label+'
';
correcto = 'incorrecto';
$(this).addClass('fieldRequired');
}
})
}
}
else
{
$('input[id*=est_'+defaults.panel+']').map(function()
{
if ($(this).val() != 'nada')
{
sufijo = $(this).attr('id').split('_')[2];
ini = "cam___";
if ($(this).val() == 'insertada')
ini = 'ins___';
$('input:required').filter('[id$='+defaults.panel+'_'+sufijo+']').filter('[id^='+ini+']').map(function() {
if ($(this).val() == '')
{
label = $("label[for='"+$(this).attr('id')+"']").text();
label = label.substring(1,label.length-1);
fields += '- '+label+'
';
correcto = 'incorrecto';
$(this).addClass('fieldRequired');
}
})
}
});
}
return fields;
}
/*
* changeState()
* FUNCIÓ“N: Marcará el estado del registro: insertada/modificada
* PARAMS: id - del campo
* estado - 'insertada'/'modificada'
*/
$.fn.changeState = function(options)
{
var defaults = $.extend({
id: '',
panel: '',
estado: 'nada'
},options);
idEstado = 'est_'+defaults.id.split('___')[2];
$('#'+idEstado).val(defaults.estado);
if (defaults.estado == 'insertada')
{
$('div[id=P_'+defaults.panel+']').attr('data-gvhestadopanel','I');
}
else
{
$('div[id=P_'+defaults.panel+']').attr('data-gvhestadopanel','W');
}
$('#'+defaults.panel).iconUpdate({
id: $('#'+defaults.panel).attr('id'),
panel: defaults.panel
});
var claseM = $('#claseManejadora___'+defaults.panel).val();
var pagActual = $('input[id=pagActual___'+claseM+']').val();
var rowsPag = 0;
var numReg = 0;
var indiceJSON = 0;
panelJSON = defaults.panel;
if (defaults.panel == 'lisDetalle')
panelJSON = 'lis';
else if (defaults.panel == 'ediDetalle')
panelJSON = 'edi';
raizJSON = datosJSON[claseM][panelJSON];
if (raizJSON['gvhJSON'] == 'true')
{
regJSON = pagActual;
if (($('input:radio[id='+defaults.id+']').length) > 0)
{
name = $('input:radio[id='+defaults.id+']').attr('name');
campo = name.split('___')[1];
}
else
{
campo = defaults.id.split('___')[1];
}
if ((defaults.panel == 'lis') || (defaults.panel == 'lisDetalle'))
{
rowsPag = raizJSON['panel']['rowsPag'];
regCheck = defaults.id.split('___')[2].split('_')[1];
regJSON = (rowsPag*pagActual)+parseInt(regCheck);
}
raizJSON['data'][regJSON]['gvhJS_fields'][campo]['value'] = unescape(encodeURIComponent($('#'+defaults.id).val()));
try
{
valueJSONDecode = unescape(encodeURIComponent($('#'+defaults.id).val()));
}
catch(e)
{
valueJSONDecode = $('#'+defaults.id).val();
}
raizJSON['data'][regJSON]['gvhJS_fields'][campo]['value'] = valueJSONDecode;
raizJSON['data'][regJSON]['gvhJS_state'] = defaults.estado;
}
actualizaA = $('#'+defaults.id).attr('data-gvhActualizaA');
if (($('#'+defaults.id).attr('data-gvhActualizaA')))
{
$(this).loading(msgLoad);
formulario = $('#'+defaults.id).closest('form');
$('#'+defaults.id).updateEvent({
id: defaults.id,
actualizaA: actualizaA,
panel: panel,
claseM: claseM,
formulario: formulario
},options);
}
}
/*
* select2.defaults()
* FUNCIÓ“N: Propiedades por defecto de las listas tipo select2
*/
/*
width: 'auto',
closeOnSelect: true,
placeholder: 'Selecciona una opción',
allowClear: true,
minimumResultsForSearch: 15,
containerCssClass: 'tpx-select2-container',
dropdownCssClass: 'tpx-select2-drop'*/
$.fn.select2.defaults = $.extend($.fn.select2.defaults, {
width: 'auto',
closeOnSelect: true, // múltiple - se cierra tras la selección
placeholder: 'Selecciona una opción',
containerCssClass: 'tpx-select2-container',
dropdownCssClass: 'tpx-select2-drop'
});
/*
* MÁSCARAS (librería RobinHerbots.jquery.inputmask.bundle.js)
*/
// Expresiones regulares
$(':input[data-gvhRegExp]').each(
function()
{
var mascara = $(this).attr('data-gvhRegExp');
switch(mascara)
{
case 'email':
case 'ip':
case 'url':
$(this).inputmask(mascara);
break;
default:
//$(this).inputmask('Regex', { regex: "[a-zA-Z0-9._%-]+@[a-zA-Z0-9-]+\\.[a-zA-Z]{2,4}" });
$(this).inputmask('Regex', {regex: mascara});
break;
}
}
);
/*
* validateDate()
* FUNCIÓ“N: Comprobar que la fecha sea correcta
* PARAMS: fecha - fecha introducida
* separador
*/
$.fn.validateDate = function(options)
{
var defaults = $.extend({
id: '',
fecha: '',
separador: '/',
mascara: 'dd/mm/yyyy'
},options);
separador = defaults.separador;
if (defaults.mascara.indexOf('/') != -1)
separador = '/';
if (defaults.mascara.indexOf('-') != -1)
separador = '-';
if ((defaults.mascara == 'dd/mm/yyyy') || (defaults.mascara == 'dd-mm-yyyy'))
var dateDDMMYYYRegex = /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](18|19|20)\d\d$/;
if ((defaults.mascara == 'mm/dd/yyyy') || (defaults.mascara == 'mm-dd-yyyy'))
var dateDDMMYYYRegex = /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](18|19|20)\d\d$/;
if (defaults.fecha != '')
{
correcto = defaults.fecha.match(dateDDMMYYYRegex);
if (correcto)
{
fecha = defaults.fecha.split(separador);
dia = fecha[0];
mes = fecha[1];
anio = fecha[2];
var error = 0;
if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31) {
correcto = false;
}
if (mes == 2) { // bisiesto
var bisiesto = (anio % 4 == 0 && (anio % 100 != 0 || anio % 400 == 0));
if (dia > 29 || (dia==29 && !bisiesto)) {
correcto = false;
}
}
}
if (!correcto) {
$('#'+defaults.id).showMessage('gvhlang_msj900','error');
$('#'+defaults.id).val('');
}
return correcto;
}
}
$.fn.changeFieldMask = function(options)
{
var defaults = $.extend({
id: '',
type: 'input'
},options);
id = defaults.id;
vId = id.split('___');
panel = $('#'+id).attr('data-gvhPanelOn');
estado = '';
edicion = 'off';
cambios = false;
if ((vId[0] == 'ins') || (vId[0] == 'cins'))
{
estado = 'insertada';
edicion = 'on';
cambios = true;
}
else if ((vId[0] == 'cam') || (vId[0] == 'ccam'))
{
estado = 'modificada';
edicion = 'on';
idAnt = id.replace('cam___','ant___');
if (edicion == 'on')
{
valor = $('#'+id).val();
valorAnt = $('#'+idAnt).val();
if (defaults.type == 'select')
{
// Es una lista
valorAnt = $('#l'+id).val();
vArrayAnt = valorAnt.split(",");
if (vArrayAnt.length > 1)
{
// lista múltiple
posicion = valorAnt.indexOf(valor);
if (posicion < 0)
cambios = true;
}
else if (valor != valorAnt) {
cambios = true;
}
}
else if (valor != valorAnt) {
cambios = true;
}
}
}
if (edicion == 'on')
{
if (cambios)
{
$(this).changeState({
id: id,
panel: panel,
estado: estado
});
}
}
else if (panel == 'fil')
{
if (($('#'+id).attr('data-gvhActualizaA')))
{
formulario = $('#'+id).closest('form');
$('#'+id).updateEvent({
id: id,
actualizaA: $('#'+id).attr('data-gvhActualizaA'),
panel: panel,
claseM: $('#'+id).attr('data-gvhClaseManejadora'),
formulario: formulario
});
}
}
if ($('#l'+id).length > 0)
{
$('#l'+id).val($('#'+id).val());
}
}
})(jQuery);
/**********************************************************************************************************************************************
* *
* EVENTOS DESDE EL DOM *
* *
***********************************************************************************************************************************************/
$(':input').not('[data-inputmask]').on({
change: function()
{
id = $(this).attr('id');
$(this).changeFieldMask({
id: id,
type: 'input'
})
}
});
$('textarea').on({
change: function()
{
id = $(this).attr('id');
$(this).changeFieldMask({
id: id,
type: 'textarea'
})
}
});
$('select').on({
change: function()
{
id = $(this).attr('id');
$(this).changeFieldMask({
id: id,
type: 'select'
})
}
});
$(':checkbox').not('[id^=check_]').on({
change: function()
{
id = $(this).attr('id');
$(this).changeFieldMask({
id: id,
type: 'checkbox'
})
}
});
/* **********************************
/* Checkbox copia valor a campo oculto
* ¿Desaparecerá cuando cambie la forma de comunicación con negocio?
************************************/
$('input[type=checkbox]').filter('[id^=ccam_]').on({
click: function()
{
idOculto = 'cam'+$(this).attr('id').substring(4,$(this).attr('id').length);
if ($(this).is(':checked'))
{
valueCheck = $(this).attr('data-gvhValueCheck');
$('input[id='+idOculto+']').val(valueCheck);
}
else
{
valueUnCheck = $(this).attr('data-gvhValueUnCheck');
$('input[id='+idOculto+']').val(valueUnCheck);
}
}
}),
$('input[type=checkbox]').filter('[id^=cins_]').on({
click: function()
{
idOculto = 'hins'+$(this).attr('id').substring(4,$(this).attr('id').length);
if ($(this).is(':checked'))
{
valueCheck = $(this).attr('data-gvhValueCheck');
$('input[id='+idOculto+']').val(valueCheck);
}
else
{
valueUnCheck = $(this).attr('data-gvhValueUnCheck');
$('input[id='+idOculto+']').val(valueUnCheck);
}
}
});
/*
* ACCIONES DE INTERFAZ
*/
/*$('*[data-gvhActualizaA]').map(function()
{
$(this).on({
change: function()
{
if($(this).attr('data-gvhActualizaA'))
{
$(this).updateEvent({
id: $(this).attr('id'),
actualizaA: $(this).attr('data-gvhActualizaA'),
panel: $(this).attr('data-gvhPanelOn'),
claseM: $(this).attr('data-gvhClaseManejadora'),
formulario: $(this).closest('form')
});
}
}
});
});
*/
var fileCollection = new Array();
$('input:file').on('change',function(e)
{
var files = e.target.files;
var count = files.length;
var tmp_files = '';
var panel = $(this).attr('data-gvhPanelOn');
var claseM = $(this).attr('data-gvhClaseManejadora');
var iter = $(this).attr('data-gvhIterActual');
var id = $(this).attr('id');
$('span[id^=toUpload_'+id+']').filter('[data-gvhPanelOn='+panel+']').filter('[data-gvhClaseManejadora='+claseM+']').map(function()
{
$(this).empty();
idToUpload = $(this).attr('id');
});
$('#'+idToUpload).empty();
$('#'+idToUpload).append("