/* Copyright (C) 2012 [Gobierno de Espana] * This file is part of "Cliente @Firma". * "Cliente @Firma" is free software; you can redistribute it and/or modify it under the terms of: * - the GNU General Public License as published by the Free Software Foundation; * either version 2 of the License, or (at your option) any later version. * - or The European Software License; either version 1.1 or (at your option) any later version. * Date: 11/01/11 * You may contact the copyright holder at: soporte.afirma5@seap.minhap.es */ /* * - Soporta CSS en etiquetas LINK y STYLE. No soporta @import en CSS * - Elimina SCRIPTS y comentarios * - Escapa textos y valores de atributos -> Escapado XML / HTML */ ELEMENT = 1; ATTRIBUTE = 2; TEXT = 3; CDATA = 4; ENTITY_REFERENCE = 5; PROCESSING_INSTRUCTION = 6; COMMENT = 7; DOCUMENT = 8; DOCUMENT_TYPE = 9; DOCUMENT_FRAGMENT = 10; NOTATION = 11; var alwaysClose = new Array("script", "textarea", "title", "iframe"); var neverClose = new Array("input", "br"); var specialAtts = new Array("value", "selected", "checked"); var forbiddenAtts = new Array( "contenteditable", "start", "loop", "maxLength", "disabled", "onreset", "onsubmit", "onclick", "onmousedown", "onmouseup", "onblur", "onchange", "onfocus", "onkeydown", "onkeyup", "onkeypress", "onselect", "onafterupdate", "onbeforeupdate", "onerrorupdate", "onabort", "onerror", "onscroll", "onbounce", "onfinish", "onstart", "oncellchange", "ondataavailable", "ondatasetchanged", "ondatasetcomplete", "onrowenter", "onrowexit", "onrowsdelete", "onrowsinserted", "onafterprint", "onbeforeprint", "onbeforeunload", "onclose", "ondragdrop", "onhelp", "onmousemove", "onmouseout", "onmouseover", "onmove", "onmovestart", "onmoveend", "ondblclick", "onactivate", "onbeforecopy", "onbeforecut", "onbeforedeactivate", "onbeforeeditfocus", "onbeforepaste", "oncontextmenu", "oncontrolselect", "oncopy", "oncut", "ondrag", "ondrop", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "onfilterchange", "onfocusin", "onfocusout", "onlosecapture", "onmouseenter", "onmouseleave", "onmousewheel", "onpaste", "onpropertychange", "onreadystatechange", "onresize", "onresizestart", "onresizeend", "onselectstart", "onstop" ); var inputs = new Array("input", "textarea", "select"); var textualTags = new Array("title", "textarea"); var fileNo=0; function firmaWeb(element, doc) { fileNo = 0; var html = toXMLPart(element, doc); html = clienteFirma.webSign(html); return html; } function toXMLPart(element, doc) { fileNo = 0; var xml= "\n"; var styles= getStyles(doc); xml+="
\n\n\n\n"; xml+= toXML(element); xml+="\n\n"; return xml; } function toXML(element) { var xml=""; switch(element.nodeType) { case ELEMENT: if(element.nodeName.toLowerCase()!='script') { xml = toXMLElement(element); } break; case TEXT: xml = htmlEscape(element.nodeValue); break; case CDATA: xml = ""; break; /* Eliminamos c?digo y comentarios */ case PROCESSING_INSTRUCTION: case COMMENT: xml = ""; break; default: xml = toXMLChildNodes(element); break; } return xml; } function toXMLElement(element) { if(element.nodeName.charAt(0)=='/' || element.nodeName.toLowerCase()=="script") { return ""; } var xml= ""; if(element.nodeName.toLowerCase()=="input" && element.type.toLowerCase()=="file") { var n = fileNo++; xml+="