source: aportesmurachi/tahel/Murachi-pre/pruebaFinal.html

Last change on this file was 12e6ddf, checked in by Antonio Araujo <aaraujo@…>, 7 years ago

Agregados los directorio de aportes de Tahel al control de versiones.

  • Property mode set to 100644
File size: 63.7 KB
Line 
1<!DOCTYPE html>
2<html lang="es">
3    <head> <!--Inicio del head  -->
4        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5        <meta http-equiv="Content-Style-Type" content="text/css">
6        <meta http-equiv="Content-Script-Type" content="text/javascript">
7
8        <link rel="stylesheet" href="css/jquery.Jcrop.css" type="text/css" />
9
10        <script type="text/javascript" src="js/jquery.min.js"></script>
11        <script type="text/javascript" src="js/hwcrypto-legacy.js"></script>
12        <script type="text/javascript" src="js/hwcrypto.js"></script>
13        <script type="text/javascript" src="js/hex2base.js"></script>
14        <script type="text/javascript" src="js/forge.min.js"></script>
15        <script type="text/javascript" src="js/ajaxSetup.js"></script>
16        <script src="js/jquery.Jcrop.js"></script>
17       
18        <script type="text/javascript" charset="utf-8">
19       
20            var urlActiva = "https://"+window.location.hostname;
21            var jcrop_api;
22            $(document).ready(function() {
23                $.ajaxSetup({
24                    error:function(x,e){
25                        if(x.status==0){
26                            alert('Está fuera de línea!!\n Por favor chequee su conexión.');
27                        }else if(x.status==404){
28                            alert('La URL solicitada no fue encontrada.');
29                        }else if(x.status==500){
30                            alert('Error interno de servidor.');
31                        }else if(e=='parsererror'){
32                            alert('Error.\nSolicitud de interpretación de cadena JSON inválida.');
33                        }else if(e=='timeout'){
34                            alert('Tiempo de espera alcanzado.');
35                        }else {
36                            alert('Error desconocido.\n'+x.responseText);
37                        }
38                    }
39                });
40                $("#botonEnvia").click(enviaFormulario);
41                $("#botonCertificadoTarjeta").click(obtieneCertificado);
42                $("#botonPK12").click(cargaP12);
43                $("#botonImagen").click(cargaImagen);
44                $("#botonEstadisticas").click(verificaEstadisticas);
45                $("#botonSubeVerifica").click(cargaVerifica);
46                $("#botonTest").click(ejecutaPrueba);
47                $('#tablaImagen').css("display","none");
48                $("input[name=tipoPos]").click(cambioTipoPos)
49                descargarArchivo =  downQuery;
50            });
51           
52            function showCoords(c){
53                var alto = parseInt($('#imagenPrevia').attr("height").replace("px",""));
54                $("#llx").val(c.x);
55                $("#lly").val(((alto-c.y)-c.h));
56                $("#urx").val(c.w);
57                $("#ury").val(c.h);
58            };
59
60            var descargarArchivo;
61            function ejecutaDescarga(){
62                var opciones = new Object();
63                opciones.onCompletado = solicitudCompletada;
64                opciones.onSend = antesEnvioSolicitud;
65                opciones.onExito = exitoSolicitud;
66                opciones.onProgreso = muestraProgreso;
67                opciones.tipoResultado="binary";
68                opciones.id="1";
69                descargarArchivo.dArchivo($(this).attr("linkDescarga"),opciones);
70            }
71           
72            function muestraProgreso(evt,xhr){
73                $("#progresoDescarga").html(evt.lengthComputable+"<br>");
74                if (evt.lengthComputable) {
75                    var percentComplete = evt.loaded / evt.total;
76                    percentComplete *= 100;
77                    $("#progresoDescarga").html(percentComplete.toFixed(2).replace(".",",")+" % Descargado");
78                }else{
79                    $("#progresoDescarga").html("Progreso solo<br>");
80                }
81            }
82            function errorSolicitud(xhr, ajaxOptions, errorArrojado) {
83                $("#progresoDescarga").append("Error");
84                $("#progresoDescarga").append("<br>");
85                $("#progresoDescarga").append(xhr.responseText);
86                $("#progresoDescarga").append("<br>");
87                $("#progresoDescarga").append(errorArrojado);
88                $("#progresoDescarga").append("<br>");
89
90            }
91            function antesEnvioSolicitud(evt,opciones) {
92                console.log("antesEnvioSolicitud")
93                console.log(opciones.id);
94                $("#progresoDescarga").html("Iniciando descarga");
95                //$("#progresoDescarga").html("antesEnvioSolicitud")
96            }
97            function solicitudCompletada(evt,state) {
98                console.log("solicitudCompletada");
99                console.log(evt.opciones.id)
100                $("#progresoDescarga").html("");
101                //$("#progresoDescarga").html("solicitudCompletada");
102            }
103            function exitoSolicitud(data, status, xhr) { 
104                if(data){
105                    //$("#progresoDescarga"+"B").append("Objetivo: " + xhr.opciones.url + "<br>");
106                    var nombreArchivo = descargarArchivo.obtieneNombre(xhr);
107                    //$("#progresoDescarga"+"B").append("Archivo: " + nombreArchivo + "<br>");
108                    var downloadUrl = URL.createObjectURL(data);
109                    if(xhr.opciones.id=="1"){
110                        $("#progresoDescarga").html("100% Descarga completada");
111                        var a = document.createElement("a");
112                        a.href = downloadUrl;
113                        a.download = nombreArchivo;
114                        document.body.appendChild(a);
115                        a.click();
116                    }/*else{
117                        var a = document.createElement("img");
118                        a.src = downloadUrl;
119                        document.body.appendChild(a);
120                    }*/
121                }
122                $("#progresoDescarga"+"B").append("exitoSolicitud 2<br>");
123            }
124           
125            var certificadoActivo;
126            var almacenDigitalActivo=false;
127            function obtieneCertificado(){
128                window.hwcrypto.getCertificate({lang: "en"}).then(function(response) {
129                    var cert = response;
130                    certificadoActivo = cert;
131                    console.log("Using certificate:\n" + hexToPem(response.hex));
132                    console.log("Using certificate(HEX):\n" + response.hex);
133                    if(totalArchivos.length>0){
134                        $("button[name^='botonFirma-'").attr("disabled",false);
135                    }
136                });
137            }
138           
139            var fileIdActivo;
140            function enviaFormulario(){
141                for(var n =0;n<$("#file-sign")[0].files.length;n++){
142                    var formData = new FormData();
143                    formData.append("upload", $("#file-sign")[0].files[n]);
144                    //alert(urlActiva+"/Murachi/0.4/archivos/");
145                    $.ajax({           
146                        url: urlActiva+"/Murachi/0.4/archivos/",
147                        type: "post",
148                        dataType: "json",
149                        data: formData,
150                        xhr: function() {
151                                var myXhr = $.ajaxSettings.xhr();
152                                if(myXhr.upload){
153                                    myXhr.upload.addEventListener('progress',progressUpload, false);
154                                }
155                                return myXhr;
156                        },
157                        cache: false,
158                        contentType: false,
159                        processData: false,
160                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
161                        success: function(response) {
162                            $("#respuesta").html("");
163                            for(var key in response) {
164                                $("#respuesta").html($("#respuesta").html()+"<br>"+response[key])
165                                console.log(key);
166                            }
167                            $("input[name=tipoPos]").attr("checked",false);
168                            incluyeArchivo(response);
169                            console.log(response)
170                            if(jcrop_api != null){
171                                jcrop_api.destroy();
172                            }
173                            $('#tablaImagen').css("display","none");
174                        },                                                             
175                            error: function(jqXHR, textStatus, errorThrown){
176                                console.log('error: ' + textStatus);
177                                //var responseText = jQuery.parseJSON(jqXHR.responseText);
178                                console.log('ajax error function: ' + jqXHR.responseText);
179                                $("#respuesta").html("error function: " + jqXHR.responseText);
180                            }
181                    })
182                }
183            }
184            function progressUpload(e){
185                if(e.lengthComputable){
186                    var max = e.total;
187                    var current = e.loaded;
188
189                    var Percentage = (current * 100)/max;
190                    console.log(Percentage);
191
192
193                    if(Percentage >= 100)
194                    {
195                       // process completed
196                        $("#progresoCarga").html("100 % (Carga completada)");
197                    }else{
198                        $("#progresoCarga").html((Percentage.toFixed(2).replace(".",","))+" %");
199                       
200                    }
201                } 
202            }
203           
204            function buscaPos(cod){
205                var obj = new Array();
206                var alto = parseInt($('#imagenPrevia').attr("height").replace("px",""));
207                var ancho = parseInt($('#imagenPrevia').attr("width").replace("px",""));
208                var anchoFirma = parseInt($('#urx').val());
209                var altoFirma = parseInt($('#ury').val());
210                obj["alto"] = altoFirma;
211                obj["ancho"] = anchoFirma;
212                if(cod==1){
213                    obj["x"] = 0;
214                    obj["y"] = (alto-altoFirma);
215                }else if(cod==2){
216                    obj["y"] = (alto-altoFirma);
217                    obj["x"] = ((ancho/2)-(anchoFirma/2));
218                }else if(cod==3){
219                    obj["y"] = (alto-altoFirma);
220                    obj["x"] = ((ancho)-anchoFirma);
221                }else if(cod==4){
222                    obj["x"] = 0;
223                    obj["y"] = ((alto/2)-(altoFirma/2));
224                }else if(cod==5){
225                    obj["y"] = ((alto/2)-(altoFirma/2));
226                    obj["x"] = ((ancho/2)-(anchoFirma/2));
227                }else if(cod==6){
228                    obj["y"] = ((alto/2)-(altoFirma/2));
229                    obj["x"] = (ancho-anchoFirma);
230                }else if(cod==7){
231                    obj["x"] = 0;
232                    obj["y"] = 0;
233                }else if(cod==8){
234                    obj["y"] = 0;
235                    obj["x"] = ((ancho/2)-(anchoFirma/2));
236                }else if(cod==9){
237                    obj["y"] = 0;
238                    obj["x"] = (ancho-anchoFirma);
239                }
240               
241                return obj;
242            }
243           
244            function cambioTipoPos(){
245               
246                if($("input[name=idArchivo]:checked").val()!=undefined){
247                    if(jcrop_api != null){
248                        jcrop_api.destroy();
249                    }
250                    if($(this).val()!=3){
251                        $('#tablaImagen').css("display","none");
252                        dimensionesActuales=null;
253                    }else{
254                        var objArchivo = $("input[name=idArchivo]:checked");
255                        dimensionesActuales = new Array();
256                        dimensionesActuales["alto"] = objArchivo.attr("alto");
257                        dimensionesActuales["ancho"] = objArchivo.attr("ancho");
258                        dimensionesActuales["paginas"] = objArchivo.attr("paginas");
259                        if(dimensionesActuales["alto"]!=undefined){
260                            $('#imagenPrevia').attr("height","0");
261                            $('#imagenPrevia').attr("width","0");
262                            $('#tablaImagen').css("display","block");
263                            $('#tablaImagen').attr("width",dimensionesActuales["ancho"]+"px");
264                            $('#tablaImagen').attr("style","border:1px solid #000000");
265                            $('#imagenPrevia').attr("width",dimensionesActuales["ancho"]+"px");
266                            $('#imagenPrevia').attr("height",dimensionesActuales["alto"]+"px");
267                            $('#imagenPrevia').Jcrop({
268                                onChange: showCoords,
269                                onSelect: showCoords,
270                                bgColor:     'black',
271                                bgOpacity:   .4
272                                },function(){
273                                jcrop_api = this;
274                              })
275                        }
276                    }
277                }else{
278                    alert("Debe seleccionar primero un archivo");
279                }
280            }
281            var dimensionesActuales;
282            function cambiaArchivo(){
283                if(jcrop_api != null){
284                    jcrop_api.destroy();
285                }
286                $('#tablaImagen').css("display","none");
287               
288            }
289            function reemplazaCadena(busca,cambia,texto){
290                while(texto.indexOf(busca)>-1){
291                    texto = texto.replace(busca,cambia);
292                }
293                return texto;
294            }
295           
296            var totalArchivos = new Array();
297            function incluyeArchivo(response){
298                var idArchivo = response["fileId"];
299                totalArchivos.push(idArchivo);
300                var archivoNuevo = '<tr id="archivo-'+idArchivo+'">'+$("#archivoPrototipo").html()+'</tr>';
301                archivoNuevo = reemplazaCadena('/-idArchivo-/',idArchivo,archivoNuevo);
302                archivoNuevo = reemplazaCadena('/-ancho-/',response["ancho"],archivoNuevo);
303                archivoNuevo = reemplazaCadena('/-alto-/',response["alto"],archivoNuevo);
304                archivoNuevo = reemplazaCadena('/-paginas-/',response["paginas"],archivoNuevo);
305                archivoNuevo = reemplazaCadena('/-valorArchivo-/',idArchivo,archivoNuevo);
306                archivoNuevo = reemplazaCadena('/-valorRadioArchivo-/',idArchivo,archivoNuevo);
307                //archivoNuevo = reemplazaCadena('"montoUnitarioArticulo-"','"montoUnitarioArticulo-'+indice+'"',archivoNuevo);
308                //archivoNuevo = reemplazaCadena('"montoTotalArticulo-"','"montoTotalArticulo-'+indice+'"',archivoNuevo);
309                //archivoNuevo = reemplazaCadena('"cantidadArticulo-n-oferta"','"cantidadArticulo-'+indice+'-oferta"',archivoNuevo);
310                //archivoNuevo = reemplazaCadena('"montoUnitarioArticulo-n-oferta"','"montoUnitarioArticulo-'+indice+'-oferta"',archivoNuevo);
311                //archivoNuevo = reemplazaCadena('"montoTotalArticulo-n-oferta"','"montoTotalArticulo-'+indice+'-oferta"',archivoNuevo);
312                //archivoNuevo = reemplazaCadena('"botonEliminaArticulo-"','"botonEliminaArticulo-'+indice+'"',archivoNuevo);
313                //archivoNuevo = reemplazaCadena('"marcaArticulo-"','"marcaArticulo-'+indice+'"',archivoNuevo);
314                //archivoNuevo = reemplazaCadena('"exoneraArticulo-"','"exoneraArticulo-'+indice+'"',archivoNuevo);
315
316                //$("#tablaArticulos").append(archivoNuevo);
317                $(archivoNuevo).insertBefore("#totalArchivos");
318                $("input[name=idArchivo]").unbind('click');
319                $("input[name=idArchivo]").click(cambiaArchivo);
320                $("#botonFirma-"+idArchivo).click(procesaIndividual);
321                $("#botonDescarga-"+idArchivo).click(ejecutaDescarga);
322                var activo = false;
323                if(!certificadoActivo && !almacenDigitalActivo){
324                    activo = true;
325                }
326                $("#botonFirma-"+idArchivo).attr("disabled",activo);
327                $("#botonDescarga-"+idArchivo).attr("disabled",true);
328                $("#sinArchivos").css("display","none");
329                $("#archivo-"+idArchivo).css("display","block");
330                $("#cantArchivos").html(totalArchivos.length+" Archivos por firma")
331            }
332            var almacenId = "";
333            function cargaP12(){
334                if($("#p12")[0].files.length>0){
335                    var formData = new FormData();
336                    formData.append("upload", $("#p12")[0].files[0]);
337                    formData.append("clave", $("#clavePCKS12").val());
338                    $.ajax({           
339                        url: urlActiva+"/Murachi/0.4/archivos/p12",
340                        type: "post",
341                        dataType: "json",
342                        data: formData,
343                        xhr: function() {
344                                var myXhr = $.ajaxSettings.xhr();
345                                if(myXhr.upload){
346                                    myXhr.upload.addEventListener('progress',progressUpload, false);
347                                }
348                                return myXhr;
349                        },
350                        cache: false,
351                        contentType: false,
352                        processData: false,
353                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
354                        success: function(response) {
355                            $("#respuesta").html("");
356                            for(var key in response) {
357                                $("#respuesta").html($("#respuesta").html()+"<br>"+response[key])
358                                console.log(key);
359                            }
360                            if(response["error"]==""){
361                                almacenDigitalActivo = true;
362                                almacenId = response["fileId"];
363                                $("#mensajeP12").html("Archivo almacen digital PCKS12 cargado<br>Se firmará a nombre de "+response["propietario"])
364                                if(totalArchivos.length>0){
365                                    $("button[name^='botonFirma-'").attr("disabled",false);
366                                }
367                            }else{
368                               $("#mensajeP12").html("Se produjo un error al cargar el almacen digital PCKS12") 
369                            }
370                            console.log(response)
371
372                        },                                                             
373                            error: function(jqXHR, textStatus, errorThrown){
374                                console.log('error: ' + textStatus);
375                                //var responseText = jQuery.parseJSON(jqXHR.responseText);
376                                console.log('ajax error function: ' + jqXHR.responseText);
377                                $("#respuesta").html("error function: " + jqXHR.responseText);
378                            }
379                    })
380                }else{
381                    alert("Debe seleccionar un almacén digital de firma primero")
382                }
383            }
384            var imagenActiva = false;
385            var imagenId = "";
386            function cargaImagen(){
387                if($("#imagen")[0].files.length>0){
388                    var formData = new FormData();
389                    formData.append("upload", $("#imagen")[0].files[0]);
390                    $.ajax({           
391                        url: urlActiva+"/Murachi/0.4/archivos/imagenAdjunta",
392                        type: "post",
393                        dataType: "json",
394                        data: formData,
395                        xhr: function() {
396                                var myXhr = $.ajaxSettings.xhr();
397                                if(myXhr.upload){
398                                    myXhr.upload.addEventListener('progress',progressUpload, false);
399                                }
400                                return myXhr;
401                        },
402                        cache: false,
403                        contentType: false,
404                        processData: false,
405                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
406                        success: function(response) {
407                            $("#respuesta").html("");
408                            for(var key in response) {
409                                $("#respuesta").html($("#respuesta").html()+"<br>"+response[key])
410                                console.log(key);
411                            }
412                            imagenActiva = true;
413                            imagenId = response["fileId"];
414                            $("#mensajeImagen").html("Archivo imagen cargado")
415                            console.log(response)
416
417                        },                                                             
418                            error: function(jqXHR, textStatus, errorThrown){
419                                console.log('error: ' + textStatus);
420                                //var responseText = jQuery.parseJSON(jqXHR.responseText);
421                                console.log('ajax error function: ' + jqXHR.responseText);
422                                $("#respuesta").html("error function: " + jqXHR.responseText);
423                            }
424                    })
425                }else{
426                    alert("Debe seleccionar un archivo digital primero")
427                }
428            }
429           
430            function cargaVerifica(){
431                if($("#archivoVerifica")[0].files.length>0){
432                    var formData = new FormData();
433                    formData.append("upload", $("#archivoVerifica")[0].files[0]);
434                    $.ajax({           
435                        url: urlActiva+"/Murachi/0.4/archivos/firmados",
436                        type: "post",
437                        dataType: "json",
438                        data: formData,
439                        xhr: function() {
440                                var myXhr = $.ajaxSettings.xhr();
441                                if(myXhr.upload){
442                                    myXhr.upload.addEventListener('progress',progressVerifica, false);
443                                }
444                                return myXhr;
445                        },
446                        cache: false,
447                        contentType: false,
448                        processData: false,
449                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
450                        success: function(response) {
451                            $("#mensajeVerifica").html("Archivo subido correctamente");
452                            for(var key in response) {
453                                //$("#mensajeVerifica").html($("#mensajeVerifica").html()+"<br>"+response[key])
454                                console.log(key);
455                            }
456                            console.log(response)
457                            $("#mensajeVerifica").html($("#mensajeVerifica").html()+"<br>Cantidad de firmas en el documento: "+response["numberOfSignatures"]);
458                            if(response["numberOfSignatures"]>0){
459                                $("#mensajeVerifica").html($("#mensajeVerifica").html()+"<br>Firmantes del documento: ");
460                               
461                                for(var n=0;n<response["signatures"].length;n++){
462                                    var datosFirmante = new Array();
463                                    datosFirmante.push("Nombre firmante: "+response["signatures"][n]["nameOfTheSigner"]);
464                                    datosFirmante.push("Fecha de la firma: "+response["signatures"][n]["signedOn"]);
465                                    var validez = "No";
466                                    if(response["signatures"][n]["signerCertificateStillValid"]){
467                                        validez = "Si";
468                                    }
469                                    datosFirmante.push("Certificado válido: "+validez);
470                                    //datosFirmante.push("Fecha límite de la validez del certificado: "+response["signatures"][n]["signerCertificateValidTo"]);
471                                    //datosFirmante.push("Nombre: "+response["signatures"][n][""]);
472                                    $("#mensajeVerifica").html($("#mensajeVerifica").html()+"<blockquote>"+datosFirmante.join("<br>")+"</blockquote>");
473                                }
474                            }
475
476                        },                                                             
477                            error: function(jqXHR, textStatus, errorThrown){
478                                console.log('error: ' + textStatus);
479                                //var responseText = jQuery.parseJSON(jqXHR.responseText);
480                                console.log('ajax error function: ' + jqXHR.responseText);
481                                $("#respuesta").html("error function: " + jqXHR.responseText);
482                                archivoVerificarId = null;
483                            }
484                    })
485                }else{
486                    alert("Debe seleccionar un archivo para verificar primero")
487                }
488            }
489           
490           
491            function progressVerifica(e){
492                if(e.lengthComputable){
493                    var max = e.total;
494                    var current = e.loaded;
495
496                    var Percentage = (current * 100)/max;
497                    console.log(Percentage);
498
499
500                    if(Percentage >= 100)
501                    {
502                       // process completed
503                        $("#progresoVerifica").html("100 % (Carga completada)");
504                    }else{
505                        $("#progresoVerifica").html((Percentage.toFixed(2).replace(".",","))+" %");
506                       
507                    }
508                } 
509            }
510
511            function verificaEstadisticas(){
512                $.ajax({           
513                        url: urlActiva+"/Murachi/0.4/archivos/estadisticas",
514                        type: "get",
515                        dataType: "json",
516                        xhr: function() {
517                                var myXhr = $.ajaxSettings.xhr();
518                                if(myXhr.upload){
519                                    myXhr.upload.addEventListener('progress',progressUpload, false);
520                                }
521                                return myXhr;
522                        },
523                        cache: false,
524                        contentType: false,
525                        processData: false,
526                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
527                        success: function(response) {
528                            $("#respuesta").html("");
529                            for(var key in response) {
530                                $("#respuesta").html($("#respuesta").html()+"<br>"+response[key])
531                                console.log(key);
532                            }
533                            console.log(response)
534
535                        },                                                             
536                            error: function(jqXHR, textStatus, errorThrown){
537                                console.log('error: ' + textStatus);
538                                //var responseText = jQuery.parseJSON(jqXHR.responseText);
539                                console.log('ajax error function: ' + jqXHR.responseText);
540                                $("#respuesta").html("error function: " + jqXHR.responseText);
541                            }
542                    })
543            }
544           
545            function ejecutaPrueba(){
546                $.ajax({           
547                        url: urlActiva+"/Murachi/0.4/archivos/verificadirectorio",
548                        type: "get",
549                        dataType: "json",
550                        xhr: function() {
551                                var myXhr = $.ajaxSettings.xhr();
552                                if(myXhr.upload){
553                                    myXhr.upload.addEventListener('progress',progressUpload, false);
554                                }
555                                return myXhr;
556                        },
557                        cache: false,
558                        contentType: false,
559                        processData: false,
560                        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
561                        success: function(response) {
562                            $("#mensajeTest").html("Resultado obtenido");
563                            for(var key in response) {
564                                $("#mensajeTest").html($("#mensajeTest").html()+"<br>"+response[key])
565                                console.log(key);
566                            }
567                            console.log(response)
568
569                        },                                                             
570                            error: function(jqXHR, textStatus, errorThrown){
571                                console.log('error: ' + textStatus);
572                                //var responseText = jQuery.parseJSON(jqXHR.responseText);
573                                console.log('ajax error function: ' + jqXHR.responseText);
574                                $("#respuesta").html("error function: " + jqXHR.responseText);
575                            }
576                    })
577            }
578            var hashtype = "SHA-256";
579            var lang = "eng";
580            function procesaIndividual(){
581                    var cert = certificadoActivo;
582                    var continua = true;
583                    var mensajeContinua = "";
584                    var archivoEstimado = $(this).attr("id").replace("botonFirma-","");
585                    if($("input[name=fimaTarjeta]:checked").val()== undefined){
586                        if($("input[name=idArchivo]:checked").val()== archivoEstimado){
587                            if(!cert && !almacenDigitalActivo){
588                                alert("Debe seleccionar el certificado para firmar");
589                            }else{
590                                var firmaVisible = false;
591                                if($("input[name=firmaVisible]:checked").val()==1){
592                                    firmaVisible = true;
593                                }
594                                if($("input[name=idArchivo]:checked").val()==undefined){
595                                    alert("Debe seleccionar primero un archivo");
596                                }else{
597                                   
598                                    if($("input[name=tipoPos]:checked").val()==undefined || $("input[name=tipoPos]:checked").val()==1){
599                                        var alto = parseInt($('#imagenPrevia').attr("height").replace("px",""));
600                                        var ancho = parseInt($('#imagenPrevia').attr("width").replace("px",""));
601                                       
602                                        $("#llx").val(0);
603                                        $("#lly").val(50);
604                                        if($("#urx").val()==0 || $("#urx").val() < 0 || $("#urx").val() == ""){
605                                            $("#urx").val(100);
606                                        }
607                                        if($("#ury").val()==0 || $("#ury").val() < 0 || $("#ury").val() == ""){
608                                            $("#ury").val(50);
609                                        }
610                                       
611                                    }else if($("input[name=tipoPos]:checked").val()==2){
612                                        if($("input[name=tipoPos]:checked").val()==undefined){
613                                            continua = false;
614                                            mensajeContinua = "Debe seleccionar la posición de la firma";
615                                        }else{
616                                            var pos = buscaPos($("input[name=posFijo]:checked").val());
617                                            $("#llx").val(pos["x"]);
618                                            $("#lly").val(pos["y"]);
619                                            $("#urx").val(pos["ancho"]);
620                                            $("#ury").val(pos["alto"]);
621                                        }
622                                    }else if($("input[name=tipoPos]:checked").val()==3){
623                                        var api = jcrop_api;
624                                        var alto = parseInt($('#imagenPrevia').attr("height").replace("px",""));
625                                        $("#llx").val(api.tellSelect().x);
626                                        $("#lly").val(((alto-api.tellSelect().y)-api.tellSelect().h));
627                                        $("#urx").val(api.tellSelect().w);
628                                        $("#ury").val(api.tellSelect().h);
629                                    }
630                                    if(!cert){
631                                        var certificado = "";
632                                    }else{
633                                        certificado = cert.hex;
634                                    }
635                                    var muestraImagen = false;
636                                    if($("input[name=muestraImagen]:checked").val()==1){
637                                        muestraImagen = true;
638                                    }
639                                    var muestraImagenSola = false;
640                                    if($("input[name=muestraImagenSola]:checked").val()==1){
641                                        muestraImagenSola = true;
642                                    }
643                                    var ancho = 100;
644                                    if(!isNaN(parseInt($("#urx").val()))){
645                                        ancho = parseInt($("#urx").val());
646                                    }
647                                    var alto = 100;
648                                    if(!isNaN(parseInt($("#ury").val()))){
649                                        alto = parseInt($("#ury").val());
650                                    }
651                                    var posX = 100;
652                                    if(!isNaN(parseInt($("#llx").val()))){
653                                        posX = parseInt($("#llx").val());
654                                    }
655                                    var posY = 100;
656                                    if(!isNaN(parseInt($("#lly").val()))){
657                                        posY = parseInt($("#lly").val());
658                                    }
659                                    var urlFirma = urlActiva+"/Murachi/0.4/archivos/pdfs";
660                                    var firmaPK12 = false;
661                                    var clavePCKS12 ="";
662                                    var imagenAdjunta = "";
663                                    var tsa = false;
664                                    if($("input[name=tsa]:checked").val()==1){
665                                        tsa = true;   
666                                    }
667                                    if(imagenId!=null){
668                                        imagenAdjunta = imagenId;
669                                    }
670                                    if($("input[name=firmaTarjeta]:checked").val()==2){
671                                        if($("#clavePCKS12").val()!=""){
672                                            urlFirma = urlActiva+"/Murachi/0.4/archivos/pdfsPk";
673                                            firmaPK12 = true;
674                                            clavePCKS12 = $("#clavePCKS12").val();
675                                        }else{
676                                            continua = false;
677                                            mensajeContinua = "Debe ingresar la clave del almacén digital para poder continuar"
678                                        }
679                                    }
680                                    if(continua){
681                                        var fileId = $("input[name=idArchivo]:checked").val();
682                                        var parameters = JSON.stringify({
683                                            "fileId":fileId,
684                                            "certificate":certificado,
685                                            "reason":$("#razon").val(),
686                                            "location":$("#lugar").val(),
687                                            "contact":$("#contacto").val(),
688                                            "rotacion":$("#rotacion").val(),
689                                            "pagina":$("#pagina").val(),
690                                            "pk12":firmaPK12,
691                                            "clavePCKS12":clavePCKS12,
692                                            "almacenPCKS12":almacenId,
693                                            "signatureVisible":firmaVisible,
694                                            "lly":posY,
695                                            "llx":posX,
696                                            "ury":posY+alto,
697                                            "urx":posX+ancho,
698                                            "muestraImagen":muestraImagen,
699                                            "muestraImagenSola":muestraImagenSola,
700                                            "imagen":imagenAdjunta,
701                                            "tsa":tsa
702                                            });
703                                        if($("input[name=firmaTarjeta]:checked").val()==1){
704                                            $.ajax({
705                                                url:urlFirma,
706                                                type: "post",
707                                                dataType: "json",
708                                                data: parameters,
709                                                contentType: "application/json",
710                                                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
711                                                success: function(data, textStatus, jqXHR){
712                                                    for(var key in data) {
713                                                        $("#respuesta").html($("#respuesta").html()+"<br>"+data[key])
714                                                        console.log(key);
715                                                    }
716                                                    console.log(data)
717                                                    hashActual = data['hash']; 
718                                                    sesionActual = data['sessionId'];
719                                                     window.hwcrypto.sign(certificadoActivo, {type: hashtype, hex: hashActual}, {lang: lang}).then(function(signature) {
720                                                        var firmaActual = signature;
721                                                        console.log(hexToPem(signature.hex));
722                                                        console.log(signature.hex);
723                                                        var fileIdAct = $("input[name=idArchivo]:checked").val();
724
725                                                        $.ajax({
726                                                            type: 'POST',
727                                                            contentType: 'application/json',
728                                                            //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs/resenas",
729                                                            url:urlActiva+"/Murachi/0.4/archivos/pdfs/resenas",
730                                                            dataType: 'json',
731                                                            data: JSON.stringify({"signature":firmaActual.hex,fileId:fileIdAct,tsa:tsa}),
732                                                            headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
733                                                            success: function(data, textStatus, jqXHR){
734                                                                for(var key in data) {
735                                                                    $("#respuesta").html($("#respuesta").html()+"<br>"+data[key])
736                                                                    console.log(key);
737                                                                    var linkToDownload = "<a href=\""+urlActiva+"/Murachi/0.4/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
738                                                                    $("#respuesta").html($("#respuesta").html()+"<br>"+linkToDownload);
739                                                                    idFileDescargaActual = data['signedFileId'];
740                                                                }
741                                                                console.log(data);
742                                                                $("#botonDescarga-"+archivoEstimado).attr("linkDescarga",urlActiva+"/Murachi/0.4/archivos/descargas/" + data['signedFileId']);
743                                                                $("#botonDescarga-"+archivoEstimado).attr("disabled",false);
744                                                            }, function(err) {
745                                                                var error;
746                                                                if(err == "Error: user_cancel") {
747                                                                    console.log("getCertificate() failed: El usuario cancelo la operación"    );
748                                                                    error = "El usuario cancelo la operación"; 
749                                                                 }     
750                                                                 else if(err == "Error: no_certificates") {
751                                                                     console.log("getCertificate() failed: No hay certificado disponible")    ;
752                                                                     error = "No hay certificado disponible";
753                                                                 }
754                                                                 else if(err == "Error: no_implementation") {
755                                                                     console.log("getCertificate() failed: No hay soporte para el manejo del certificado");
756                                                                     error = "No hay soporte para el manejo del certificado";
757                                                                }
758                                                                $("#respuesta").html("getCertificate() failed: " + error);
759                                                           }
760                                                        });
761                                                    })
762
763
764
765                                                }, function(err) {
766                                                    var error;
767                                                    if(err == "Error: user_cancel") {
768                                                        console.log("getCertificate() failed: El usuario cancelo la operación"    );
769                                                        error = "El usuario cancelo la operación"; 
770                                                     }     
771                                                     else if(err == "Error: no_certificates") {
772                                                         console.log("getCertificate() failed: No hay certificado disponible")    ;
773                                                         error = "No hay certificado disponible";
774                                                     }
775                                                     else if(err == "Error: no_implementation") {
776                                                         console.log("getCertificate() failed: No hay soporte para el manejo del certificado");
777                                                         error = "No hay soporte para el manejo del certificado";
778                                                    }
779                                                    $("#respuesta").html("getCertificate() failed: " + error);
780                                               }
781                                            });
782                                       
783                                        }else{
784                                            $.ajax({
785                                                url: urlFirma,
786                                                type: "post",
787                                                dataType: "json",
788                                                data: parameters,
789                                                contentType: "application/json",
790                                                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
791                                                success: function(data, textStatus, jqXHR){
792                                                    for(var key in data) {
793                                                        $("#respuesta").html($("#respuesta").html()+"<br>"+data[key])
794                                                        console.log(key);
795                                                    }
796                                                    console.log(data)
797                                                    $("#botonFirma-"+archivoEstimado).attr("disabled",true);
798                                                    if(!almacenDigitalActivo){
799
800                                                    }else{
801                                                        var linkDescarga = "<a href=\""+urlActiva+"/Murachi/0.4/archivos/descargas/" + data['fileId'] +"\">descargar archivo firmado</a>";
802                                                        $("#respuesta").html($("#respuesta").html()+"<br>"+linkDescarga);
803                                                        idFileDescargaActual = data['fileId'];
804                                                        $("#botonDescarga-"+archivoEstimado).attr("linkDescarga",urlActiva+"/Murachi/0.4/archivos/descargas/" + data['fileId']);
805                                                        $("#botonDescarga-"+archivoEstimado).attr("disabled",false);
806                                                    }
807
808
809                                                }, function(err) {
810                                                    var error;
811                                                    if(err == "Error: user_cancel") {
812                                                        console.log("getCertificate() failed: El usuario cancelo la operación"    );
813                                                        error = "El usuario cancelo la operación"; 
814                                                     }     
815                                                     else if(err == "Error: no_certificates") {
816                                                         console.log("getCertificate() failed: No hay certificado disponible")    ;
817                                                         error = "No hay certificado disponible";
818                                                     }
819                                                     else if(err == "Error: no_implementation") {
820                                                         console.log("getCertificate() failed: No hay soporte para el manejo del certificado");
821                                                         error = "No hay soporte para el manejo del certificado";
822                                                    }
823                                                    $("#respuesta").html("getCertificate() failed: " + error);
824                                               }
825                                            });
826                                        }
827                                    }else{
828                                        alert(mensajeContinua);
829                                    }
830                                }
831                            }
832                        }else{
833                            alert("Debe seleccionar este archivo para poder firmarlo")
834                        }
835                    }else{
836                        alert("Debe seleccionar un método de firma")
837                    }
838            }
839           
840        </script>
841        </head> 
842
843
844    <body>
845        <table width="1200" border="0" cellspacing="2" cellpadding="5" id="tablaArticulos" align="center">
846            <tr>
847                <td colspan="4" style="text-align:center;">PRUEBA DE MURACHI</td>
848            </tr>
849            <tr>
850                <td colspan="4" style="text-align:center;">&nbsp;</td>
851            </tr>
852            <tr>
853                <td colspan="4" style="text-align:center;">SELECCIONE UN ARCHIVO PARA COLOCARLO</td>
854            </tr>
855            <tr>
856                <td colspan="4" style="text-align:left;"><input id="file-sign" type="file" data-min-file-count="1" name="upload" multiple ></td>
857            </tr>
858            <tr>
859                <td colspan="4" style="text-align:left;"><button type="button" class="button" name="botonEnvia" id="botonEnvia">Cargar archivos</button></td>
860            </tr>
861            <tr>
862                <td colspan="4" style="text-align:left;" id="progresoCarga">&nbsp;</td>
863            </tr>
864            <tr>
865                <td colspan="4" style="text-align:left;" id="progresoDescarga">&nbsp;</td>
866            </tr>
867           
868            <tr>
869                <td colspan="4" style="text-align:center;">ARCHIVOS INCLUIDOS PARA LA FIRMA</td>
870            </tr>
871            <tr>
872            <td colspan="4" id="sinArchivos" align="center" valign="middle" height="40">
873                <strong>No se han ingresado items aún</strong>
874            </td>
875            </tr>
876            <tr id="archivoPrototipo" style="display:none;">
877                <td style="text-align:left;" width="20"><input type="hidden" value="/-valorArchivo-/" id="/-idArchivo-/" name="/-idArchivo-/"/><input type="radio" id="idArchivo" name="idArchivo" value="/-valorRadioArchivo-/" ancho="/-ancho-/" alto="/-alto-/" paginas="/-paginas-/"/></td>
878                <td style="text-align:left;" width="480">/-valorArchivo-/</td>
879                <td style="text-align:left;" width="150"><button type="button" class="button" name="botonFirma-/-idArchivo-/" id="botonFirma-/-idArchivo-/" disabled>Firma Archivo</button></td>
880                <td style="text-align:left;" width="180"><button type="button" class="button" name="botonDescarga-/-idArchivo-/" id="botonDescarga-/-idArchivo-/" disabled>Descarga Archivo</button></td>
881            </tr>
882            <tr id="totalArchivos">
883                <td colspan="4" style="text-align:center;"  id="cantArchivos">&nbsp;</td>
884            </tr>
885            <tr>
886                <td colspan="4" style="text-align:center;">
887                                    <table width="1200" border="0" cellspacing="2" cellpadding="5"  align="center">
888                        <tr>
889                <td style="text-align:left;">Razon: <input type="text" value="" id="razon" name="razon"/></td>
890                <td style="text-align:left;">Lugar: <input type="text" value="" id="lugar" name="lugar"/></td>
891                <td style="text-align:left;">Contacto: <input type="text" value="" id="contacto" name="contacto"/></td>
892                                        </tr>
893                    </table>
894                </td>
895            </tr>
896           
897            <tr>
898                <td style="text-align:left;" width="20" colspan="4">
899                    <input type="radio" id="firmaTarjeta" name="firmaTarjeta" value="1"/>Se firmará con tarjeta Smartcard
900                </td>
901            </tr>
902            <tr>
903                <td colspan="4" style="text-align:center;">
904                    FIRMA CON TARJETA
905                </td>
906            </tr>
907           
908            <tr>
909                <td colspan="4" style="text-align:center;">
910                    <button type="button" class="button" name="botonCertificadoTarjeta" id="botonCertificadoTarjeta">Obtiene Certificado desde Tarjeta</button>
911                </td>
912            </tr>
913            <tr>
914                <td colspan="4" style="text-align:center;">
915                    FIRMA CON CERTIFICADO DIGITAL (.P12)
916                </td>
917            </tr>
918            <tr>
919                <td style="text-align:left;" width="20" colspan="4">
920                    <input type="radio" id="firmaTarjeta" name="firmaTarjeta" value="2" checked/>Se firmará con almacén digital
921                </td>
922            </tr>
923            <tr>
924                <td colspan="4" style="text-align:left;">
925                    <input id="p12" type="file" data-min-file-count="1" name="p12">
926                </td>
927            </tr>
928            <tr>
929                <td colspan="4" style="text-align:center;" id="mensajeP12">
930                    &nbsp;
931                </td>
932            </tr>
933            <tr>
934                <td style="text-align:left;" colspan="2" width="500">
935                    CLAVE DEL ALMACEN: <input type="password" value="" id="clavePCKS12" name="clavePCKS12"/>
936                </td>
937                <td style="text-align:left;" width="150">&nbsp;</td>
938                <td style="text-align:left;" width="150">&nbsp;</td>
939                <td style="text-align:left;" width="150">&nbsp;</td>
940            </tr>
941           
942            <tr>
943                <td colspan="4" style="text-align:center;">
944                    <button type="button" class="button" name="botonPK12" id="botonPK12">Carga PKCS 12</button>
945                </td>
946            </tr>
947           
948            <tr>
949                <td colspan="4" style="text-align:center;">
950                    &nbsp;
951                </td>
952            </tr>
953            <tr>
954                <td colspan="4" style="text-align:center;">
955                    CARACTERÍSTICAS A MOSTRAR
956                </td>
957            </tr>
958            <tr>
959                <td colspan="4" style="text-align:center;">
960               
961                                    <table width="900" border="0" cellspacing="2" cellpadding="5"  align="center">
962                <tr>
963                    <td style="text-align:left;" colspan="2">COLOCAR SERVICIO DE ESTAMPADO DE TIEMPO</td>
964                </tr>
965                <tr>
966                    <td style="text-align:left;" width="450"><input type="radio" id="tsa" name="tsa" value="1"/>Si</td>
967                    <td style="text-align:left;" width="450"><input type="radio" id="tsa" name="tsa" value="0" checked/>No</td>
968                </tr>
969                </table>
970                </td>
971            </tr>           
972            <tr>
973                <td style="text-align:left;" width="20" colspan="4">
974                    <input type="radio" id="firmaVisible" name="firmaVisible" value="1" checked/>Firma Visible
975                </td>
976            </tr>
977            <tr>
978                <td colspan="4" style="text-align:center;">
979               
980                <table width="1000" border="0" cellspacing="2" cellpadding="5"  align="center">
981                    <tr>
982                        <td style="text-align:left;" width="200">Pos X<br><input type="text" value="0" id="llx" name="llx"/></td>
983                        <td style="text-align:left;" width="200">Pos Y<br><input type="text" value="0" id="lly" name="lly"/></td>
984                        <td style="text-align:left;" width="200">Ancho<br><input type="text" value="100" id="urx" name="urx"/></td>
985                        <td style="text-align:left;" width="200">Alto<br><input type="text" value="50" id="ury" name="ury"/></td>
986                        <td style="text-align:left;" width="200">Rotación<br><input type="text" value="0" id="rotacion" name="rotacion"/></td>
987                    </tr>
988
989                    <tr>
990                        <td style="text-align:left;" colspan="5">Página<br><input type="text" value="1" id="pagina" name="pagina"/></td>
991                    </tr>
992                </table>
993                </td>
994            </tr>
995            <tr>
996                <td style="text-align:left;" width="20" colspan="4">
997                    <input type="radio" id="firmaVisible" name="firmaVisible" value="2"/>Firma no Visible
998                </td>
999            </tr>
1000           
1001           
1002            <tr>
1003                <td colspan="4" style="text-align:center;">
1004                    IMÁGEN ADJUNTA AL MENSAJE
1005                </td>
1006            </tr>
1007           
1008            <tr>
1009                <td colspan="4" style="text-align:left;"><input id="imagen" name="imagen" type="file" data-min-file-count="1" name="min"></td>
1010            </tr>
1011            <tr>
1012                <td colspan="4" style="text-align:center;" id="mensajeImagen">
1013                    &nbsp;
1014                </td>
1015            </tr>
1016            <tr>
1017                <td colspan="4" style="text-align:center;">
1018                    <button type="button" class="button" name="botonImagen" id="botonImagen">Carga Imágen</button>
1019                </td>
1020            </tr>
1021           
1022            <tr>
1023                <td style="text-align:left;" width="20" colspan="4">
1024                    <input type="radio" id="muestraImagen" name="muestraImagen" value="1"/>Muestra Imágen
1025                </td>
1026            </tr>
1027            <tr>
1028                <td style="text-align:left;" width="20" colspan="4">
1029                    <input type="radio" id="muestraImagen" name="muestraImagen" value="2" checked/>No muestra imágen
1030                </td>
1031            </tr>
1032           
1033            <tr>
1034                <td style="text-align:left;" width="20" colspan="4">
1035                    <input type="radio" id="muestraImagenSola" name="muestraImagenSola" value="1"/>Muestra imagen sola
1036                </td>
1037            </tr>
1038            <tr>
1039                <td style="text-align:left;" width="20" colspan="4">
1040                    <input type="radio" id="muestraImagenSola" name="muestraImagenSola" value="2" checked/>No muestra imagen sola
1041                </td>
1042            </tr>
1043           <tr>
1044                <td colspan="4" style="text-align:center;">
1045                    POSICIONAMIENTO
1046                </td>
1047            </tr>
1048            <tr>
1049                <td style="text-align:left;" width="20" colspan="4">
1050                    <input type="radio" id="tipoPos" name="tipoPos" value="1" checked/>Por defecto
1051                </td>
1052            </tr>
1053            <tr>
1054                <td style="text-align:left;" width="20" colspan="4">
1055                    <input type="radio" id="tipoPos" name="tipoPos" value="2"/>Predeterminado
1056                </td>
1057            </tr>
1058           
1059            <tr>
1060                <td colspan="4" style="text-align:center;">
1061                   <table width="120" border="0" cellspacing="2" cellpadding="5" align="center">
1062                     <tr>
1063                        <td style="text-align:center;" width="40">
1064                            <input type="radio" id="posFijo" name="posFijo" value="1"/>
1065                        </td>
1066                         <td style="text-align:center;" width="40">
1067                            <input type="radio" id="posFijo" name="posFijo" value="2"/>
1068                        </td>
1069                         <td style="text-align:center;" width="40">
1070                            <input type="radio" id="posFijo" name="posFijo" value="3"/>
1071                        </td>
1072                    </tr> 
1073                    <tr>
1074                        <td style="text-align:center;" width="40">
1075                            <input type="radio" id="posFijo" name="posFijo" value="4"/>
1076                        </td>
1077                         <td style="text-align:center;" width="40">
1078                            <input type="radio" id="posFijo" name="posFijo" value="5"/>
1079                        </td>
1080                         <td style="text-align:center;" width="40">
1081                            <input type="radio" id="posFijo" name="posFijo" value="6"/>
1082                        </td>
1083                    </tr>
1084                    <tr>
1085                        <td style="text-align:center;" width="40">
1086                            <input type="radio" id="posFijo" name="posFijo" value="7"/>
1087                        </td>
1088                         <td style="text-align:center;" width="40">
1089                            <input type="radio" id="posFijo" name="posFijo" value="8"/>
1090                        </td>
1091                         <td style="text-align:center;" width="40">
1092                            <input type="radio" id="posFijo" name="posFijo" value="9"/>
1093                        </td>
1094                    </tr>
1095                    </table>
1096                </td>
1097            </tr>
1098                        <tr>
1099                <td style="text-align:left;" width="20" colspan="4">
1100                    <input type="radio" id="tipoPos" name="tipoPos" value="3"/>Personalizado
1101                </td>
1102            </tr>
1103            <tr>
1104                <td colspan="4" style="text-align:center;">
1105                    <table width="1200" border="0" cellspacing="2" cellpadding="5" id="tablaImagen" align="center">
1106                        <tr>
1107                            <td>
1108                                <img src="img/pixelBlanco.jpg" width="0" height="0" style="border:0px solid #000000;" id="imagenPrevia"/>
1109                            </td>
1110                        </tr>
1111                    </table>
1112                </td>
1113            </tr>
1114           
1115            <tr>
1116                <td colspan="4" style="text-align:center;">
1117                    &nbsp;
1118                </td>
1119            </tr>
1120            <tr>
1121                <td colspan="4" style="text-align:center;">
1122                    &nbsp;
1123                </td>
1124            </tr>
1125            <tr>
1126                <td colspan="4" style="text-align:center;">
1127                    VERIFICACIÓN DE FIRMAS
1128                </td>
1129            </tr>
1130           
1131            <tr>
1132                <td colspan="4" style="text-align:left;"><input id="archivoVerifica" name="archivoVerifica" type="file" data-min-file-count="1" name="min"></td>
1133            </tr>
1134            <tr>
1135                <td colspan="4" style="text-align:center;" id="progresoVerifica">
1136                    &nbsp;
1137                </td>
1138            </tr>
1139            <tr>
1140                <td colspan="4" style="text-align:center;" id="mensajeVerifica">
1141                    &nbsp;
1142                </td>
1143            </tr>
1144            <tr>
1145                <td colspan="4" style="text-align:center;">
1146                    <button type="button" class="button" name="botonSubeVerifica" id="botonSubeVerifica">Carga Archivo a Verificar</button>
1147                </td>
1148            </tr>
1149            <tr>
1150                <td colspan="4" style="text-align:center;">
1151                    &nbsp;
1152                </td>
1153            </tr>
1154            <tr>
1155                <td colspan="4" style="text-align:center;" id="mensajeVerificacion">
1156                    &nbsp;
1157                </td>
1158            </tr>
1159            <tr>
1160                <td colspan="4" style="text-align:center;">
1161                    <button type="button" class="button" name="botonEstadisticas" id="botonEstadisticas">Obtiene estadisticas</button>
1162                </td>
1163            </tr>
1164                        <tr>
1165                <td colspan="4" style="text-align:center;">
1166                    &nbsp;
1167                </td>
1168            </tr>
1169            <tr>
1170                <td colspan="4" style="text-align:center;">
1171                    <button type="button" class="button" name="botonTest" id="botonTest">Prueba de función</button>
1172                </td>
1173            </tr>
1174            <tr>
1175                <td colspan="4" style="text-align:center;" id="mensajeTest">
1176                    &nbsp;
1177                </td>
1178            </tr>
1179                                    <tr>
1180                <td colspan="4" style="text-align:center;">
1181                    &nbsp;
1182                </td>
1183            </tr>
1184        </table>
1185       
1186        </body>
1187</html>
Note: See TracBrowser for help on using the repository browser.