PageSourceSearch

https://gestiondematricula.franco.ed.cr/login

html franco.ed.cr collected 2026-09-30 06:25:45 UTC 67,711 bytes, 945 lines download raw bytes

1<!DOCTYPE html>
2<html lang="es">
3<!-- Nombre de la norma:   Ley 9048 del 10/07/2012-->
4<!-- Reforma de la Sección VIII, Delitos Informáticos y Conexos, del Título VII del Código Penal -->
5<!-- Ente emisor:	Asamblea Legislativa -->
6<!-- Fecha de vigencia desde:	06/11/2012 -->
7<!-- Versión de la norma: 1 de 2  del 10/07/2012 -->
8<!-- http://www.pgrweb.go.cr/scij/Busqueda/Normativa/Normas/nrm_texto_completo.aspx?param1=NRTC&nValor1=1&nValor2=73583&nValor3=90354&strTipM=TC -->
9<!-- Recuerde que la manipulación o daño de la información es un delito, todo lo que haga en este sistema esta auditado. -->
10
11<head>
12    <meta charset="UTF-8">
13    <meta http-equiv="X-UA-Compatible" content="IE=edge">
14    <meta name="viewport" content="width=device-width, initial-scale=1.0">
15    <meta name="description" content="Enrollment system application, Franco Costa Rican high school" />
16    <meta name="theme-color" content="#317EFB"/>
17    <meta charset="UTF-8"/>
18    <title translate="no" >Sistema LFC</title>
19    <!-- Ion-Icons -->
20    <link href="https://unpkg.com/[email protected]/dist/css/ionicons.min.css" rel="stylesheet">
21    <link rel="stylesheet" href="https://rsms.me/inter/inter.css">
22    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/flowbite.min.css">
23    
23<script src="https://unpkg.com/[email protected]/dist/flowbite.js"></script>
23
24    
24<script src="https://gestiondematricula.franco.ed.cr/node_modules/flowbite/dist/datepicker.js"></script>
24
25    
25<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
25
26    
26<script src="https://gestiondematricula.franco.ed.cr/package/dist/sweetalert2.all.min.js"></script>
26
27    
27<script src="https://gestiondematricula.franco.ed.cr/package/dist/sweetalert2.min.js"></script>
27
28    <link rel="stylesheet" href="https://gestiondematricula.franco.ed.cr/package/dist/sweetalert2.css">
29    <link rel="icon" href="https://gestiondematricula.franco.ed.cr/img/LogoLFC.png">
30    <!-- chartist -->
31    
31<script src="//cdn.jsdelivr.net/chartist.js/latest/chartist.min.js"></script>
31
32    <link href="//cdn.jsdelivr.net/chartist.js/latest/chartist.min.css" rel="stylesheet" type="text/css" >
33
34    
34<script src="https://gestiondematricula.franco.ed.cr/js/tailwind.js"></script>
34
35    
35<script src="https://gestiondematricula.franco.ed.cr/js/jquery.min.js"></script>
35
36
37    <style>
38        html {
39            scroll-behavior: smooth;
40        }
41    </style>
42    
42<script>
43        if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
44            document.documentElement.classList.add('dark');
45        } else {
46            document.documentElement.classList.remove('dark');
47        }
48    </script>
48
49</head><!DOCTYPE html>
50<html lang="es">
51
52<head>
53    <meta charset="UTF-8">
54    <meta http-equiv="X-UA-Compatible" content="IE=edge">
55    <meta name="viewport" content="width=device-width, initial-scale=1.0">
56    <meta name="google-translate-customization" content="9f841e7780177523-3214ceb76f765f38-gc38c6fe6f9d06436-c">
57    </meta>
58
59    <title translate="no">Login</title>
60    <link rel="stylesheet" href="https://rsms.me/inter/inter.css">
61    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/flowbite.min.css">
62    
62<script src="https://unpkg.com/[email protected]/dist/flowbite.js"></script>
62
63
64    
64<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
64
65    
65<script src="https://gestiondematricula.franco.ed.cr/package/dist/sweetalert2.all.min.js"></script>
65
66    
66<script src="https://gestiondematricula.franco.ed.cr/package/dist/sweetalert2.min.js"></script>
66
67    <link rel="stylesheet" href="https://gestiondematricula.franco.ed.cr/package/dist/sweetalert2.css">
68
69    
69<script src="https://gestiondematricula.franco.ed.cr/js/tailwind.js"></script>
69
70    
70<script src="https://gestiondematricula.franco.ed.cr/js/jquery.min.js"></script>
70
71    
71<script src="https://hcaptcha.com/1/api.js" async defer></script>
71
72    
72<script>
73        if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
74            document.documentElement.classList.add('dark');
75        } else {
76            document.documentElement.classList.remove('dark');
77        }
78
79        if (window.localStorage) {
80            if (window.localStorage.getItem('language') !== undefined && window.localStorage.getItem('language')) {
81                document.documentElement.lang = localStorage.getItem('language');
82            } else {
83                localStorage.setItem('language', 'es');
84            }
85        }
86    </script>
86
87    <style type="text/css">
88        main {
89            width: 100%;
90            font-size: 1.2em;
91            line-height: 1.168;
92            position: relative;
93            min-height: 100vh;
94        }
95
96        #goog-gt-tt {
97            display: none !important;
98        }
99
100        .goog-te-banner-frame {
101            display: none !important;
102        }
103
104        .goog-te-menu-value:hover {
105            text-decoration: none !important;
106        }
107
108        body {
109            top: 0 !important;
110        }
111
112        #google_translate_element2 {
113            display: none !important;
114        }
115    </style>
116    <link rel="stylesheet" href="https://gestiondematricula.franco.ed.cr/css/css.css">
117</head>
118
119<body class="w-full dark:bg-gray-900 bg-gray-50 top-0" style="background-image: url('https://gestiondematricula.franco.ed.cr/img/wallpeaper-login.png');">
120    <div class="preload"></div>
121    <main class="duration-200 delay-200 flex w-full effect_desc">
122        <div class="mx-auto md:h-screen justify-center items-center px-6 pt-8 pt:mt-0 flex-auto max-w-4xl p-4 m-8">
123            <a onclick="pages('index');" class="text-2xl mt-5 mb-10 font-semibold flex justify-center items-center mb-4 lg:mb-10">
124                <img src="https://gestiondematricula.franco.ed.cr/img/Logo1.png" class="mr-3 w-20 h-20 rounded" alt="LFC Logo" />
125                <span id="spnLFC" class="self-center text-xl font-bold whitespace-nowrap dark:text-gray-300 ml-5">Liceo Franco Costarricense</span>
126            </a>
127            <div class="bg-white shadow mt-10 rounded-lg md:mt-0 w-full sm:max-w-screen-sm xl:p-0 dark:bg-gray-600 dark:border-gray-700">
128
129                <div class="w-full pb-5 pt-5">
130                    <center>
131                        <h2 class="text-l lg:text-3xl max-w-screen-sm font-bold text-gray-900 dark:text-gray-300">
132                            Iniciar sesión en la plataforma
133                        </h2>
134                    </center>
135                </div>
136                <div class="tb-load ">
137                    <table class="shadow relative md:mt-0 xl:p-0 dark:bg-gray-600 w-full dark:border-gray-700">
138                        <th class="w-33 rounded-lg bg-blue-700"></th>
139                        <th class="w-33 bg-white"></th>
140                        <th class="w-33 rounded-lg bg-red-700"></th>
141                    </table>
142                </div>
143                <div class="p-6 sm:p-8 lg:p-16 space-y-8">
144                    <form class="mt-5 space-y-6" action="" method="post">
145                        <div>
146                            <label for="usuario" class="text-sm font-medium text-gray-900 block mb-2 dark:text-gray-300">Usuario</label>
147                            <input type="text" name="usuario" id="usuario" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="Usuario de sistema (No es el correo electrónico)" required="">
148                        </div>
149                        <div class="relative z-0 mb-6 w-full group">
150                            <input type="password" name="password" id="password" placeholder="Ingresa tu contraseña" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" required="">
151                            <button id="theme-toggle-password" type="button" class="flex absolute inset-y-0 right-0 items-center pr-3">
152                                <svg id="theme-toggle-eye-password" class="hidden w-4 h-4  text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
153                                    <path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
154                                    <path fill-rule="evenodd" d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z" clip-rule="evenodd"></path>
155                                </svg>
156                                <svg id="theme-toggle-eye-off-password" class="w-4 h-4 text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
157                                    <path fill-rule="evenodd" d="M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z" clip-rule="evenodd"></path>
158                                    <path d="M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.065 7 9.542 7 .847 0 1.669-.105 2.454-.303z"></path>
159                                </svg>
160                            </button>
161                        </div>
162                        <div class="flex items-start">
163                            <div class="flex items-center h-5">
164                                <input id="remember" aria-describedby="remember" name="remember" type="checkbox" class="bg-gray-50 border-gray-300 focus:ring-3 focus:ring-cyan-200 h-4 w-4 roun
164ded">
165                            </div>
166                            <div class="text-sm ml-3">
167                                <label for="remember" class="font-medium text-gray-900 dark:text-gray-300 mr-5">Recordarme</label>
168                            </div>
169                            <a id="modal-recuperacion" class="text-sm text-teal-500 hover:underline ml-auto dark:text-gray-300 text-center dark:bg-gray-500 bg-gray-200 rounded-lg" data-modal-toggle="recovery-password-modal">¿Usuario y Contraseña perdida?</a>
170                        </div>
171                        <div class="flex items-end rounded-t dark:border-gray-600">
172                            <button id="states-button" data-dropdown-toggle="dropdown-states" class="flex-shrink-0 z-10 inline-flex items-center py-2.5 px-4 text-sm font-medium text-center text-gray-500 bg-gray-100 border border-gray-300 rounded-lg hover:bg-gray-200 focus:ring-4 focus:outline-none focus:ring-gray-100 dark:bg-gray-700 dark:hover:bg-gray-600 dark:focus:ring-gray-700 dark:text-white dark:border-gray-600" type="button">
173                                <div id="seltras"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="h-3.5 w-3.5 rounded-full mr-2" viewBox="0 0 10 6">
174                                        <path d="M0,0h10v6H0z" fill="#001489" />
175                                        <path d="M0,1h10v4H0z" fill="#fff" />
176                                        <path d="M0,2h10v2H0z" fill="#da291c" />
177                                        <deepl-alert xmlns="" /><deepl-alert xmlns="" /><deepl-alert xmlns="" />
178                                    </svg>
179                                </div>
180                                <label id="lblanguage">Español</label> &nbsp;
181                                <svg class="w-2.5 h-2.5 ml-2.5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 6">
182                                    <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m1 1 4 4 4-4" />
183                                </svg>
184                            </button>
185                            <div id="dropdown-states" class="z-10 hidden bg-white divide-y divide-gray-100 rounded-lg shadow w-44 dark:bg-gray-700">
186                                <ul class="py-2 text-sm effect_profile text-gray-700 dark:text-gray-200" aria-labelledby="states-button">
187                                    <li>
188                                        <button type="button" onclick="change_languages('es|es');" class="inline-flex w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-600 dark:hover:text-white">
189                                            <div class="inline-flex items-center">
190                                                <svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="h-3.5 w-3.5 rounded-full mr-2" viewBox="0 0 10 6">
191                                                    <path d="M0,0h10v6H0z" fill="#001489" />
192                                                    <path d="M0,1h10v4H0z" fill="#fff" />
193                                                    <path d="M0,2h10v2H0z" fill="#da291c" />
194                                                    <deepl-alert xmlns="" /><deepl-alert xmlns="" /><deepl-alert xmlns="" />
195                                                </svg>
196                                                Español
197                                            </div>
198                                        </button>
199                                    </li>
200                                    <li>
201                                        <button type="button" onclick="change_languages('es|fr');" class="inline-flex w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-600 dark:hover:text-white">
202                                            <div class="inline-flex items-center">
203                                                <svg xmlns="http://www.w3.org/2000/svg" class="h-3.5 w-3.5 rounded-full mr-2">
204                                                    <rect width="15" height="15" fill="#ED2939" />
205                                                    <rect width="9" height="15" fill="#fff" />
206                                                    <rect width="5" height="15" fill="#002395" /><deepl-alert xmlns="" /><deepl-alert xmlns="" /><deepl-alert xmlns="" />
207                                                </svg>
208                                                Frances
209                                            </div>
210                                        </button>
211                                    </li>
212                                    <li>
213                                        <button type="button" onclick="change_languages('es|en');" class="inline-flex w-full px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 dark:text-gray-400 dark:hover:bg-gray-600 dark:hover:text-white">
214                                            <div class="inline-flex items-center">
215                                                <svg aria-hidden="true" class="h-3.5 w-3.5 rounded-full mr-2" xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-us" viewBox="0 0 512 512">
216                                                    <g fill-rule="evenodd">
217                                                        <g stroke-width="1pt">
218                                                            <path fill="#bd3d44" d="M0 0h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0z" transform="scale(3.9385)" />
219                                                            <path fill="#fff" d="M0 10h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0z" transform="scale(3.9385)" />
220                                                        </g>
221                                                        <path fill="#192f5d" d="M0 0h98.8v70H0z" transform="scale(3.9385)" />
222                                                        <path fill="#fff" d="M8.2 3l1 2.8H12L9.7 7.5l.9 2.7-2.4-1.7L6 10.2l.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7L74 8.5l-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 7.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 24.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 21.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 38.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 35.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 52.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 49.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 66.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 
22263.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9z" transform="scale(3.9385)" />
223                                                    </g>
224                                                </svg>
225                                                Ingles
226                                            </div>
227                                        </button>
228                                    </li>
229                                </ul>
230                            </div>
231
232                            <div id="google_translate_element2"></div>
233                            
233<script type="text/javascript">
234                                function googleTranslateElementInit2() {
235                                    new google.translate.TranslateElement({
236                                        pageLanguage: 'auto',
237                                        includedLanguages: 'es,fr,en',
238                                        autoDisplay: false
239                                    }, 'google_translate_element2');
240                                }
241                            </script>
241
242                            
242<script type="text/javascript" src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit2"></script>
242
243                            
243<script type="text/javascript">
244                                /* <![CDATA[ */
245                                eval(function(p, a, c, k, e, r) {
246                                    e = function(c) {
247                                        return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
248                                    };
249                                    if (!''.replace(/^/, String)) {
250                                        while (c--) r[e(c)] = k[c] || e(c);
251                                        k = [function(e) {
252                                            return r[e]
253                                        }];
254                                        e = function() {
255                                            return '\\w+'
256                                        };
257                                        c = 1
258                                    }
259                                    while (c--)
260                                        if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
261                                    return p
262                                }('6 7(a,b){n{4(2.9){3 c=2.9("o");c.p(b,f,f);a.q(c)}g{3 c=2.r();a.s(\'t\'+b,c)}}u(e){}}6 h(a){4(a.8)a=a.8;4(a==\'\')v;3 b=a.w(\'|\')[1];3 c;3 d=2.x(\'y\');z(3 i=0;i<d.5;i++)4(d[i].A==\'B-C-D\')c=d[i];4(2.j(\'k\')==E||2.j(\'k\').l.5==0||c.5==0||c.l.5==0){F(6(){h(a)},G)}g{c.8=b;7(c,\'m\');7(c,\'m\')}}', 43, 43, '||document|var|if|length|function|GTranslateFireEvent|value|createEvent||||||true|else|doGTranslate||getElementById|google_translate_element2|innerHTML|change|try|HTMLEvents|initEvent|dispatchEvent|createEventObject|fireEvent|on|catch|return|split|getElementsByTagName|select|for|className|goog|te|combo|null|setTimeout|500'.split('|'), 0, {}))
263                                /* ]]> */
264                            </script>
264
265                            <style>
266                                .skiptranslate {
267                                    display: none;
268                                }
269                            </style>
270                            <button type="submit" onclick="login();" class="ml-auto inline-flex text-white bg-gradient-to-r from-cyan-500 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800 font-medium rounded-lg text-sm px-5 py-2.5 text-center">Ingresar a su cuenta</button>
271                        </div>
272                    </form>
273                    <div>
274                        <a href="https://www.franco.ed.cr/wp-content/uploads/Matricula-Recuperar-Usuario-y-restablecer-contrase%C3%B1a.pdf" target="_blank" class="inline-flex w-full items-center justify-center p-2 text-base font-medium text-gray-500 rounded-lg bg-gray-50 hover:text-gray-900 hover:bg-gray-100 dark:text-gray-400 dark:bg-gray-800 dark:hover:bg-gray-700 dark:hover:text-white">
275                        <b class="text-2xl animate-pulse">🚨</b>                                           
276                            <span class="w-full font-bold">Procedimiento para recuperar usuario y restablecer contraseña</span>
277                            <svg class="w-4 h-4 ms-2 rtl:rotate-180" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 10">
278                                <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M1 5h12m0 0L9 1m4 4L9 9"/>
279                            </svg>
280                           
281                        </a> 
282                    </div>
283                    <div class="splash"></div>
284                </div>
285            </div>
286        </div>
287    </main>
288    <footer class="w-full px-5 py-5 bg-white shadow md:py-10 dark:bg-gray-900">
289        <div class="flex justify-between sm:flex sm:items-center sm:justify-between pb-4">
290            <div class="">
291                <button id="theme-toggle" type="button" class="text-gray-500 m-20 transition duration-75 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 focus:outline-none focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 rounded-lg text-sm p-2.5 ">
292                    <svg id="theme-toggle-dark-icon" class="hidden w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
293                        <path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path>
294                    </svg>
295                    <svg id="theme-toggle-light-icon" class="hidden w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
296                        <path d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" fill-rule="evenodd" clip-rule="evenodd"></path>
297                    </svg>
298                </button>
299            </div>
300            <ul class="flex flex-wrap text-sm mt-2 text-gray-500 sm:mb-0 dark:text-gray-400">
301                <li>
302                    <a class="mr-4 hover:underline md:mr-6 text-xs" data-modal-toggle="termsModal">Terminos y condiciones</a>
303                </li>
304                <li>
305                    <a class="mr-4 hover:underline md:mr-6 text-xs" data-modal-toggle="privacityModal">Politicas de privacidad</a>
306                </li>
307            </ul>
308        </div>
309        <hr class="my-6 border-gray-200 sm:mx-auto dark:border-gray-700 lg:my-8" />
310        <div class="flex justify-between sm:items-center sm:justify-between pb-4">
311            <span class="block text-xs text-gray-500 sm:text-center dark:text-gray-400">© 2026 <a href="https://www.franco.ed.cr/" class="hover:underline">LFC</a>. All Rights Reserved.
312            </span>
313            <span class="block text-xs text-gray-500 sm:text-center dark:text-gray-400">
314              
315            </span>
316        </div>
317    </footer>
318    <div id="recovery-password-modal" tabindex="-1" aria-hidden="true" class="hidden effect_profile duration-200 delay-200 overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 w-full md:inset-0 h-modal md:h-full">
319        <div class="relative p-4 w-full max-w-md h-full md:h-auto">
320            <!-- Modal content -->
321            <div class="relative bg-white rounded-lg shadow dark:bg-gray-700">
322                <button type="button" class="absolute top-3 right-2.5 text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-800 dark:hover:text-white" data-modal-toggle="recovery-password-modal">
323                    <svg aria-hidden="true" class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
324                        <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
325                    </svg>
326                    <span class="sr-only">Close modal</span>
327                </button>
328                <div class="py-6 px-6 lg:px-8">
329                    <h3 class="mb-4 text-base font-medium text-gray-900 dark:text-white">Recuperación de usuario y contraseña</h3>
330                    <form class="space-y-6" action="#" method="post">
331                        <div class="hidden invisible">
332                            <label for="userRecovery" class="block mb-2 text-sm font-medium text-gray-900 dark:text-gray-300">Usuario de recuperación</label>
333                            <input type="text" name="userRecovery" id="userRecovery" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white" placeholder="Usuario" required>
334                        </div>
335                        <div>
336                            <label for="emailRecovery" class="block mb-2 text-sm font-medium text-gray-900 dark:text-gray-300">Email de usuario</label>
337                            <input type="email" name="emailRecovery" id="emailRecovery" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white" placeholder="[email protected]" required>
338                        </div>
339                        <div class="mb-4 mx-auto">
340                            <center>
341                                <div class="h-captcha" data-sitekey="87ba702b-ffe8-4b24-aaa9-d8be7ec1efa2" data-error-callback="onError"></div>
342                            </center>
343                        </div>
344                        <button id="sendCode" type="button" class="w-full hidden text-white bg-gradient-to-br from-purple-600 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800 font-medium rounded-lg text-sm px-5 py-2.5 text-center mr-2 mb-2 invisible">Enviar código</button>
345                        <button id="sendLink" type="button" class="w-full text-white bg-gradient-to-br from-purple-600 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800 font-medium rounded-lg text-sm px-5 py-2.5 text-center mr-2 mb-2">Enviar Link</button>
346                    </form>
347                    <div class="message"></div>
348                    <form class="space-y-6" action="#">
349                        <div id="diverify" class="mt-2 hidden">
350                            <div class="relative z-0 mb-6 w-full group">
351                                <input type="password" id="code-verify" name="code-verify" placeholder="" class="block px-2.5 pb-2.5 pt-4 w-full text-sm text-gray-900 bg-transparent roun
351ded-lg border-1 border-gray-300 appearance-none dark:text-white dark:border-gray-600 dark:focus:border-blue-500 focus:outline-none focus:ring-0 focus:border-blue-600 peer" placeholder="" required />
352                                <label id="pass__message" for="code-verify" class="absolute text-sm text-gray-500 dark:text-gray-400 duration-300 transform -translate-y-4 scale-75 top-2 z-10 origin-[0] bg-white dark:bg-gray-700 px-2 peer-focus:px-2 peer-focus:text-blue-600 peer-focus:dark:text-blue-500 peer-placeholder-shown:scale-100 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:top-1/2 peer-focus:top-2 peer-focus:scale-75 peer-focus:-translate-y-4 left-1">Código</label>
353                                <button id="theme-toggle" type="button" onclick="mostrarPassword()" class="flex absolute inset-y-0 right-0 items-center pr-3">
354                                    <svg id="theme-toggle-eye" class="hidden w-4 h-4 text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
355                                        <path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
356                                        <path fill-rule="evenodd" d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z" clip-rule="evenodd"></path>
357                                    </svg>
358                                    <svg id="theme-toggle-eye-off" class="w-4 h-4 text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
359                                        <path fill-rule="evenodd" d="M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z" clip-rule="evenodd"></path>
360                                        <path d="M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.065 7 9.542 7 .847 0 1.669-.105 2.454-.303z"></path>
361                                    </svg>
362                                </button>
363                            </div>
364                            <button type="button" id="btn-verify" class="w-full text-white bg-gradient-to-br from-green-400 to-blue-600 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-green-200 dark:focus:ring-green-800 font-medium rounded-lg text-sm px-5 py-2.5 text-center mr-2 mb-2 mt-2">Recuperar</button>
365                        </div>
366                    </form>
367                </div>
368            </div>
369
370        </div>
371    </div>
372    <div id="privacityModal" tabindex="-1" aria-hidden="true" class="hidden effect_profile asc_lang overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 w-full md:inset-0 h-modal md:h-full">
373        <div class="relative p-4 w-full max-w-2xl h-full md:h-auto">
374            <!-- Modal content -->
375            <div class="relative bg-white rounded-lg shadow dark:bg-gray-700">
376                <!-- Modal header -->
377                <div class="flex justify-between items-start p-4 rounded-t border-b dark:border-gray-600">
378                    <h3 class="text-xl font-semibold text-gray-900 dark:text-white">
379                        Politicas de privacidad
380                    </h3>
381                    <button type="button" class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white" data-modal-toggle="privacityModal">
382                        <svg aria-hidden="true" class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
383                            <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
384                        </svg>
385                        <span class="sr-only">Close modal</span>
386                    </button>
387                </div>
388                <!-- Modal body -->
389                <div class="p-6 space-y-6">
390                    <p class="text-base leading-relaxed text-gray-500 dark:text-gray-400">
391                        La política de privacidad de una página web es un documento legal en el que el titular de la web debe informar sus clientes y usuarios sobre los datos personales que se recopilan al navegar en el sitio, a través de que medios se recogen estos datos, se almacenan y sobre el tratamiento que se realizará de los mismos.
392                    </p>
393                </div>
394                <!-- Modal footer -->
395                <div class="flex items-center p-6 space-x-2 rounded-b border-t border-gray-200 dark:border-gray-600">
396                    <button data-modal-toggle="privacityModal" type="button" class="ml-auto text-white bg-red-600 hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:focus:ring-red-800 font-medium rounded-lg text-sm inline-flex items-center px-5 py-2.5 text-center mr-2">
397                        Cerrar
398                    </button>
399                </div>
400            </div>
401        </div>
402    </div>
403    <div id="termsModal" tabindex="-1" aria-hidden="true" class="hidden effect_profile asc_lang overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 w-full md:inset-0 h-modal md:h-full">
404        <div class="relative p-4 w-full max-w-2xl h-full md:h-auto">
405            <!-- Modal content -->
406            <div class="bg-white rounded-lg shadow dark:bg-gray-700">
407                <!-- Modal header -->
408                <div class="flex justify-between items-start p-4 rounded-t border-b dark:border-gray-600">
409                    <h3 class="text-xl font-semibold text-gray-900 dark:text-white">
410                        Terminos y condiciones
411                    </h3>
412                    <button type="button" class="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white" data-modal-toggle="termsModal">
413                        <svg aria-hidden="true" class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
414                            <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
415                        </svg>
416                        <span class="sr-only">Close modal</span>
417                    </button>
418                </div>
419                <!-- Modal body -->
420                <div class="p-6 space-y-6">
421                    <p class="text-base leading-relaxed text-gray-500 dark:text-gray-400">
422                        Los Términos y Condiciones representan el documento que ayuda a prevenir y resolver los problemas. Por ello, son fundamentales en muchos casos para defenderse en caso de abuso. Las Condiciones de servicio establecen la forma en que se puede utilizar tu producto, servicio o contenido de forma legalmente vinculante.
423                    </p>
424                </div>
425                <!-- Modal footer -->
426                <div class="flex relative p-6 space-x-2 rounded-b border-t border-gray-200 dark:border-gray-600">
427                    <button data-modal-toggle="termsModal" type="button" class="ml-auto text-white bg-red-600 hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:focus:ring-red-800 font-medium rounded-lg text-sm inline-flex items-center px-5 py-2.5 text-center mr-2">
428                        Cerrar
429                    </button>
430                </div>
431            </div>
432        </div>
433    </div>
434</body>
435<script>
436    let send = document.getElementById('sendCode');
437    let sendLink = document.getElementById('sendLink');
438    let verify = document.getElementById('code-verify');
439    let btnVerify = document.getElementById('btn-verify');
440    const diverify = document.getElementById('diverify');
441    let password = document.getElementById('code-verify');
442    let txtPass = document.getElementById('password');
443    let formPassword = document.getElementById('theme-toggle-password');
444
445    document.addEventListener('DOMContentLoaded', (e) => {
446        e.preventDefault();
447        change_languages('es|' + localStorage.getItem('language'));
448    })
449
450    btnVerify.addEventListener('click', function(e) {
451        e.preventDefault();
452        btnVerify.disabled = true;
453        $('.message').html('<div role="status"><center><svg aria-hidden="true" class="mr-2 w-8 h-8 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600" viewBox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"/><path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"/></svg><span class="sr-only">Loading...</span></center></div>');
454        let url = 'https://gestiondematricula.franco.ed.cr/routes/adminAjax.php';
455        let formData = new FormData();
456
457        userRecovery = $('#userRecovery').val();
458        emailRecovery = $('#emailRecovery').val();
459        codeVerify = $('#code-verify').val();
460        formData.append('email-recovery', emailRecovery);
461        formData.append('user-recovery', userRecovery);
462        formData.append('code-verify', codeVerify.trim());
463        fetch(url, {
464                method: 'POST',
465                body: formData,
466                mode: 'cors'
467            }).then(response => response.json())
468            .then(data => {
469                setTimeout(() => {
470                    if (data.ok == true) {
471                        $('.message').html('');
472                        btnVerify.disabled = true;
473                        Swal.fire(
474                            'Exito!',
475                            'Has recuperado tu cuenta, porfavor revisar su email..!',
476                            'success'
477                        )
478                    } else {
479                        $('.message').html(data.ok);
480                        btnVerify.disabled = false;
481                    }
482                }, 1000);
483
484            });
485    })
486
487    send.addEventListener('click', function(e) {
488
489        e.preventDefault();
490
491        let formData = new FormData();
492        let userRecovery = document.getElementById('userRecovery');
493        let emailRecovery = document.getElementById('emailRecovery');
494        let hCaptcha = document.getElementsByName('h-captcha-response');
495
496        if (userRecovery.value.trim() === "" || emailRecovery.value.trim() === "" || validateEmail(emailRecovery.value.trim()) === false) {
497            if (userRecovery.value === "") {
498                userRecovery.classList.add('border-red-500');
499                userRecovery.classList.add('dark:border-red-500');
500                userRecovery.classList.add('placeholder-red-700');
501            }
502            if (emailRecovery.value === "" || validateEmail(email.value.trim()) === false) {
503                emailRecovery.classList.add('border-red-500');
504                emailRecovery.classList.add('dark:border-red-500');
505                emailRecovery.classList.add('placeholder-red-700');
506            }
507            return false
508        } else {
509
510            userRecovery.classList.remove('border-red-500');
511            userRecovery.classList.remove('dark:border-red-500');
512            userRecovery.classList.remove('placeholder-red-700');
513            emailRecovery.classList.remove('border-red-500');
514            emailRecovery.classList.remove('dark:border-red-500');
515            emailRecovery.classList.remove('placeholder-red-700');
516        }
517
518
519        $('.message').html('<div role="status"><center><svg aria-hidden="true" class="mr-2 w-8 h-8 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600" viewB
519ox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"/><path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"/></svg><span class="sr-only">Loading...</span></center></div>');
520        let url = 'https://gestiondematricula.franco.ed.cr/routes/adminAjax.php';
521        send.disabled = true;
522
523        formData.append('userRecovery', userRecovery.value);
524        formData.append('emailRecovery', emailRecovery.value);
525        formData.append('h-captcha-response', hCaptcha[0].value);
526
527        fetch(url, {
528                method: 'POST',
529                body: formData,
530                mode: 'cors'
531            }).then(response => response.json())
532            .then(data => {
533                setTimeout(() => {
534                    if (data.ok == true) {
535                        $('.message').html('');
536                        diverify.classList.remove('hidden');
537                        send.disabled = true;
538                    } else {
539                        $('.message').html(data.ok);
540                        send.disabled = false;
541                    }
542                }, 1000);
543
544            });
545    })
546
547    sendLink.addEventListener('click', function(e) {
548
549        e.preventDefault();
550
551        let formData = new FormData();
552        let emailRecovery = document.getElementById('emailRecovery');
553        let hCaptcha = document.getElementsByName('h-captcha-response');
554
555        if (emailRecovery.value.trim() === "" || validateEmail(emailRecovery.value.trim()) === false) {
556            if (emailRecovery.value === "" || validateEmail(email.value.trim()) === false) {
557                emailRecovery.classList.add('border-red-500');
558                emailRecovery.classList.add('dark:border-red-500');
559                emailRecovery.classList.add('placeholder-red-700');
560            }
561            return false
562        } else {
563            emailRecovery.classList.remove('border-red-500');
564            emailRecovery.classList.remove('dark:border-red-500');
565            emailRecovery.classList.remove('placeholder-red-700');
566        }
567
568
569        $('.message').html('<div role="status"><center><svg aria-hidden="true" class="mr-2 w-8 h-8 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600" viewBox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"/><path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"/></svg><span class="sr-only">Loading...</span></center></div>');
570        let url = 'https://gestiondematricula.franco.ed.cr/routes/adminAjax.php';
571        sendLink.disabled = true;
572
573        formData.append('emailRecovery', emailRecovery.value);
574        formData.append('h-captcha-response', hCaptcha[0].value);
575
576        fetch(url, {
577                method: 'POST',
578                body: formData,
579                mode: 'cors'
580            }).then(response => response.json())
581            .then(data => {
582                setTimeout(() => {
583                    if (data.ok == true) {
584                        $('.message').html('');
585                        Swal.fire(
586                            'Exito!',
587                            'Se ha enviado un link de recuperación a su correo electrónico, porfavor revisar su email..!',
588                            'success'
589                        )
590                    } else {
591                        $('.message').html(data.ok);
592                        sendLink.disabled = false;
593                    }
594                }, 1000);
595
596            });
597    })
598
599    function login() {
600
601        let usuario = document.getElementById('usuario').value.trim();
602        let password = document.getElementById('password').value.trim();
603        $.ajax({
604            type: 'POST',
605            url: 'https://gestiondematricula.franco.ed.cr/routes/loginAjax.php',
606            data: {
607                'usuario': usuario,
608                'password': password
609            },
610            beforeSend: function(data) {
611                if (usuario != '' && password != '') {
612
613                    $(".tb-load").html('<marquee width="100%" scrolldelay="100" scrollamount="100" direction="left" loop="infinite">' +
614                        '<table class="tb-load shadow relative md:mt-0 xl:p-0 dark:bg-gray-600 w-full dark:border-gray-700">' +
615                        '<th class="w-33 rounded-lg bg-blue-700"></th>' +
616                        '<th class="w-33 bg-white"></th>' +
617                        '<th class="w-33 rounded-lg bg-red-700"></th>' +
618                        '</table>' +
619                        '</marquee>');
620                    $(".splash").html('<div role="status"><center><svg aria-hidden="true" class="mr-2 w-8 h-8 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600" viewBox="0 0 100 101" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"/><path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"/></svg><span class="sr-only">Loading...</span></center></div>');
621                }
622            },
623            success: function(data) {
624                setTimeout(() => {
625                    $('.tb-load').html('<table class="tb-load shadow relative md:mt-0 xl:p-0 dark:bg-gray-600 w-full dark:border-gray-700">' +
626                        '<th class="w-33 rounded-lg bg-blue-700"></th>' +
627                        '<th class="w-33 bg-white"></th>' +
628                        '<th class="w-33 rounded-lg bg-red-700"></th>' +
629                        '</table>');
630                    $('.splash').html("");
631                }, 2000);
632            }
633        })
634    }
635
636    function mostrarPassword() {
637
638        let eye = document.getElementById('theme-toggle-eye');
639        let eye_off = document.getElementById('theme-toggle-eye-off');
640        if (password.type == "password") {
641            password.type = "text";
642            eye.classList.remove('hidden');
643            eye_off.classList.add('hidden');
644        } else {
645            password.type = "password";
646            eye.classList.add('hidden');
647            eye_off.classList.remove('hidden');
648        }
649    }
650
651    formPassword.addEventListener('click', function(e) {
652
653        let eye = document.getElementById('theme-toggle-eye-password');
654        let eye_off = document.getElementById('theme-toggle-eye-off-password');
655        if (txtPass.type == "password") {
656            txtPass.type = "text";
657            eye.classList.remove('hidden');
658            eye_off.classList.add('hidden');
659        } else {
660            txtPass.type = "password";
661            eye.classList.add('hidden');
662            eye_off.classList.remove('hidden');
663        }
664    })
665
666    function change_languages(languge) {
667        doGTranslate(languge);
668        let arrlang = languge.split('|');
669        let namelang = document.getElementById('lblanguage');
670        let flag = document.getElementById('seltras');
671        let lfc = document.getElementById('spnLFC');
672
673        if (arrlang[1] == 'es') {
674            flag.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="h-3.5 w-3.5 rounded-full mr-2" viewBox="0 0 10 6">
675                                                    <path d="M0,0h10v6H0z" fill="#001489"/>
676                                                    <path d="M0,1h10v4H0z" fill="#fff"/>
677                                                    <path d="M0,2h10v2H0z" fill="#da291c"/>
678                                                    <deepl-alert xmlns=""/><deepl-alert xmlns=""/><deepl-alert xmlns=""/>
679                                                </svg>`;
680            namelang.innerHTML = 'Español';
681            // setTimeout(() => { document.title ="Sistema LFC"; }, "1000");
682            lfc.innerHTML = 'Liceo Franco Costarricense';
683            localStorage.setItem('language', 'es');
684            document.documentElement.lang = 'es';
685
686        } else if (arrlang[1] == 'fr') {
687            flag.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" class="h-3.5 w-3.5 rounded-full mr-2">
688                                                    <rect width="15" height="15" fill="#ED2939" />
689                                                    <rect width="9" height="15" fill="#fff" />
690                                                    <rect width="5" height="15" fill="#002395" /><deepl-alert xmlns="" /><deepl-alert xmlns="" /><deepl-alert xmlns="" />
691                                                </svg>`;
692            namelang.innerHTML = 'Frances';
693            // setTimeout(() => { document.title ="Système LFC"; }, "1000");
694            lfc.innerHTML = 'Lycée Franco-Costaricien';
695            localStorage.setItem('language', 'fr');
696            document.documentElement.lang = 'fr';
697
698        } else if (arrlang[1] == 'en') {
699            flag.innerHTML = `<svg aria-hidden="true" class="h-3.5 w-3.5 rounded-full mr-2" xmlns="http://www.w3.org/2000/svg" id="flag-icon-css-us" viewBox="0 0 512 512">
700                                                    <g fill-rule="evenodd">
701                                                        <g stroke-width="1pt">
702                                                            <path fill="#bd3d44" d="M0 0h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0z" transform="scale(3.9385)" />
703                                                            <path fill="#fff" d="M0 10h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0zm0 20h247v10H0z" transform="scale(3.9385)" />
704                                                        </g>
705                                                        <path fill="#192f5d" d="M0 0h98.8v70H0z" transform="scale(3.9385)" />
706                                                        <path fill="#fff" d="M8.2 3l1 2.8H12L9.7 7.5l.9 2.7-2.4-1.7L6 10.2l.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7L74 8.5l-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 7.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 24.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 21.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 38.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 35.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 52.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 49.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm-74.1 7l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7H65zm16.4 0l1 2.8H86l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm-74 7l.8 2.8h3l-2.4 1.7.9 2.7-2.4-1.7L6 66.2l.9-2.7-2.4-1.7h3zm16.4 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8H45l-2.4 1.7 1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9zm16.4 0l1 2.8h2.8l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h3zm16.5 0l.9 2.8h2.9l-2.3 1.7.9 2.7-2.4-1.7-2.3 1.7.9-2.7-2.4-1.7h2.9zm16.5 0l.9 2.8h2.9L92 
70663.5l1 2.7-2.4-1.7-2.4 1.7 1-2.7-2.4-1.7h2.9z" transform="scale(3.9385)" />
707                                                    </g>
708                                                </svg>`;
709            namelang.innerHTML = 'Ingles';
710            // setTimeout(() => { document.title ="System LFC"; }, "1000");
711
712            lfc.innerHTML = 'Franco Costa Rican High School';
713            localStorage.setItem('language', 'en');
714            document.documentElement.lang = 'en';
715        }
716
717        return false;
718    }
719</script>
719
720
721</html>
722<script>
723    var themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
724    var themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
725
726    // Change the icons inside the button based on previous settings
727    if (localStorage.getItem('color-theme') === 'dark' || (!('color-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
728        themeToggleLightIcon.classList.remove('hidden');
729    } else {
730        themeToggleDarkIcon.classList.remove('hidden');
731    }
732
733    var themeToggleBtn = document.getElementById('theme-toggle');
734
735    themeToggleBtn.addEventListener('click', function() {
736
737        // toggle icons inside button
738        themeToggleDarkIcon.classList.toggle('hidden');
739        themeToggleLightIcon.classList.toggle('hidden');
740
741        // if set via local storage previously
742        if (localStorage.getItem('color-theme')) {
743            if (localStorage.getItem('color-theme') === 'light') {
744                document.documentElement.classList.add('dark');
745                localStorage.setItem('color-theme', 'dark');
746            } else {
747                document.documentElement.classList.remove('dark');
748                localStorage.setItem('color-theme', 'light');
749            }
750
751            // if NOT set via local storage previously
752        } else {
753            if (document.documentElement.classList.contains('dark')) {
754                document.documentElement.classList.remove('dark');
755                localStorage.setItem('color-theme', 'light');
756            } else {
757                document.documentElement.classList.add('dark');
758                localStorage.setItem('color-theme', 'dark');
759            }
760        }
761
762    });
763</script>
vendor: 1 bytes, line 763
763
764<script>
765    function view_modal() {
766        Swal.fire({
767            title: 'Estas seguro?',
768            text: "No podrás revertir esto!",
769            icon: 'warning',
770            showCancelButton: true,
771            confirmButtonColor: '#3085d6',
772            cancelButtonColor: '#d33',
773            confirmButtonText: 'Yes, delete it!'
774        }).then((result) => {
775            if (result.isConfirmed) {
776                Swal.fire(
777                    'Deleted!',
778                    'Your file has been deleted.',
779                    'success'
780                )
781            }
782        })
783    }
784
785    function pages(page) {
786
787        $.ajax({
788            type: 'GET',
789            beforeSend: function(objeto) {
790
791                // $('.preload').html('<div id="sb" class="dark:bg-gray-700 bg-gray-100" style="opacity: 0.5;position: fixed;top: 0;left: 0;width: 100%;height: 100%;z-index: 1050;">' +
792                //     '<div style="height: 100%;display: flex;justify-content: center;align-items: center;"><img style="opacity:1;" width="200" height="200" src="https://gestiondematricula.franco.ed.cr/img/loading-9.gif"></div>' +
793                //     '</div>');
794
795            },
796            success: function(data) {
797                setTimeout(() => {
798                    window.location = 'https://gestiondematricula.franco.ed.cr/' + page;
799                }, 1000);
800            }
801        });
802    }
803</script>
vendor: 1 bytes, line 803
803
804<script>
805    function applyInputUpperCase(input) {
806        let mySentence = input.value;
807        let word = mySentence.split(" ");
808
809        for (let i = 0; i < word.length; i++) {
810            word[i] = word[i][0].toUpperCase() + word[i].substr(1);
811        }
812        input.value = word.join(' ');
813    }
814    
815    function applyInputMask(elementId, mask) {
816        let inputElement = document.getElementById(elementId);
817        let content = '';
818        let maxChars = numberCharactersPattern(mask);
819
820        inputElement.addEventListener('keydown', function(e) {
821            e.preventDefault();
822            if (isNumeric(e.key) && content.length < maxChars) {
823                content += e.key;
824            }
825            if (e.keyCode == 8) {
826                if (content.length > 0) {
827                    content = content.substr(0, content.length - 1);
828                }
829            }
830            inputElement.value = maskIt('0000-0000', content);
831        })
832    }
833
834    function maskIt(pattern, value) {
835        let position = 0;
836        let currentChar = 0;
837        let masked = '';
838        while (position < pattern.length && currentChar < value.length) {
839            if (pattern[position] === '0') {
840                masked += value[currentChar];
841                currentChar++;
842            } else {
843                masked += pattern[position];
844            }
845            position++;
846        }
847        return masked;
848    }
849
850    function numberCharactersPattern(pattern) {
851        let numberChars = 0;
852        for (let i = 0; i < pattern.length; i++) {
853            if (pattern[i] === '0') {
854                numberChars++;
855            }
856        }
857        return numberChars;
858    }
859
860    function isNumeric(char) {
861        return !isNaN(char - parseInt(char));
862    }
863
864    function validateEmail(valor) {
865        var regex = /^[-\w.%+]{1,64}@(?:[A-Z0-9-]{1,63}\.){1,125}[A-Z]{2,63}$/i;
866        if (!regex.test(valor)) {
867            return false;
868        } else {
869            return true;
870        }
871    }
872
873    function ventana(theURL, winName, features, myWidth, myHeight, isCenter) { //v3.0
874        if (window.screen)
875            if (isCenter)
876                if (isCenter == "true") {
877                    var myLeft = (screen.width - myWidth) / 2;
878                    var myTop = (screen.height - myHeight) / 2;
879                    features += (features != '') ? ',' : '';
880                    features += ',left=' + myLeft + ',top=' + myTop;
881                }
882        window.open(theURL, winName, features + ((features != '') ? ',' : '') + 'width=' + myWidth + ',height=' + myHeight);
883    }
884
885    function validateInputVoid(obj) {
886        if (obj.value == '') {
887            return false;
888        }
889        return true;
890    }
891
892    function haveMayus(cadena) {
893        let letras_mayusculas = "ABCDEFGHYJKLMNÑOPQRSTUVWXYZ";
894        for (i = 0; i < cadena.length; i++) {
895            if (letras_mayusculas.indexOf(cadena.charAt(i), 0) != -1) {
896                return 1;
897            }
898        }
899        return 0;
900    }
901
902    function haveMinus(cadena) {
903        let letras = "abcdefghyjklmnñopqrstuvwxyz";
904        for (i = 0; i < cadena.length; i++) {
905            if (letras.indexOf(cadena.charAt(i), 0) != -1) {
906                return 1;
907            }
908        }
909        return 0;
910    }
911
912    function haveNumber(cadena) {
913        let numeros = "0123456789";
914        for (i = 0; i < cadena.length; i++) {
915            if (numeros.indexOf(cadena.charAt(i), 0) != -1) {
916                return 1;
917            }
918        }
919        return 0;
920    }
921
922    function haveCharterSpecial(cadena) {
923        return cadena.match(/^[^@#*,.¡!¿?%$]+$/) ? 0 : 1;
924    }
925
926    function email_exists(email) {
927        var myHeaders = new Headers();
928        myHeaders.append("apikey", "Rd9Qtr4Bo050afESHEg97KsPKfU1QKF6");
929
930        var requestOptions = {
931        method: 'GET',
932        redirect: 'follow',
933        headers: myHeaders
934        };
935
936        fetch("https://api.apilayer.com/email_verification/check?email="+email+"", requestOptions)
937        .then(response => response.text())
938        .then(result => console.log(result))
939        .catch(error => console.log('error', error));
940
941    }
942    
943</script>
943  </body>
944
945</html>

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.