';
$('#modal').modal('show');
}
//obtener nodo que esta atendiedo
function nodo()
{
//llamada Ajax...
return ajaxCall(httpMethod="GET",
uri="/action/app/security/nodo",
divResponse=null,
divProgress=null,
formName=null,
afterResponseFn=null,
onErrorFn=null);
}
var intervalTimer;
var disabledTimer = false;
/**
* Muestra el tiempo restante del OTP
*/
function displayTimeLeftOTP (timeLeft){ //displays time on the input
var minutes = Math.floor(timeLeft / 60);
var seconds = timeLeft % 60;
if(minutes<10) minutes = '0' + minutes;
if(seconds<10) seconds = '0' + seconds;
var displayString = minutes + ':' + seconds;
document.getElementById("tiempoexpira").textContent = 'Su clave expira en: ' + displayString;
document.getElementById("reenviaclave").style.display='none';
}
/**
* calcula el tiempo restante del OTP
*/
function timerOTP()
{
if(!disabledTimer) {
var seconds = document.getElementById("expiraen").value;
var remainTime = Date.now() + (seconds * 1000);
displayTimeLeftOTP(seconds);
clearInterval(intervalTimer);
//var ctv = 0;
intervalTimer = setInterval(function() {
timeLeft = Math.round((remainTime - Date.now()) / 1000);
if (timeLeft < 0) {
seconds = 0; //colocar en cero para reiniciar contador
clearInterval(intervalTimer);
document.getElementById("tiempoexpira").style.display='none';
document.getElementById("reenviaclave").style.display='';
return;
}
displayTimeLeftOTP(timeLeft);
//actualizar el tiempo de inactivad por si la clava tarde en vencerse mas de lo que dura la sesion
_idleSecondsCounter=0;
/*
ctv++;
if(ctv>=60) {
ctv=0;
nodo();
}
*/
}, 1000);
}
}
/**
* Invoca a un action que coloca en sesio la ruta del action y redireccion al action /security/homr
* @param path nombre del directorio (la funcion asume que dentro del directorio existe template.htm)
* @param params Query String si lo hubiera
*/
function redirectToAction(path, params, templateName)
{
if(path.indexOf('/action')==-1) {
if(path=='exit') {
params = '';
path = '/action/web/security/exit'
} else
path = '/action/web/business/' + path;
}
if(params!=null)
params = '?' + params;
else
params = '';
//llamada Ajax...
ajaxCall(httpMethod="GET",
uri="/action/web/security/redirectto?path=" + path + params,
divResponse=null,
divProgress="status",
formName=null,
afterResponseFn=null,
onErrorFn=null);
}
/**
* Password strength indicator
**/
function passwordStrength(password, id) {
var desc = [{'width':'0px'}, {'width':'25%'}, {'width':'50%'}, {'width':'75%'}, {'width':'100%'}, {'width':'100%'}, {'width':'100%'}];
var descClass = ['', 'progress-bar-danger', 'progress-bar-danger', 'progress-bar-danger', 'progress-bar-success', 'progress-bar-success', 'progress-bar-success'];
var score = 0;
//if password has both lower and uppercase characters give 1 point
if ((password.match(/[a-z]/)) && (password.match(/[A-Z]/))) {score++; }
//if password has at least one number give 1 point
if ( password.match(/[0-9]/)) {score++; }
//if password has at least one special caracther give 1 point
if ( password.match(/.[~!@#\$%*\(\)_\-\+=\{\}\[\]\|:;,\.\?/]/) ) {score++; }
//si no se encuentra entre los siguientes caracteres bajar puntuacion
if ( password.match(/.[^A-Za-z0-9~!@#\$%*\(\)_\-\+=\{\}\[\]\|:;,\.\?/]/) ) {score = score-1; }
//no se pueden repetir 3 caracteres consecutivos
if ( password.match(/(.)\1\1/) ) {score = score-1; }
//if password bigger than 8 give another 1 point
if (password.length >= 8 && score>=3) {score++; }
if(score<0)
score = 1;
if(score>6)
score = 0;
// display indicator
$(id).removeClass(descClass[1])
$(id).removeClass(descClass[2])
$(id).removeClass(descClass[3])
$(id).removeClass(descClass[4])
$(id).removeClass(descClass[5])
$(id).removeClass(descClass[6])
$(id).removeClass(descClass[score-1]).addClass(descClass[score]).css(desc[score]);
}
//ejecutar consulta
function menuHeader()
{
//llamada Ajax...
return ajaxCall( httpMethod="GET",
uri="/action/web/security/menu/header",
divResponse="header",
divProgress="status",
formName=null,
afterResponseFn=null,
onErrorFn=null);
}
//ejecutar consulta
function menuFooter()
{
//llamada Ajax...
return ajaxCall( httpMethod="GET",
uri="/action/web/security/menu/footer",
divResponse="footer",
divProgress="status",
formName=null,
afterResponseFn=dropupMenu,
onErrorFn=null);
}
var paddingChatIcon = '';
//configuracion del menu iconografico del pie de pagina
function dropupMenu() {
if(paddingChatIcon=='') {
if(document.getElementById("chat-icon-footer")!=null) {
paddingChatIcon = $('#chat-icon-footer').css('padding-bottom');
if(document.getElementById("chat-icon-footer").paddingBottom!=null)
paddingChatIcon = document.getElementById("chat-icon-footer").paddingBottom;
}
}
$( "#dropup_menu_click" ).click(function() {
$( "#dropup_menu_icons" ).slideToggle( "slow", function() {
if(document.getElementById("chat-icon-footer")!=null) {
var x = $( "#dropup_menu_icons" ).height() + $( "#dropup_menu_icons_ini" ).height() + $( "#chat-icon-footer" ).height() - 30;
document.getElementById("chat-icon-footer").style.paddingBottom = x + 'px';
}
if ( document.getElementById("arrow_icon").className=='fas fa-arrow-down' ) {
document.getElementById("arrow_icon").className='fas fa-arrow-up';
if(document.getElementById("chat-icon-footer")!=null)
document.getElementById("chat-icon-footer").style.paddingBottom=paddingChatIcon;
} else {
document.getElementById("arrow_icon").className='fas fa-arrow-down';
}
});
});
$( "#principal_container" ).click(function() {
$( "#dropup_menu_icons" ).slideUp( "slow");
if(document.getElementById("chat-icon-footer")!=null)
document.getElementById("chat-icon-footer").style.paddingBottom=paddingChatIcon;
document.getElementById("arrow_icon").className='fas fa-arrow-up';
});
$( "#navbar_header" ).click(function() {
$( "#dropup_menu_icons" ).slideUp( "slow");
if(document.getElementById("chat-icon-footer")!=null)
document.getElementById("chat-icon-footer").style.paddingBottom=paddingChatIcon;
document.getElementById("arrow_icon").className='fas fa-arrow-up';
});
$('#principal_container').on({ 'touchstart' : function(){
$( "#dropup_menu_icons" ).slideUp( "slow");
if(document.getElementById("chat-icon-footer")!=null)
document.getElementById("chat-icon-footer").style.paddingBottom=paddingChatIcon;
document.getElementById("arrow_icon").className='fas fa-arrow-up';
} });
$('#principal_container').on({ 'touchstart' : function(){
$( "#dropup_menu_icons" ).slideUp( "slow");
if(document.getElementById("chat-icon-footer")!=null)
document.getElementById("chat-icon-footer").style.paddingBottom=paddingChatIcon;
document.getElementById("arrow_icon").className='fas fa-arrow-up';
} });
}
var iOS = ( navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false );
var android = ( navigator.userAgent.match(/Android/i) ? true : false );
//asigna el tiempo en segundos que dura la sesion
function setTimeOut(to) {
IDLE_TIMEOUT = to;
}
//reinicia el contador de segundos cuando se toque la pantalla
var _idleSecondsCounter = 0;
document.onclick = function() {
_idleSecondsCounter = 0;
};
document.onkeypress = function() {
_idleSecondsCounter = 0;
};
document.onkeydown = function() {
_idleSecondsCounter = 0;
};
/**
* Verifica que la sesion sigue activa
*/
function CheckIdleTime() {
_idleSecondsCounter++;
if (_idleSecondsCounter >= IDLE_TIMEOUT && timeOut) {
document.location.href = "/bcm/action/web/security/sessiontimeout";
}
}
/**
* Permite obtener el tiempo que durara la sesion
* definida en el servidor
*/
function getTimeOut()
{
if(timeOut) {
//llamada Ajax...
ajaxCall(httpMethod="GET",
uri="/action/app/security/timeout",
divResponse=null,
divProgress="status",
formName=null,
afterResponseFn=null,
onErrorFn=null);
}
}
/**
* Mostrar pantalla de error
*/
function errorResponse() {
if($("#asistentevirtual")!=null)
$("#asistentevirtual").modal('hide');
paddingTop = document.body.style.paddingTop;
$('#error-response').load("/bcm/action/error/general2 #container-error" , function( response, status, xhr ) {
if ( status == "error" ) {
document.location.href = "/bcm/action/error/general2";
} else {
document.body.style.paddingTop='0px';
document.getElementById("error-response").style.display='';
}
});
var divNeg = document.getElementById("container");
if(divNeg!=null)
divNeg.style.display='none';
else
document.location.href = "/bcm/action/error/general2";
var divFoo = document.getElementById("myFooter");
if(divFoo!=null)
divFoo.style.display='none';
}
/**
* Mostrar la pagina anterior
*/
var paddingTop = "";
function goBackContainer(r) {
var divNeg = document.getElementById("container");
if(divNeg==null)
document.location.href = "/bcm/index.htm";
else {
divNeg.style.display='';
document.body.style.paddingTop=paddingTop;
document.getElementById("error-response").style.display='none';
if(r!=null)
redirectToAction('/action/web/security/index');
var divFoo = document.getElementById("myFooter");
if(divFoo!=null)
divFoo.style.display='';
}
}
////////////////////////FUNCIONES DE LA APLICACION WEB////////////////////////
////////////////////////FUNCIONES DE DINAMICA////////////////////////
//codigo de estatus de ajax
var S_READY = 4;
//separadores de decimales y miles usados por el servidor
var _server_dsep = ",";
var _server_tsep = ".";
//formato para fechas
var _server_formatDate = "dd-MM-yyyy";
/**
* Crear objeto XmlHttpRequest de manera
* portable entre browsers IE y FF. Retorna
* una referencia al objeto listo para usarse
* en comunicacion Ajax
*/
function getHttpObject()
{
var obj = null;
if (window.XMLHttpRequest) {
obj = new XMLHttpRequest();
} else if (window.ActiveXObject) {
obj = new ActiveXObject("Microsoft.XMLHTTP");
}
return obj;
}
/**
* Invocar servicio Ajax
* httpMethod: String GET o POST
* uri: Path del servicio, no incluir el contexto. Ejemplo: /action/xxxx/yyyy
* divResponse: ID del DIV donde se muestra la respuesta en caso de que sea HTML
* divProgress: ID del DIV a mostrar mientras se ejecuta la llamada
* formName: Nombre del formulario en caso que httpMethod sea igual a POST
* 2014-06-23: Permite añadir mas de un formulario separado por punto y coma (;) Ejemplo: formName="form3;form5;form6"
* afterResponseFn: Apuntador a funcion a ejecutar despues de mostrar una respuesta HTML
* onErrorFn: Apuntador a funcion a ejecutar en caso de error http 500, 403, 404, 401, etc.
* Puede utilizarse para restaurar los DIVs que se escondieron antes de invocar
* esta funcion.
*/
function ajaxCall(httpMethod, uri, divResponse, divProgress, formName, afterResponseFn, onErrorFn)
{
//mostrar indicador de progreso
var progress = document.getElementById(divProgress);
if (progress!=null)
progress.style.display='';
else {
//mas de una barra de progreso
if(divProgress!= null && divProgress.indexOf(";")!=-1) {
var fnp = divProgress.split(";");
for (var i = 0; i < fnp.length; i++) {
var prog = document.getElementById(fnp[i])
if (prog!=null)
prog.style.display='';
}
}
}
//ensamblar el URL
var server = "https://www5.bancaribe.com.ve:443";
var url = server + "/bcm" + uri;
if (url.indexOf("?")>0)
url = url + "&random=" + Math.random();
else
url = url + "?random=" + Math.random();
//ensamblar formulario
var data = null;
if (formName!=null) {
//mas de un formulario? 2014-06-23
if(formName.indexOf(";")!=-1) {
var fn = formName.split(";");
for (var i = 0; i < fn.length; i++) {
data = data + "&" + getFormValues(fn[i]);
}
} else
data = getFormValues(formName);
}
//send request
var http = getHttpObject();
//manejador de respuesta AJAX
http.onreadystatechange = function ()
{
if (http.readyState == S_READY)
{
var contentType = http.getResponseHeader("Content-type");
var text = http.responseText;
//verificacion de sesion de seguridad activa (redirect a login)
if (text.indexOf("_ajax_VE8374yz_")>0)
{
window.location="/bcm/index.htm";
}
else
{
//apagar indicador de progreso
if (progress!=null)
progress.style.display='none';
else {
//pagar mas de una barra de progreso
if(divProgress!= null && divProgress.indexOf(";")!=-1) {
var fnp = divProgress.split(";");
for (var i = 0; i < fnp.length; i++) {
var prog = document.getElementById(fnp[i]);
if (prog!=null)
prog.style.display='none';
}
}
}
//verificacion de error y seguridad
if (http.status == 500)
errorResponse();
else if (http.status == 403)
alertBox("Acceso denegado.","Aceptar");
else if (http.status == 404)
alertBox("El servicio solicitado no esta disponible.","Aceptar");
else if (http.status == 401)
alertBox("El servicio solicitado requiere comunicación vía SSL.","Aceptar");
else if (http.status == 406)
window.location="/bcm/index.htm";
else
{
//tratar caso cuando no hay comunicacion con el servidor
if (contentType==null || (http.status !=200 && http.status!=400)) {
//indicador de progreso
if (progress!=null)
progress.style.display='';
else {
//pagar mas de una barra de progreso
if(divProgress!= null && divProgress.indexOf(";")!=-1) {
var fnp = divProgress.split(";");
for (var i = 0; i < fnp.length; i++) {
var prog = document.getElementById(fnp[i]);
if (prog!=null)
prog.style.display='';
}
}
}
if (typeof errorConnection !== 'undefined') {
errorConnection();
}
return false;
}
//ok - responder de acuerdo al tipo de contenido
if( contentType.indexOf("text/javascript")>=0 )
{
eval(text);
}
else
{
if (divResponse!=null) {
var div = document.getElementById(divResponse);
div.innerHTML = text;
div.style.display='';
}
if (http.status == 200 && afterResponseFn!=null)
afterResponseFn();
}
}
//invocar callback en caso de error
if (http.status != 200) {
if (onErrorFn!=null)
onErrorFn();
}
}
}
};
http.open(httpMethod, url, true);
http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
http.send(data);
return false;
}
/**
* Limpiar los controles de un formulario,
* los comboBox se ubican en el 1er elemento, el
* atributo value del resto de los controles se
* pone en "" vacio. El focus se pone en el 1er
* control activo.
* formName: nombre del formulario
*/
function clearForm(formName)
{
var f = document.forms[formName];
for (var i=0;i");
f.document.write("
");
f.document.write("");
f.document.write("Cargando...");
f.document.write("");
f.document.close();
f.location = url;
}
//patch 2013-02-27
if (html!=null) {
var f = window.frames[objID + "_iframe"];
f.document.open();
f.document.write(html);
f.document.close();
}
if (centerPage==false)
moveBox(obj, boxdiv);
boxdiv.style.display='block';
//parche 20171111
if(pickControl!=null) {
if(centerPage)
overlayHeight(0);
else {
var h1 = (parseInt(boxdiv.style.top) + height);
if(h1>pageHeight())
h1 = (h1-pageHeight())*2;
else
h1 = 0;
overlayHeight(h1);
}
} else
overlayHeight(0);
} else
boxdiv.style.display='none';
return false;
}
boxdiv = document.createElement('div');
boxdiv.className = "dialogbox";
boxdiv.setAttribute('id', newID);
boxdiv.style.display = 'none';
boxdiv.style.position = 'absolute';
//parche 20171111
if(centerPage==true)
boxdiv.style.position = 'fixed';
boxdiv.style.width = width + 'px';
boxdiv.style.height = height + 'px';
boxdiv.style.backgroundColor = 'white';
boxdiv.style.padding = "0px";
//si se desea que el DIV este alineado en el centro de la pagina
if (centerPage==true) {
boxdiv.style.top = (pageHeight() - height) / 2 + 'px';
boxdiv.style.left = (pageWidth() - width) / 2 + 'px';
}
contents = document.createElement('iframe');
if (scrollActive==true)
contents.scrolling = 'yes';
else
contents.scrolling = 'no';
contents.style.overflowX = 'auto';
contents.style.overflowY = 'auto';
contents.frameBorder = '0';
contents.style.width = width + 'px';
contents.style.height = height + 'px';
contents.marginHeight = 0;
contents.marginWidth = 0;
contents.setAttribute('id', objID + "_iframe");
contents.setAttribute('name', objID + "_iframe");
boxdiv.appendChild(contents);
document.body.appendChild(boxdiv);
if (url!=null) {
var f = window.frames[objID + "_iframe"];
f.document.open();
f.document.write("
");
f.document.close();
f.location = url;
}
//patch 2013-02-27
if (html!=null) {
var f = window.frames[objID + "_iframe"];
f.document.open();
f.document.write(html);
f.document.close();
}
/* soporte para lightbox */
overlay.style.display='block';
boxdiv.style.zIndex = 1002;
/* ---- */
if (centerPage==false)
moveBox(obj, boxdiv);
boxdiv.style.display = 'block';
//parche 20171111
if(pickControl!=null) {
if(centerPage)
overlayHeight(0);
else {
var h1 = (parseInt(boxdiv.style.top) + height);
if(h1>pageHeight())
h1 = (h1-pageHeight())*2;
else
h1 = 0;
overlayHeight(h1);
}
} else
overlayHeight(0);
return false;
}
/**
* Esconde un DIV + IFRAME abierto con la
* funcion showBox()
* objID: ID del DIV que sera ocultado
*/
function closeBox(objID)
{
document.getElementById(objID + "_popup").style.display = "none";
/* soporte para lightbox */
lightBoxOff();
}
/**
* Retorna TRUE si el navegador
* es Internet Explorer
*/
function isIE() {
if (navigator.appName.indexOf("Explorer")>0)
return true;
else
return false;
}
/**
* Retorna TRUE si el valor representa una fecha
* de lo contrario retorna FALSE. Si el anio viene con 2 digitos
* y en menor que 30, se asume el 20XX, de lo contrario 19XX.
* value: String que representa una fecha con formato dd-mm-yyyy o dd/mm/yyyy
*/
function isValidDate(value)
{
var d = convertDate(value);
if (d==null)
return false;
else
return true;
}
/**
* Retorna un objeto DATE si el valor representa una fecha
* de lo contrario retorna NULL. Si el anio viene con 2 digitos
* y es menor que 30, se asume el 20XX, de lo contrario 19XX.
* value: String que representa una fecha con formato dd-mm-yyyy o dd/mm/yyyy
*/
function convertDate(value)
{
value = value.replace(new RegExp("/", "g") ,"-");
var values = value.split("-");
if (values.length!=3)
return null;
var day = values[0];
var month = values[1];
var year = values[2];
if (year.length!=2 && year.length!=4)
return null;
if (year.length==2 && parseInt(year)<30)
year = "20" + year;
else if (year.length==2 && parseInt(year)>=30)
year = "19" + year;
month = month-1;
var dteDate = new Date(year,month,day);
var r = ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
if (r)
return dteDate;
else
return null;
}
/**
* Mostrar un Calendario debajo y alineado
* a la izquierda del elemento designado
* por el parametro objID. El elemento debe
* ser un textbox.
* objID: ID del elemento en donde sera colocada la fecha seleccionada
* lboundID: ID del elemento que contiene una fecha menor que sera usada para
* no permitir seleccionar fechas menores en el calendario a la fecha en el elemento objID,
* permite nulos cuando no se requiere.
* uboundID: ID del elemento que contiene una fecha mayor que sera usada para
* no permitir seleccionar fechas mayores en el calendario a la fecha en el elemento objID,
* permite nulos cuando no se requiere.
* isMovil: true para mostrar centrado en la pantalla del dispositivo
* calUrl: Ruta del action por si se quiere usar un calendario alternativo al default. Ejem: /action/mycal
*/
function calendarOpen(objID, lboundID, uboundID, isMovil, calUrl)
{
pickControl = objID;
var d = document.getElementById(objID).value;
var url = "/bcm/action/calendar?id=" + objID + "&date=" + d;
if (calUrl!=null)
url = "/bcm" + calUrl + "?id=" + objID + "&date=" + d;
if (lboundID != null)
url = url + "&date.lbound=" + document.getElementById(lboundID).value;
if (uboundID != null)
url = url + "&date.ubound=" + document.getElementById(uboundID).value;
var elem = document.getElementById(objID);
if ( isMovil!=null ) {
//si se usa bootstrap
if(elem.className!=null && elem.className=='form-control')
showBox(objID, 250 ,210, url, true);
else
showBox(objID, 240,154, url, true);
} else {
//si se usa bootstrap
if(elem.className!=null && elem.className=='form-control')
showBox(objID, 250 ,233, url, false, false);
else
showBox(objID, 240 ,154, url, false, false);
}
}
/**
* Retorna valor seleccionado en el calendario
* poniendolo dentro del textbox asociado y
* cierra el calendario
* objID: ID del textbox asociado al calendario
* sdate: String que representa una fecha en formato dd-mm-yyyy
*/
function calendarReturnValue(objID, sdate)
{
document.getElementById(objID + "_popup").style.display = "none";
document.getElementById(objID).value = sdate;
/* soporte para lightbox */
lightBoxOff();
return false;
}
/**
* Filtrar caracteres no permitidos en campos fecha, se usa
* de esta manera: document.forms1.text1.onkeypress = keypressDate
* en el evento onload del body.
*/
function keypressDate(e)
{
var mask = "0123456789-";
var keyCode = e ? e.which : window.event.keyCode;
var key = String.fromCharCode(keyCode);
if (mask.indexOf(key)==-1 && keyCode != 8 && keyCode!=0 && keyCode!=13)
return false;
}
/**
* Filtrar caracteres no permitidos en campos enteros, se usa
* de esta manera: document.forms1.text1.onkeypress = keypressInteger
* en el evento onload del body.
*/
function keypressInteger(e)
{
var mask = "0123456789";
var keyCode = e ? e.which : window.event.keyCode;
var key = String.fromCharCode(keyCode);
if (mask.indexOf(key)==-1 && keyCode != 8 && keyCode!=0 && keyCode!=13)
return false;
}
/**
* Filtrar caracteres no permitidos en campos con decimales, se usa
* de esta manera: document.forms1.text1.onkeypress = keypressDouble
* en el evento onload del body. Solo acepta el punto "." como separador
* de decimales.
*/
function keypressDouble(e)
{
var mask = "0123456789.";
var keyCode = e ? e.which : window.event.keyCode;
var elem = e ? e.target : window.event.srcElement;
var key = String.fromCharCode(keyCode);
if (mask.indexOf(key)==-1 && keyCode != 8 && keyCode!=0 && keyCode!=13)
return false;
if (key=="." && elem.value.indexOf(".") > -1)
return false;
}
/**
* Retorna la trama requerida para hacer un POST del
* formulario indicado usando Ajax
* formName: Nombre del formulario
*/
function getFormValues(formName)
{
returnString ="";
if( formName == "" ) return returnString;
formElements=document.forms[formName].elements;
for ( var i=formElements.length-1; i>=0; --i ) {
if (formElements[i].name!=""){
//añade elementos radio y checkbox
if (formElements[i].type=="checkbox" && !formElements[i].checked){
//este checkbox si no ha sido seleccionado es ignorado
}else{
if (formElements[i].type=="radio" && !formElements[i].checked){
//este radio si no ha sido seleccionado es ignorado
}
else {
var value = formElements[i].value;
//NumericInput control? quitar formato de mascara antes de postear
if (formElements[i].alt!=null && formElements[i].alt=="numeric") {
value = value.replace(/[^\d,.-]/g,'');
if(_server_dsep!=null && _server_dsep=='.')
value = value.replace(/,/g ,"");
else {
value = value.replace(/\./g ,"");
value = value.replace(/,/g ,".");
}
}
//chrome y safari dispositivo movil
if (formElements[i].type!=null && formElements[i].type=="date" && value!=null && value!="") {
var s = value.split("-");
var d = s[2]+'-'+s[1]+'-'+s[0];
value = d;
}
value = encodeURI(value);
value = value.replace(new RegExp("&", "g") ,"%26");
//patch 2013-01-24
value = value.replace(new RegExp("\\+", "g") ,"%2B");
returnString = returnString + formElements[i].name + "=" + value + "&";
}
}
}
}
returnString = returnString.substring(0, returnString.length - 1);
return returnString;
}
/**
* Retorna checkboxes o radiobutton con la propiedad
* checked = true
* radioName: Nombre del checkbox o radiobutton
* radioValue: Valor del checkbox o radiobutton
* formName: Nombre del formulario
*/
function setCheckboxValue(radioName,radioValue,formName)
{
if( formName == "") {
//si formName es nulo no hace nada
return;
}else{
formElements=document.forms[formName].elements;
}
for ( var i=formElements.length-1; i>=0; --i ) {
if (formElements[i].name == radioName && (formElements[i].type=="radio" || formElements[i].type=="checkbox") ){
//añade elementos radio y checkbox
if (formElements[i].value==radioValue){
formElements[i].checked = true;
return;
}
}
}
}
/**
* Retorna combos con la propiedad
* select = true
* comboName: Nombre del combo
* comboValue: Valor del combo
* formName: Nombre del formulario
*/
function setComboValue(comboName,comboValue,formName)
{
var combo = document.forms[formName].elements[comboName];
var cantidad = combo.length;
for (var i = 0; i < cantidad; i++) {
if (combo[i].value == comboValue) {
combo[i].selected = true;
}
}
}
/**
* Remplazar el valor "," por "." en un elemento que contiene
* un valor de tipo decimal.
* elem: Elemento que contiene el valor a ser remplazado
*/
function replaceDecimal(elem)
{
var value = elem.value;
elem.value = value.replace(new RegExp(",", "g") ,".");
}
/**
* Funciones de soporte para los grid
* contiene funciones para la vista pagina,
* panel de control, regresar a la pagina indicada,
* y ordenamiento por columnas.
*/
//variables de control
var lastPage=0;
var currentPage=0;
var recordsFound=0;
/**
* Ir a la primera pagina
*/
function pageFirst()
{
currentPage = 1;
viewPage();
}
/**
* Ir a la ultima pagina
*/
function pageLast()
{
currentPage = lastPage;
viewPage();
}
/**
* Ir a la pagina anterior
*/
function pagePrev()
{
if (currentPage>1) {
currentPage=currentPage - 1;
viewPage();
}
}
/**
* Ir a la pagina siguiente
*/
function pageNext()
{
if (currentPage=0)
lbox.remove(lbox.selectedIndex);
}
/**
* Eliminar todos los items de un listbox
* elementId: ID del control que representa al ListBox
*/
function listboxClear(elementId) {
var lbox = document.getElementById(elementId);
if (lbox==null) {
alert("ERROR (listboxClear): no existe un elemento con ID: " + elementId);
return;
}
while (lbox.length>0) {
lbox.remove(0);
}
}
/**
* Obtener los IDs de los items de un listbox concatenados como un String
* y separados por un caracter, por defecto es ";" si no se especifica
* elementId: ID del control que representa al ListBox
* separator: caracter a utilizar para separar los items
* Nota: si el control esta vacio retorna un string vacio
*/
function listboxGetItemValues(elementId, separator) {
if (separator==null)
separator=";";
var lbox = document.getElementById(elementId);
if (lbox==null) {
alert("ERROR (listboxGetItemValues): no existe un elemento con ID: " + elementId);
return;
}
var ids = "";
for (var i=0;i" + text;
}
obj.innerHTML = text;
obj.style.display = "";
}
/**
* Verifica si existe el DIV que corresponde a un control
* de un formulario para mostrar un mensaje de error, si no existe
* lo crea y luego muestra el mensaje usando setInnerHtml.
* Es utilizada por el servicio generico de validacion Ajax:
* /action/error/validation/ajax
* formElementId: Elemento donde sera mostrado el mensaje de error
* text: Texto de error
*/
function setFormErrorMsg(formElementId,text) {
var id = formElementId + "_error";
var obj = document.getElementById(id);
var elem = document.getElementById(formElementId);
if (obj==null) {
try {
obj= document.createElement( "div" );
obj.id = id;
obj.className = "errormsg text-danger";
elem.parentNode.appendChild(obj);
} catch (err) {
alert("Error en setFormErrorMsg -> Element ID: " + formElementId);
}
}
if(elem!=null && elem.dataset.tab!=null) {
if(document.getElementById(elem.dataset.tab + "_error")!=null) {
document.getElementById(elem.dataset.tab + "_error").style.display='';
obj.dataset.tab = elem.dataset.tab;
}
} else {
if(elem==null && obj!=null && obj.dataset.tab!=null) {
if(document.getElementById(obj.dataset.tab + "_error")!=null)
document.getElementById(obj.dataset.tab + "_error").style.display='';
}
}
if(elem!=null && elem.dataset.section!=null) {
if(document.getElementById(elem.dataset.section + "_error")!=null) {
document.getElementById(elem.dataset.section + "_error").style.display='';
obj.dataset.section = elem.dataset.section;
}
} else {
if(elem==null && obj!=null && obj.dataset.section!=null) {
if(document.getElementById(obj.dataset.section + "_error")!=null)
document.getElementById(obj.dataset.section + "_error").style.display='';
}
}
setInnerHtml(id, text);
}
/**
* Mostrar TAB que contiene errores de validacion
*/
function showTabWithError() {
var divs = getElementsByClass("errormsg text-danger");
for (var i=0;in)?
s:
pad(s+'0');
}
return (isNaN(this))?
this:
(new String(
Math.round(this*nT)/nT
)).replace(/(\.\d*)?$/,pad);
};
/**
* Codigo tomado de:
* http://www.webdeveloper.com/forum/showthread.php?t=68675
* Permite obtener tanto el alto como ancho de la pagina HTML que se esta usando
*/
function pageWidth() {return window.innerWidth != null? window.innerWidth: document.body != null? document.body.clientWidth:null;}
function pageHeight() {return window.innerHeight != null? window.innerHeight: document.body != null? document.body.clientHeight:null;}
/**
* Soporte para DialogBox centrado en una pagina HTML
*/
//variable de control
var dialogID = null;
/**
* Muestra un DIV + IFRAME en el centro de una pagina
* dialogID: ID del dialog que sera centrado
* url: URL del action que contiene la informacion que sera impresa dentro del DIV + IFRAME
* ancho: Ancho del DIV + IFRAME
* altura: Altura del DIV + IFRAME
*/
function openDialog(dialogID, url, ancho, altura)
{
this.dialogID = dialogID;
//mostrar popup dhtml
showBox(dialogID, ancho, altura, url, true, true);
}
/**
* Oculta un DIV + IFRAME que se encuentra en el centro
* de una pagina
*/
function closeDialog()
{
document.getElementById(dialogID + "_popup").style.display = "none";
/* soporte para lightbox */
lightBoxOff();
}
/**
* Mostrar caja de dialogo centrada con un mensaje y opciones Aceptar|Cancelar, al darle clic en Aceptar
* se cierra el dialogo y se invoca la funcion con el script provisto. Debe existir en la pagina un DIV con id=response, este DIV no sera afectado.
* message: Texto a mostrar en el DialogBox
* btnOk: etiqueta para el boton Aceptar
* btnCancel: opcional - etiqueta para el boton Cancelar, si es null el boton se omite
* onOkFn: script para invocar la funcion en caso de clic en Aceptar, si es nulo solo se cierra el dialogo
*/
function confirmBox(message, btnOk, btnCancel, onOkFn) {
var padTop = "10px";
if (message.length <= 40)
padTop = "25px";
var fn = "parent.closeBox(\"response\")";
if (onOkFn!=null)
fn = fn + ";" + onOkFn;
var html = "" +
"
" + message + "
";
html = html + "
";
if (btnCancel!=null)
html = html + " ";
html = html + "
";
showBox("response", 300,120, null, true, false, html);
var f = window.frames["response_iframe"];
if (btnCancel==null)
f.document.getElementById("btnOK").focus();
}
/**
* Code by Patrick Desjardins http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript
*/
Number.prototype.format = function(c, d, t){
var p = Math.pow(10, c);
var n = (this * p) * (1 + Number.EPSILON);
if(isNaN(n)) {
var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
} else {
var n = (Math.round(n) / p), c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
}
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};
/*
Widget para convertir un input text en un control con mascara
para ingreso de numeros con separadores de miles y decimales. La funcion
getFormValues() le quita el formato para enviar el valor en formato americano
como lo espera Dinamica. Soporta 0, 2 o 4 decimales.
Se usa asi; onload = function() { var text1 = new MaskedTextDouble(document.form1.text1); }
*/
function NumericInput(elem, decimalPlaces, allowNegative) {
var _decimals = ((decimalPlaces != null) ? decimalPlaces : 2);
var _dSep = ((_server_dsep != null) ? _server_dsep : ",");
var _tSep = ((_server_tsep != null) ? _server_tsep : ".");
var _allowNegative = ((allowNegative != null) ? allowNegative : false);
var _divisor = 100;
if (_decimals==0)
_divisor = 0;
else if (_decimals==4)
_divisor = 10000;
else if (_decimals==8)
_divisor = 100000000;
elem.alt = "numeric";
if(elem.className!=null && elem.className!='')
elem.className += " numeric";
else
elem.className = "numeric";
var ml = elem.maxLength;
if(elem.getAttribute('maxLengthDefault')==null)
elem.setAttribute('maxLengthDefault', ml);
else
ml = elem.getAttribute('maxLengthDefault');
ml = Number(ml)
var ml2 = ml + ((ml/3)>>0);
elem.maxLength = ml2;
elem.addEventListener('input', function() {
var position = this.selectionStart;
var l1 = (this.value.split(".").length - 1);
this.value = this.value.replace(/[^\d,.-]/g, '');
var value = this.value;
value = value.replace(/,/g ,"");
value = value.replace(/\./g ,"");
if (value.indexOf("-")!=-1 && _allowNegative) {
value = value.replace(/-/g ,"");
value = "-" + value;
} else
value = value.replace(/-/g ,"");
var num = Number(value);
if (_divisor>0)
num = num / _divisor;
elem.value = num.format(_decimals, _dSep ,_tSep);
if(elem.value.indexOf(".")==-1)
this.selectionEnd = elem.value.length;
else {
var l2 = (elem.value.split(".").length - 1);
if(l2>l1)
this.selectionEnd = position+1;
else {
if(l2==l1)
this.selectionEnd = position;
else
this.selectionEnd = position-1;
}
}
});
elem.addEventListener('paste', function() {
var position = this.selectionStart;
var l1 = (this.value.split(".").length - 1);
this.value = this.value.replace(/[^\d,.-]/g, '');
var value = this.value;
value = value.replace(/,/g ,"");
value = value.replace(/\./g ,"");
if (value.indexOf("-")!=-1 && _allowNegative) {
value = value.replace(/-/g ,"");
value = "-" + value;
} else
value = value.replace(/-/g ,"");
var num = Number(value);
if (_divisor>0)
num = num / _divisor;
elem.value = num.format(_decimals, _dSep ,_tSep);
if(elem.value.indexOf(".")==-1)
this.selectionEnd = elem.value.length;
else {
var l2 = (elem.value.split(".").length - 1);
if(l2>l1)
this.selectionEnd = position+1;
else {
if(l2==l1)
this.selectionEnd = position;
else
this.selectionEnd = position-1;
}
}
});
} //end widget NumericInput
// funciones añadidas desde el 2013-04-03
//Mostrar DialogBox con efecto lightbox para alert o confirm
//message: mensaje a mostrar, puede contener html
//buttonOK: etiqueta del boton OK
//buttonCancel: etiqueta del boton Cancel, si es nulo no se muestra este boton y el focus se pone el boton OK
//OkFn: script con la funcion a invocar en el onclick del boton OK, si es nulo solo se cierra el dialogo
function alertBox(message, buttonOK, buttonCancel, OkFn, invertirBotones) {
var fn = "closeAlertBox()";
if (OkFn!=null)
fn = fn + ";" + OkFn;
var div = document.getElementById("alertbox");
if (div!=null) {
div.parentNode.removeChild(div);
}
var ab = "
" +
"
" + message + "
";
var abOK = "";
var abCancel = "";
if (buttonCancel!=null)
abCancel = "";
if(invertirBotones!=null) {
ab += abCancel;
ab += abOK;
} else {
ab += abOK;
ab += abCancel;
}
ab += "
";
document.body.insertAdjacentHTML("beforeEnd", ab);
div = document.getElementById("alertbox");
if(isLightBoxOff==null)
lightBoxOn();
var height;
var width;
if (!window.getComputedStyle) {
//IE8 hack
height = parseInt(div.currentStyle["min-height"]);
if(height==0)
height = parseInt(div.currentStyle["height"]);
width = parseInt(div.currentStyle["min-width"]);
if(height==0)
width = parseInt(div.currentStyle["width"]);
} else {
height = parseInt(window.getComputedStyle(div, null).getPropertyValue("min-height"));
if(height==0)
height = parseInt(window.getComputedStyle(div, null).getPropertyValue("height"));
width = parseInt(window.getComputedStyle(div, null).getPropertyValue("min-width"));
if(width==0)
width = parseInt(window.getComputedStyle(div, null).getPropertyValue("width"));
}
div.style.zIndex = 1002;
div.style.left = (pageWidth() - width) / 2 + 'px';
div.style.display = "block";
var iOS = ( navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false );
if (iOS) {
var pageYOffset = window.pageYOffset;
var innerHeight = window.innerHeight
var i, frames;
frames = parent.document.getElementsByTagName("iframe");
for (i = 0; i < frames.length; ++i)
{
if(frames[i].name.indexOf('_iframe')==-1) {
pageYOffset = parent.window.pageYOffset;
innerHeight = parent.window.innerHeight;
}
}
var doc = document.body;
var scrollTop = (pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
div.style.position = 'absolute';
div.style.top = (((innerHeight - div.offsetHeight) / 2) + scrollTop) + "px";
} else {
div.style.position = 'fixed';
div.style.top = (pageHeight() - height) / 2 + 'px';
}
if (buttonCancel==null) {
var btn = document.getElementById("alertbox-ok");
btn.focus();
}
}
//Cierra un DialogBox desplegado con la funcion alertBox()
var isLightBoxOff = null;
function closeAlertBox() {
var id ="alertbox";
if (document.getElementById(id)!=null)
document.getElementById(id).style.display = "none";
if(isLightBoxOff==null)
lightBoxOff();
}
var overlay = null;
//Activa efecto lightbox desactivando el fondo
function lightBoxOn() {
overlay = document.getElementById('_overlay');
if (overlay==null) {
overlay = document.createElement("div");
overlay.className = "overlay";
overlay.setAttribute("id", "_overlay");
document.body.appendChild(overlay);
}
overlayHeight(0);
overlay.style.display='block';
}
//Desactiva el lightbox
function lightBoxOff() {
var overlay = document.getElementById('_overlay');
if (overlay!=null)
overlay.style.display='none';
}
/**
* Permite definir la altura del lightbox
* @param height Altura adicional de ser necesario
*/
function overlayHeight(height)
{
if(overlay!=null) {
if (document.body.scrollHeight > pageHeight())
overlay.style.height = (document.body.scrollHeight + (height/2)) + 'px';
else
overlay.style.height = (pageHeight() + (height/2)) + 'px';
if (document.body.scrollWidth > pageWidth())
overlay.style.width = document.body.scrollWidth + 'px';
else
overlay.style.width = "100%";
}
}
/**
* Crea un IFRAME
* @param iFrameName Nombre del IFRAME
* @param uri URI que sera cargada en el iframe
*/
function createIFrame(iFrameName, uri)
{
//existe iframe?
var iFrame = document.getElementById(iFrameName);
if(iFrame==null) {
//crear iframe
iFrame = document.createElement('iframe');
iFrame.style.padding = '0px';
iFrame.style.borderWidth = '0px';
iFrame.style.margin = '0px';
iFrame.style.height = '100%';
iFrame.style.width = '100%';
iFrame.setAttribute('id', iFrameName);
iFrame.setAttribute('name', iFrameName);
document.body.appendChild(iFrame);
}
//mostrar iframe
iFrame.style.visibility = "visible";
//colocar mensaje de progreso mientras llega el request
var f = window.frames[iFrameName];
f.document.open();
f.document.write("
");
f.document.close();
f.location = uri;
f.onLoad = document.getElementById(iFrameName).style.height = (pageHeight()-5) + 'px';
}
/**
* Muestra la caja de opciones para grid
* alineada a la derecha del icono de opciones
* @param id ID del icono de opciones
*/
function showOptionBox(id)
{
var divs = getElementsByClass("option-box");
for (var i=0;i=35 && keyCode <=40)
return false;
}
elem.onkeyup = function(e) {
var keyCode = e ? e.which : window.event.keyCode;
var elem = e ? e.target : window.event.srcElement;
//si tecla no es eliminar espacio
if (keyCode!=8) {
elem.value = fixDatePattern(elem.value, formatDate);
elem.value = validDatePattern(elem.value, formatDate);
}
}
elem.onclick = function(e) {
moveCursorToEnd(elem);
}
}
/**
* Colocar cursor al final del control
* @param el Elemento que representa el control
*/
function moveCursorToEnd(el) {
if (typeof el.selectionStart == "number") {
el.selectionStart = el.selectionEnd = el.value.length;
} else if (typeof el.createTextRange != "undefined") {
el.focus();
var range = el.createTextRange();
range.collapse(false);
range.select();
}
}
/**
* Verificar que la fecha sea valida segun calendario
* @param currDate Valor tipeado en el control
* @param formatDate Permite pasar un formato de fecha especifico para el control
*/
function validDatePattern(currDate, formatDate) {
var currentDate = currDate;
var currentLength = currentDate.length;
var formatD = _server_formatDate;
if(formatDate!=null)
formatD = formatDate;
var indexD = formatD.indexOf('dd');
var indexD2 = indexD + 2;
var indexM = formatD.indexOf('MM');
var indexM2 = indexM + 2;
var indexY = formatD.indexOf('yyyy');
var indexY2 = indexY + 4;
var day = currentDate.substring(indexD, indexD2);
var month = currentDate.substring(indexM, indexM2) - 1;
if(currentDate.substring(indexM, indexM2)=='')
month = '';
var year = currentDate.substring(indexY, indexY2);
//verificar dia cuando no se tiene mes y anio
if (day.length==2 && month == '' && year == '') {
var dteDate = new Date(1972, 0, day);
var r = day == dteDate.getDate();
if (r)
return currentDate;
else {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 2));
else
return currentDate.substring(0, (currentLength - 1));
}
}
//verificar mes cuando no se tiene dia y anio
if (currentDate.substring(indexM, indexM2).length==2 && day=='' && year == '') {
var dteDate = new Date(1972, month, 1);
var r = month == dteDate.getMonth();
if (r)
return currentDate;
else {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 2));
else
return currentDate.substring(0, (currentLength - 1));
}
}
//verificar anio cuando no se tiene dia y mes
if (year.length == 4 && day=='' && month == '') {
var dteDate = new Date(year, 0, 1);
var r = year == dteDate.getFullYear();
if (r)
return currentDate;
else {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 2));
else
return currentDate.substring(0, (currentLength - 1));
}
}
//verificar dia y mes cuando no se tiene el anio
if (day.length==2 && currentDate.substring(indexM, indexM2).length==2 && year == '') {
var dteDate = new Date(1972, month, day);
var r = day == dteDate.getDate() && month == dteDate.getMonth();
if (r)
return currentDate;
else {
if (month == 1 && day > 29) {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 3));
else
return currentDate.substring(0, (currentLength - 2));
} else {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 2));
else
return currentDate.substring(0, (currentLength - 1));
}
}
}
//verificar mes y anio cuando no se tiene el dia
if (currentDate.substring(indexM, indexM2).length==2 && year.length == 4 && day=='') {
var dteDate = new Date(year, month, 1);
var r = month == dteDate.getMonth() && year == dteDate.getFullYear();
if (r)
return currentDate;
else {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 2));
else
return currentDate.substring(0, (currentLength - 1));
}
}
//verificar dia y anio cuando no se tiene el mes
if (day.length==2 && year.length == 4 && month=='') {
var dteDate = new Date(year, 0, day);
var r = day == dteDate.getDate() && year == dteDate.getFullYear();
if (r)
return currentDate;
else {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 2));
else
return currentDate.substring(0, (currentLength - 1));
}
}
//verificar dia mes y anio
if (day.length==2 && currentDate.substring(indexM, indexM2).length==2 && year.length == 4) {
var dteDate = new Date(year, month, day);
var r = day == dteDate.getDate() && month == dteDate.getMonth()
&& year == dteDate.getFullYear();
if (r)
return currentDate;
else {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
return currentDate.substring(0, (currentLength - 2));
else
return currentDate.substring(0, (currentLength - 1));
}
}
return currentDate;
}
/**
* Permite dar formato a una fecha
* @param currDate Valor tipeado en el control
* @param formatDate Permite pasar un formato de fecha especifico para el control
*/
function fixDatePattern(currDate, formatDate) {
var currentDate = currDate;
var currentLength = currentDate.length;
var dateCountTracker = 0;
var sep = "-";
var formatD = _server_formatDate;
if(formatDate!=null)
formatD = formatDate;
if (formatD.indexOf("/") != -1)
sep = "/";
if (currentLength > 10)
return currentDate.substring(0, 10);
var indexD = formatD.indexOf('dd');
var indexD2 = indexD + 2;
var indexM = formatD.indexOf('MM');
var indexM2 = indexM + 2;
var indexY = formatD.indexOf('yyyy');
indexY2 = indexY + 4;
//dia con validacion por ser el primer digito mayor a 3 (31 dias)
if (currentLength == (indexD + 1) && currentDate[indexD] > 3) {
var transformedDate = currentDate.substring(0, indexD) + "0"
+ currentDate[indexD];
if (currentDate.indexOf(sep) == -1)
transformedDate = "0" + currentDate[indexD];
if (transformedDate.length < 9)
transformedDate = transformedDate + sep;
dateCountTracker = indexD2;
currentLength = transformedDate.length;
return transformedDate;
}
//mes con validacion por ser el primer digito mayor a 1 (12 meses)
if (currentLength == (indexM + 1) && currentDate[indexM] > 1) {
var transformedDate = currentDate.substring(0, indexM) + "0"
+ currentDate[indexM];
if (currentDate.indexOf(sep) == -1)
transformedDate = "0" + currentDate[indexM];
if (transformedDate.length < 9)
transformedDate = transformedDate + sep;
dateCountTracker = indexM2;
currentLength = transformedDate.length;
return transformedDate;
}
//dia correcto
if (currentLength == indexD2 && dateCountTracker != indexD2) {
dateCountTracker = currentLength;
if (currentLength <= 9)
currentDate = currentDate + sep;
var day = currentDate.substring(indexD, indexD + 2);
if (day > 31) {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
currentDate = currentDate.substring(0, (indexD + 2) - 2);
else
currentDate = currentDate.substring(0, (indexD + 2) - 1);
}
return currentDate;
}
//mes correcto
if (currentLength == indexM2 && dateCountTracker != indexM2) {
dateCountTracker = currentLength;
if (currentLength <= 9)
currentDate = currentDate + sep;
var month = currentDate.substring(indexM, indexM + 2);
if (month > 12) {
if (currentDate[currentLength - 1] == '-'
|| currentDate[currentLength - 1] == '/')
currentDate = currentDate.substring(0, (indexM + 2) - 2);
else
currentDate = currentDate.substring(0, (indexM + 2) - 1);
}
return currentDate;
}
//anio
if (currentLength == indexY2) {
dateCountTracker = currentLength;
if (currentLength > 9)
return currentDate
else
return currentDate + sep;
}
dateCountTracker = currentLength;
return currentDate;
}
function IntegerInput(elem, isActive) {
var fActive = true;
if(isActive==false)
fActive = false;
if(!fActive) {
elem.removeEventListener('input', returnInteger);
elem.removeEventListener('paste', returnInteger);
} else {
elem.addEventListener('input', returnInteger);
elem.addEventListener('paste', returnInteger);
}
}
function returnInteger() {
var position = this.selectionStart;
this.value = this.value.replace(/[^0-9]+/g, '');
this.selectionEnd = position;
}