PageSourceSearch

https://www.mirringo.com.co/DesktopModules/General/Commom.js

js mirringo.com.co collected 2026-10-08 20:33:05 UTC 24,849 bytes, 714 lines download raw bytes

1var $self = this;
2var endpointApi;
3var moduleId;
4var _sf;
5var Authorization = "";
6const settings = { isAngular: true, requiredMode: 'span' };
7function callGet(endpoint, route) {
8    var response = {};
9    $.ajax({
10        url: $self.ServicePath + endpoint + '/' + route,
11        method: "GET",
12        headers: $self.Headers,
13        success: function (data) {
14            response = data.Result;
15        },
16        error: function (error) {
17            response = error;
18        },
19        async: false
20    });
21    return response;
22}
23function callPost(endpoint, route, object) {
24    var response = {};
25    $.ajax({
26        url: $self.ServicePath + endpoint + '/' + route,
27        method: "POST",
28        data: object,
29        headers: $self.Headers,
30        success: function (data) {
31            console.log(data);
32            response = data.Result;
33        },
34        error: function (error) {
35            response = error;
36        },
37        async: false
38    });
39    return response;
40}
41function callGetQuery(endpoint, route, value, query) {
42    var response = {};
43    $.ajax({
44        url: $self.ServicePath + endpoint + '/' + route + '?' + query + '=' + value,
45        method: "GET",
46        headers: $self.Headers,
47        success: function (data) {
48            response = data.Result;
49        },
50        error: function (error) {
51            response = error;
52        },
53        async: false
54    });
55    return response;
56}
57function inicializeEndpoint(moduleId) {
58    //this.endpointApi = endpoint;
59    this.moduleId = moduleId;
60
61    if ($.ServicesFramework) {
62        _sf = $.ServicesFramework(moduleId);
63        $self.ServiceRoot = '/desktopmodules/JuliusProject/api/';//_sf.getServiceRoot('KickStarter');
64        $self.ServicePath = $self.ServiceRoot;
65        $self.Headers = {
66            "ModuleId": moduleId,
67            "TabId": _sf.getTabId(),
68            "RequestVerificationToken": _sf.getAntiForgeryValue()
69        };
70    }
71}
72
73//Valida el estado de la página, que cumpla con: requeridos, campo email, campo solo número, entre otros.
74function pageIsValid() {
75    let inputValid = validateInput();
76    let selectValid = validateSelect();
77    return inputValid && selectValid;
78}
79//Valida el estado de la página, que cumpla con: requeridos, campo email, campo solo número, entre otros.
80function pageIsValidContent(container) {
81    let inputValid = validateInput2(container);
82    let selectValid = validateSelect();
83    return inputValid && selectValid;
84}
85
86//Manejador de los campos input
87function validateInput() {
88    let isValid = true;
89    var required = document.querySelectorAll('input[ax-required=true]');
90    if (required.length > 0) {
91        for (var i = 0; i < required.length; i++) {
92            if (required[i].type === "checkbox") {
93                if (!required[i].checked) {
94                    switch (settings.requiredMode) {
95                        case 'span':
96                            createRequired(required, i);
97                            break;
98                        case 'modal':
99                            break;
100                    }
101
102                    isValid = false;
103                }
104            }
105            else if (required[i].type === "email") {
106                var valid = ValidarEmail(required[i].id);
107                if (!required[i].value && !valid) {
108                    switch (settings.requiredMode) {
109                        case 'span':
110                            createRequired(required, i);
111                            break;
112                        case 'modal':
113                            break;
114                    }
115
116                    isValid = false;
117                }
118            }
119            else {
120                if (!required[i].value) {
121                    switch (settings.requiredMode) {
122                        case 'span':
123                            createRequired(required, i);
124                            break;
125                        case 'modal':
126                            break;
127                    }
128
129                    isValid = false;
130                }
131            }
132        }
133    }
134    return isValid;
135}
136//Manejador de los campos input
137function validateInput2(container) {
138    let isValid = true;
139    var required = container.querySelectorAll('input[ax-required=true]');
140    if (required.length > 0) {
141        for (var i = 0; i < required.length; i++) {
142            if (required[i].type === "checkbox") {
143                if (!required[i].checked) {
144                    switch (settings.requiredMode) {
145                        case 'span':
146                            createRequired(required, i);
147                            break;
148                        case 'modal':
149                            break;
150                    }
151
152                    isValid = false;
153                }
154            }
155            else if (required[i].type === "email") {
156                var valid = ValidarEmail(required[i].id);
157                if (!required[i].value && !valid) {
158                    switch (settings.requiredMode) {
159                        case 'span':
160                            createRequired(required, i);
161                            break;
162                        case 'modal':
163                            break;
164                    }
165
166                    isValid = false;
167                }
168            }
169            else {
170                if (!required[i].value) {
171                    switch (settings.requiredMode) {
172                        case 'span':
173                            createRequired(required, i);
174                            break;
175                        case 'modal':
176                            break;
177                    }
178
179                    isValid = false;
180                }
181            }
182        }
183    }
184    return isValid;
185}
186
187//Crea el texto "Campo requerido" en el documento.
188function createRequired(required, i) {
189    let messageExist = required[i].parentElement.querySelector('.error-required');
190    if (!messageExist) {
191        let requiredMessage = required[i].getAttribute('ax-required-text');
192        let span = document.createElement('span');
193        span.innerText = requiredMessage;
194        span.setAttribute('class', 'error-required');
195        required[i].parentElement.appendChild(span);
196
197        switch (required[i].type) {
198            case 'text':
199                required[i].addEventListener('keyup', function (e) {
200                    if (e.currentTarget.value) {
201                        let aux = required[i].parentElement.querySelector('.error-required');
202                        if (aux) {
203                            aux.parentNode.removeChild(aux);
204                        }
205                    }
206                });
207                break;
208            case 'select':
209                required[i].addEventListener('change', function (e) {
210                    if (e.currentTarget.value) {
211                        let aux = required[i].parentElement.querySelector('.error-required');
212                        if (aux) {
213                            aux.parentNode.removeChild(aux);
214                        }
215                    }
216                });
217                break;
218
219            case 'checkbox':
220                required[i].addEventListener('change', function (e) {
221                    if (e.currentTarget.checked) {
222                        let aux = required[i].parentElement.querySelector('.error-required');
223                        if (aux) {
224                            aux.parentNode.removeChild(aux);
225                        }
226                    }
227                });
228                break;
229            case 'email':
230                required[i].addEventListener('keyup', function (e) {
231                    var valid = ValidarEmail(required[i].value);
232                    if (e.currentTarget.value && valid) {
233                        let aux = required[i].parentElement.querySelector('.error-required');
234                        if (aux) {
235                            aux.parentNode.removeChild(aux);
236                        }
237                    }
238                });
239                break;
240        }
241    }
242}
243function ValidarEmail(email) {
244    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
245    return regex.test(email);   
246}
247function validateSelect() {
248    let isValid = true;
249    var required = document.querySelectorAll('select[ax-required=true]');
250    if (required.length > 0) {
251        for (var i = 0; i < required.length; i++) {
252            if (required[i].value === "0") {
253                switch (settings.requiredMode) {
254                    case 'span':
255                        createRequired(required, i);
256                        break;
257                    case 'modal':
258                        break;
259                }
260
261                isValid = false;
262            }
263        }
264    }
265    return isValid;
266}
267
268function showAlert(message, type) {
269    let alertExist = document.querySelector('.custom-alert');
270    if (alertExist) {
271        alertExist.parentNode.removeChild(alertExist);
272    }
273
274    let body = document.querySelector('body');
275    let html = document.createElement('div');
276    html.setAttribute('class', 'custom-alert ' + type);
277    html.innerHTML = message;
278    body.appendChild(html);
279
280    setTimeout(function () {
281        let alertExist = document.querySelector('.custom-alert');
282        if (alertExist) {
283            alertExist.parentNode.removeChild(alertExist);
284        }
285    }, 3000);
286}
287function showLoading() {
288    let aux = document.querySelector('#panelCargando');
289    if (!aux) {
290        let html = document.createElement('div');
291        html.id = 'panelCargando';
292        let span = document.createElement('span');
293        span.innerHTML = 'Cargando...';
294        let backgorund = document.createElement('div');
295        backgorund.setAttribute('class', 'background');
296        html.appendChild(backgorund);
297        html.appendChild(span);
298        document.querySelector('body').appendChild(html);
299    }
300}
301
302function hideLoading() {
303    let aux = document.querySelector('#panelCargando');
304    if (aux) {
305        aux.parentNode.removeChild(aux);
306    }
307}
308
309
310function sendCampaing(tipo) {
311    var campaing = '';  
312    //saca los atributos del formulario
313    var atributos = {
314
315        email: document.getElementById("Correo").value,
316        tipo_documento: document.getElementById("TipoDocumento").value,
317        numero_documento: document.getElementById("NroDocumento").value,
318        nombre: document.getElementById("Nombres").value,
319        apellidos: document.getElementById("Apellidos").value,        
320        //campania: "Si",
321        //aca van los datos que necesitas. Incluir el mail si es necesario
322
323    };
324    switch (tipo) {
325        case '1':
326            campaing = 'mirringo_ideal';
327            atributos.mirringo_ideal = "Si";
328            break;
329        case '2':
330            campaing = 'ringo_ideal';
331            atributos.ringo_ideal = "Si";
332            break;
333        default:
334    }
335   
336    //genera el evento
337    console.log(atributos);
338    var evento = {
339        "eventName": campaing,//aca va el nombre del evento predefinido en emBlue
340        "email": document.getElementById("Correo").value,
341        "attributes": atributos
342    };
343	
344	var origin = location.origin;
345	
346	Authorization = (origin.includes(".com.pa")) ? "YmU1YTcxYzE4NDBjNDMzMGJkZWEwMjAwYTY4ODAxNTc=" : "ZjhlOGE0YzRlY2RjNGY5MmFjNDcyNTY0NGFkZGM2MzU=";
347
348    $.ajax({
349        url: "https://track.embluemail.com/contacts/event",
350        headers: {
351            "Authorization": "Basic "+Authorization
352        },
353        data: JSON.stringify(evento),
354        contentType: "application/json",
355        dataType: "json",
356        type: "POST",
357
358    }).done(function (data) {
359        console.log(data);
360    }).fail(function (data) {
361        console.log(data);
362    });
363
364
365
366}
367
368function SoloNumeros(e) {
369    var keynum = window.event ? window.event.keyCode : e.which;
370    if ((keynum === 8) || (keynum === 47))
371        return true;
372    return /\d/.test(String.fromCharCode(keynum));
373}
374
375
376function SoloLetras(e) {
377    key = e.keyCode || e.which;
378    tecla = String.fromCharCode(key).toLowerCase();
379    letras = " áéíóúabcdefghijklmnñopqrstuvwxyz";
380    especiales = "8-37-39-46";
381
382    tecla_especial = false;
383    for (var i in especiales) {
384        if (key === especiales[i]) {
385            tecla_especial = true;
386            break;
387        }
388    }
389
390    if (letras.indexOf(tecla) === -1 && !tecla_especial) {
391        return false;
392    }
393}
394
395function SoloLetrasYNumeros(e) {
396    tecla = (document.all) ? e.keyCode : e.which;
397    if (tecla === 8) return true;
398    if (tecla === 9) return true;
399    if (tecla === 11) return true;
400    patron = /[0-9A-Za-zñÑ'áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙâêîôûÂÊÎÔÛÑñäëïöüÄËÏÖÜ\s\t]/;
401    te = String.fromCharCode(tecla);
402    return patron.test(te);
403}
404
405//Valida el estado de la página, que cumpla con: requeridos, campo email, campo solo número, entre otros.
406pageIsValid = function (contenedor) {
407    let inputValid = validateInput(contenedor);
408    let selectValid = validateSelect(contenedor);
409    let emailInput = validaEmailInput(contenedor);
410    let numberInput = validateNumberInput(contenedor);
411    let checkboxValid = validateCheckbox(contenedor);
412    console.log(inputValid)
413    console.log(selectValid)
414    console.log(emailInput)
415    console.log(numberInput)
416    console.log(checkboxValid)
417
418    return inputValid && selectValid && emailInput && numberInput && checkboxValid;
419};
420
421validaEmailInput = function (contenedor) {
422    let isValid = true;
423    var required = document.querySelectorAll(`#${contenedor} input[type=email]`);
424    if (required.length > 0) {
425        for (var i = 0; i < required.length; i++) {
426            if (required[i].value != '') {
427                if (ValidarEmail(required[i].value)) {
428                    isValid = true;
429                } else {
430                    createRequired(required, i);
431                    isValid = false;
432                }
433            }
434        }
435    }
436    return isValid;
437}
438
439function ValidarEmail(email) {
440    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
441    return regex.test(email);
442}
443
444//Manejador de los campos input
445validateInput = function (contenedor) {
446    let isValid = true;
447    var inputs = document.querySelectorAll(`#${contenedor} input[ax-required=true]`);
448    var textArea = document.querySelectorAll(`#${contenedor} textarea[ax-required=true]`);
449    var inputsArray = Array.prototype.slice.call(inputs);
450    var textAreaArray = Array.prototype.slice.call(textArea);
451    var required = inputsArray.concat(textAreaArray);
452    if (required.length > 0) {
453        for (var i = 0; i < required.length; i++) {
454            // Saltar checkbox y number, se validan en funciones específicas
455            if (required[i].type === 'checkbox' || required[i].type === 'number') {
456                continue;
457            }
458
459            if (required[i].type === 'radio') {
460                if (!$(required[i]).parent().parent().find(`#${contenedor} input[type=radio]:checked`).val()) {
461                    switch (settings.requiredMode) {
462                        case 'span':
463                            createRequired(required, i);
464                            break;
465                        case 'modal':
466                            break;
467                    }
468
469                    isValid = false;
470                }
471            }
472
473            if (!required[i].value) {
474                switch (settings.requiredMode) {
475                    case 'span':
476                        createRequired(required, i);
477                        break;
478                    case 'modal':
479                        break;
480                }
481
482                isValid = false;
483            }
484        }
485    }
486    return isValid;
487}
488
489//Crea el texto "Campo requerido" en el documento.
490createRequired = function (required, i, customMessage) {
491    let messageExist = required[i].parentElement.querySelector('.error-required');
492    let requiredMessage = customMessage || required[i].getAttribute('ax-required-text') || 'Este campo es requerido';
493    
494    if (!messageExist) {
495        let span = document.createElement('span');
496        span.innerText = requiredMessage;
497        span.setAttribute('class', 'error-required');
498        
499        // Determinar posición del mensaje
500        let position = required[i].getAttribute('ax-required-position') || 'bottom';
501        if (position === 'bottom') {
502            required[i].parentElement.appendChild(span);
503        } else if (position === 'top') {
504            required[i].parentElement.insertBefore(span, required[i].parentElement.firstChild);
505        } else {
506            required[i].parentElement.appendChild(span);
507        }
508    } else {
509        messageExist.innerText = requiredMessage;
510    }
511
512    // Limpiar listeners previos si existen para evitar duplicados
513    var input = required[i];
514    var eventType = '';
515    var handler = null;
516
517    switch (required[i].type) {
518        case 'text':
519        case 'email':
520            eventType = 'keyup';
521            handler = function (e) {
522                if (e.currentTarget.value) {
523                    let aux = input.parentElement.querySelector('.error-required');
524                    if (aux) {
525                        aux.parentNode.removeChild(aux);
526                    }
527                }
528            };
529            break;
530        case 'number':
531            eventType = 'input';
532            handler = function (e) {
533                var value = e.currentTarget.value;
534                if (value && !isNaN(parseFloat(value))) {
535                    let aux = input.parentElement.querySelector('.error-required');
536                    if (aux) {
537                        aux.parentNode.removeChild(aux);
538                    }
539                }
540            };
541            break;
542        case 'checkbox':
543            eventType = 'change';
544            handler = function (e) {
545                if (e.currentTarget.checked) {
546                    let aux = input.parentElement.querySelector('.error-required');
547                    if (aux) {
548                        aux.parentNode.removeChild(aux);
549                    }
550                }
551            };
552            break;
553        case 'select-one':
554        case 'select':
555        case 'date':
556            eventType = 'change';
557            handler = function (e) {
558                if (e.currentTarget.value) {
559                    let aux = input.parentElement.querySelector('.error-required');
560                    if (aux) {
561                        aux.parentNode.removeChild(aux);
562                    }
563                }
564            };
565            break;
566    }
567
568    if (eventType && handler) {
569        // Remover listener previo si existe
570        input.removeEventListener(eventType, handler);
571        // Agregar nuevo listener
572        input.addEventListener(eventType, handler);
573    }
574}
575
576validateSelect = function (contenedor) {
577    let isValid = true;
578    var required = document.querySelectorAll(`#${contenedor} select[ax-required=true]`);
579    if (required.length > 0) {
580        for (var i = 0; i < required.length; i++) {
581            if (!required[i].value) {
582                switch (settings.requiredMode) {
583                    case 'span':
584                        createRequired(required, i);
585                        break;
586                    case 'modal':
587                        break;
588                }
589
590                isValid = false;
591            }
592        }
593    }
594    return isValid;
595}
596
597//Valida inputs tipo number
598validateNumberInput = function (contenedor) {
599    let isValid = true;
600    var numberInputs = document.querySelectorAll(`#${contenedor} input[type=number][ax-required=true]`);
601    if (numberInputs.length > 0) {
602        for (var i = 0; i < numberInputs.length; i++) {
603            var input = numberInputs[i];
604            var value = input.value;
605            var isEmpty = value === '' || value === null || value === undefined;
606            
607            // Validar que tenga valor si es requerido
608            if (isEmpty) {
609                switch (settings.requiredMode) {
610                    case 'span':
611                        createRequired(numberInputs, i);
612                        break;
613                    case 'modal':
614                        break;
615                }
616                isValid = false;
617                continue;
618            }
619
620            // Convertir a número
621            var numValue = parseFloat(value);
622            
623            // Validar que sea un número válido
624            if (isNaN(numValue)) {
625                switch (settings.requiredMode) {
626                    case 'span':
627                        createRequired(numberInputs, i, 'Debe ingresar un número válido');
628                        break;
629                    case 'modal':
630                        break;
631                }
632                isValid = false;
633                continue;
634            }
635
636            // Validar min si existe
637            if (input.hasAttribute('min')) {
638                var minValue = parseFloat(input.getAttribute('min'));
639                if (!isNaN(minValue) && numValue < minValue) {
640                    switch (settings.requiredMode) {
641                        case 'span':
642                            var minMessage = input.getAttribute('ax-min-text') || `El valor mínimo es ${minValue}`;
643                            createRequired(numberInputs, i, minMessage);
644                            break;
645                        case 'modal':
646                            break;
647                    }
648                    isValid = false;
649                    continue;
650                }
651            }
652
653            // Validar max si existe
654            if (input.hasAttribute('max')) {
655                var maxValue = parseFloat(input.getAttribute('max'));
656                if (!isNaN(maxValue) && numValue > maxValue) {
657                    switch (settings.requiredMode) {
658                        case 'span':
659                            var maxMessage = input.getAttribute('ax-max-text') || `El valor máximo es ${maxValue}`;
660                            createRequired(numberInputs, i, maxMessage);
661                            break;
662                        case 'modal':
663                            break;
664                    }
665                    isValid = false;
666                    continue;
667                }
668            }
669
670            // Validar step si existe
671            if (input.hasAttribute('step')) {
672                var stepValue = parseFloat(input.getAttribute('step'));
673                if (!isNaN(stepValue) && stepValue > 0) {
674                    var remainder = (numValue - (input.hasAttribute('min') ? parseFloat(input.getAttribute('min')) : 0)) % stepValue;
675                    // Permitir pequeñas diferencias por precisión de punto flotante
676                    if (Math.abs(remainder) > 0.0001 && Math.abs(remainder - stepValue) > 0.0001) {
677                        switch (settings.requiredMode) {
678                            case 'span':
679                                var stepMessage = input.getAttribute('ax-step-text') || `El valor debe ser múltiplo de ${stepValue}`;
680                                createRequired(numberInputs, i, stepMessage);
681                                break;
682                            case 'modal':
683                                break;
684                        }
685                        isValid = false;
686                        continue;
687                    }
688                }
689            }
690        }
691    }
692    return isValid;
693}
694
695//Valida checkboxes
696validateCheckbox = function (contenedor) {
697    let isValid = true;
698    var checkboxes = document.querySelectorAll(`#${contenedor} input[type=checkbox][ax-required=true]`);
699    if (checkboxes.length > 0) {
700        for (var i = 0; i < checkboxes.length; i++) {
701            if (!checkboxes[i].checked) {
702                switch (settings.requiredMode) {
703                    case 'span':
704                        createRequired(checkboxes, i);
705                        break;
706                    case 'modal':
707                        break;
708                }
709                isValid = false;
710            }
711        }
712    }
713    return isValid;
714}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.