├── .gitignore ├── LICENSE.md ├── README.md ├── domrj ├── constants.py ├── datastructures.py ├── dom_tokens.py ├── dom_urls.py ├── domhtml │ ├── __init__.py │ ├── domrj_html.py │ └── treeparser.py ├── dompdf │ ├── __init__.py │ ├── content.py │ ├── domrj_pdf.py │ └── models.py ├── sample_data │ ├── Diário Oficial.htm │ ├── Diário Oficial_files │ │ ├── back-round.png │ │ ├── ftiens4.js │ │ ├── ftv2blank.gif │ │ ├── ftv2doc.gif │ │ ├── ftv2folderclosed.gif │ │ ├── ftv2folderopen.gif │ │ ├── ftv2lastnode.gif │ │ ├── ftv2mnode.gif │ │ ├── ftv2node.gif │ │ ├── ftv2plastnode.gif │ │ ├── ftv2pnode.gif │ │ ├── ftv2vertline.gif │ │ ├── home.html │ │ ├── load_tree.html │ │ ├── logo.jpg │ │ └── ua.js │ ├── Imprensa Oficial - Prefeitura do Rio de Janeiro.htm │ ├── Imprensa Oficial - Prefeitura do Rio de Janeiro_files │ │ ├── ajax_init.js │ │ ├── all.css │ │ ├── balcao.css │ │ ├── balcao.js │ │ ├── calendario_popup.css │ │ ├── common.js │ │ ├── date.css │ │ ├── formatadata.js │ │ ├── functions(1).js │ │ ├── functions.js │ │ ├── imagem_capa.php │ │ ├── jquery-ui.css │ │ ├── jquery.bgiframe-2.1.2.js │ │ ├── jquery.cookie.js │ │ ├── jquery.min.js │ │ ├── jquery.treeview.edit.js │ │ ├── jquery.treeview.js │ │ ├── jquery.ui.all.css │ │ ├── jquery.ui.datepicker-pt-BR.js │ │ ├── jquery.ui.datepicker.css │ │ ├── jquery.ui.datepicker.js │ │ ├── jquery.ui.min.js │ │ ├── logo2.png │ │ ├── logo2_reflected.png │ │ ├── maskedinput.js │ │ ├── stcode.js │ │ └── stmenu.js │ ├── README.md │ └── do_sample.pdf └── utils.py ├── run_test.py └── setup.py /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_STORE 2 | __pycache__/* 3 | */__pycache__/* 4 | results/* 5 | domrj.egg-info/* 6 | dist/* 7 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # Licença de Uso 2 | 3 | Apache License 4 | Version 2.0, January 2004 5 | http://www.apache.org/licenses/ 6 | 7 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 8 | 9 | 1. Definitions. 10 | 11 | "License" shall mean the terms and conditions for use, reproduction, and 12 | distribution as defined by Sections 1 through 9 of this document. 13 | 14 | "Licensor" shall mean the copyright owner or entity authorized by the copyright 15 | owner that is granting the License. 16 | 17 | "Legal Entity" shall mean the union of the acting entity and all other entities 18 | that control, are controlled by, or are under common control with that entity. 19 | For the purposes of this definition, "control" means (i) the power, direct or 20 | indirect, to cause the direction or management of such entity, whether by 21 | contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity exercising 25 | permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, including 28 | but not limited to software source code, documentation source, and configuration 29 | files. 30 | 31 | "Object" form shall mean any form resulting from mechanical transformation or 32 | translation of a Source form, including but not limited to compiled object code, 33 | generated documentation, and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or Object form, made 36 | available under the License, as indicated by a copyright notice that is included 37 | in or attached to the work (an example is provided in the Appendix below). 38 | 39 | "Derivative Works" shall mean any work, whether in Source or Object form, that 40 | is based on (or derived from) the Work and for which the editorial revisions, 41 | annotations, elaborations, or other modifications represent, as a whole, an 42 | original work of authorship. For the purposes of this License, Derivative Works 43 | shall not include works that remain separable from, or merely link (or bind by 44 | name) to the interfaces of, the Work and Derivative Works thereof. 45 | 46 | "Contribution" shall mean any work of authorship, including the original version 47 | of the Work and any modifications or additions to that Work or Derivative Works 48 | thereof, that is intentionally submitted to Licensor for inclusion in the Work 49 | by the copyright owner or by an individual or Legal Entity authorized to submit 50 | on behalf of the copyright owner. For the purposes of this definition, 51 | "submitted" means any form of electronic, verbal, or written communication sent 52 | to the Licensor or its representatives, including but not limited to 53 | communication on electronic mailing lists, source code control systems, and 54 | issue tracking systems that are managed by, or on behalf of, the Licensor for 55 | the purpose of discussing and improving the Work, but excluding communication 56 | that is conspicuously marked or otherwise designated in writing by the copyright 57 | owner as "Not a Contribution." 58 | 59 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf 60 | of whom a Contribution has been received by Licensor and subsequently 61 | incorporated within the Work. 62 | 63 | 2. Grant of Copyright License. 64 | 65 | Subject to the terms and conditions of this License, each Contributor hereby 66 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 67 | irrevocable copyright license to reproduce, prepare Derivative Works of, 68 | publicly display, publicly perform, sublicense, and distribute the Work and such 69 | Derivative Works in Source or Object form. 70 | 71 | 3. Grant of Patent License. 72 | 73 | Subject to the terms and conditions of this License, each Contributor hereby 74 | grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, 75 | irrevocable (except as stated in this section) patent license to make, have 76 | made, use, offer to sell, sell, import, and otherwise transfer the Work, where 77 | such license applies only to those patent claims licensable by such Contributor 78 | that are necessarily infringed by their Contribution(s) alone or by combination 79 | of their Contribution(s) with the Work to which such Contribution(s) was 80 | submitted. If You institute patent litigation against any entity (including a 81 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a 82 | Contribution incorporated within the Work constitutes direct or contributory 83 | patent infringement, then any patent licenses granted to You under this License 84 | for that Work shall terminate as of the date such litigation is filed. 85 | 86 | 4. Redistribution. 87 | 88 | You may reproduce and distribute copies of the Work or Derivative Works thereof 89 | in any medium, with or without modifications, and in Source or Object form, 90 | provided that You meet the following conditions: 91 | 92 | You must give any other recipients of the Work or Derivative Works a copy of 93 | this License; and 94 | You must cause any modified files to carry prominent notices stating that You 95 | changed the files; and 96 | You must retain, in the Source form of any Derivative Works that You distribute, 97 | all copyright, patent, trademark, and attribution notices from the Source form 98 | of the Work, excluding those notices that do not pertain to any part of the 99 | Derivative Works; and 100 | If the Work includes a "NOTICE" text file as part of its distribution, then any 101 | Derivative Works that You distribute must include a readable copy of the 102 | attribution notices contained within such NOTICE file, excluding those notices 103 | that do not pertain to any part of the Derivative Works, in at least one of the 104 | following places: within a NOTICE text file distributed as part of the 105 | Derivative Works; within the Source form or documentation, if provided along 106 | with the Derivative Works; or, within a display generated by the Derivative 107 | Works, if and wherever such third-party notices normally appear. The contents of 108 | the NOTICE file are for informational purposes only and do not modify the 109 | License. You may add Your own attribution notices within Derivative Works that 110 | You distribute, alongside or as an addendum to the NOTICE text from the Work, 111 | provided that such additional attribution notices cannot be construed as 112 | modifying the License. 113 | You may add Your own copyright statement to Your modifications and may provide 114 | additional or different license terms and conditions for use, reproduction, or 115 | distribution of Your modifications, or for any such Derivative Works as a whole, 116 | provided Your use, reproduction, and distribution of the Work otherwise complies 117 | with the conditions stated in this License. 118 | 119 | 5. Submission of Contributions. 120 | 121 | Unless You explicitly state otherwise, any Contribution intentionally submitted 122 | for inclusion in the Work by You to the Licensor shall be under the terms and 123 | conditions of this License, without any additional terms or conditions. 124 | Notwithstanding the above, nothing herein shall supersede or modify the terms of 125 | any separate license agreement you may have executed with Licensor regarding 126 | such Contributions. 127 | 128 | 6. Trademarks. 129 | 130 | This License does not grant permission to use the trade names, trademarks, 131 | service marks, or product names of the Licensor, except as required for 132 | reasonable and customary use in describing the origin of the Work and 133 | reproducing the content of the NOTICE file. 134 | 135 | 7. Disclaimer of Warranty. 136 | 137 | Unless required by applicable law or agreed to in writing, Licensor provides the 138 | Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, 139 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, 140 | including, without limitation, any warranties or conditions of TITLE, 141 | NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are 142 | solely responsible for determining the appropriateness of using or 143 | redistributing the Work and assume any risks associated with Your exercise of 144 | permissions under this License. 145 | 146 | 8. Limitation of Liability. 147 | 148 | In no event and under no legal theory, whether in tort (including negligence), 149 | contract, or otherwise, unless required by applicable law (such as deliberate 150 | and grossly negligent acts) or agreed to in writing, shall any Contributor be 151 | liable to You for damages, including any direct, indirect, special, incidental, 152 | or consequential damages of any character arising as a result of this License or 153 | out of the use or inability to use the Work (including but not limited to 154 | damages for loss of goodwill, work stoppage, computer failure or malfunction, or 155 | any and all other commercial damages or losses), even if such Contributor has 156 | been advised of the possibility of such damages. 157 | 158 | 9. Accepting Warranty or Additional Liability. 159 | 160 | While redistributing the Work or Derivative Works thereof, You may choose to 161 | offer, and charge a fee for, acceptance of support, warranty, indemnity, or 162 | other liability obligations and/or rights consistent with this License. However, 163 | in accepting such obligations, You may act only on Your own behalf and on Your 164 | sole responsibility, not on behalf of any other Contributor, and only if You 165 | agree to indemnify, defend, and hold each Contributor harmless for any liability 166 | incurred by, or claims asserted against, such Contributor by reason of your 167 | accepting any such warranty or additional liability. 168 | 169 | END OF TERMS AND CONDITIONS 170 | 171 | APPENDIX: How to apply the Apache License to your work 172 | 173 | To apply the Apache License to your work, attach the following boilerplate 174 | notice, with the fields enclosed by brackets "{}" replaced with your own 175 | identifying information. (Don't include the brackets!) The text should be 176 | enclosed in the appropriate comment syntax for the file format. We also 177 | recommend that a file or class name and description of purpose be included on 178 | the same "printed page" as the copyright notice for easier identification within 179 | third-party archives. 180 | 181 | Copyright {yyyy} {name of copyright owner} 182 | 183 | Licensed under the Apache License, Version 2.0 (the "License"); 184 | you may not use this file except in compliance with the License. 185 | You may obtain a copy of the License at 186 | 187 | http://www.apache.org/licenses/LICENSE-2.0 188 | 189 | Unless required by applicable law or agreed to in writing, software 190 | distributed under the License is distributed on an "AS IS" BASIS, 191 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 192 | See the License for the specific language governing permissions and 193 | limitations under the License. 194 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DOM RJ Reader 2 | 3 | Facilitador de leitura do Diário Oficial do Município do Rio de Janeiro. 4 | 5 | As versões de Python suportadas são 3.4 ou mais recentes. *Python 2 não é suportado no momento* 6 | 7 | ### Dependências 8 | 9 | * requests>=2.13.0 10 | * beautifulsoup4>=4.5.3 11 | * PyPDF2 12 | * robobrowser>=0.5.3 13 | 14 | ### Licença 15 | 16 | Este projeto está sob a [Licença Apache v2](http://www.apache.org/licenses/LICENSE-2.0.html). 17 | 18 | ### Por que este projeto é importante? 19 | 20 | O Diário Oficial do Município do Rio de Janeiro pode ser visualizado no endereço oficial http://doweb.rio.rj.gov.br. Contudo, excetuando-se as 10 últimas edições, disponíveis no campo 21 | "ÚLTIMAS EDIÇÕES", não é possível obter um arquivo único do Diário. O site oficial oferece uma interface de visualização de PDF e uma de visualização HTML. Na interface de visualização de PDF, 22 | exibe-se apenas uma única página por vez e a função pesquisar (Ctrl + F) não funciona. Na interface de visualização HTML, temos uma árvore de tópicos que segmenta o Diário de uma maneira bem interessante, mas ainda não podemos fazer uma busca em todo o seu conteúdo, é necessário abrir página por página. 23 | não funciona. 24 | 25 | Este projeto possibilita a obtenção de um arquivo PDF único e pesquisável para cada edição do Diário Oficial do Município do Rio de Janeiro. 26 | 27 | Incentiva-se a comunidade a contribuir para que ele possa ir mais além, incorporando, por exemplo, funcionalidades que permitam o acompanhamento de áreas e atos específicos do governo de forma automatizada. 28 | 29 | ### Versão do PDF 30 | 31 | * Usaremos a sigla DOMRJ como referência ao Diário Oficial do Município do Rio de Janeiro. 32 | 33 | Foram implementadas rotinas para as seguintes funções: 34 | 35 | 1. Determinação do identificador de edição a partir do endereço web de qualquer página dessa edição. 36 | 2. Download de uma edição específica do DOMRJ completa, em 1 único arquivo PDF, a partir do seu identificador de edição. 37 | 3. Segmentação do arquivo PDF de uma edição do DOMRJ em vários arquivos menores contendo apenas as páginas correspondentes a cada seção do sumário. 38 | 39 | 40 | ### Versão do HTML 41 | 42 | Adicionalmente, é possível gerar o Diário Oficial do Município do Rio a partir da visualização em html disponível no [site oficial](http://doweb.rio.rj.gov.br). 43 | 44 | A versão html não possui as imagens e detalhes visuais da versão pdf, porém apresenta uma estrutura de tópicos segmentada de acordo com os assuntos e órgãos do poder executivo municipal. 45 | Esta versão pode ser utilizada para processamentos mais elaborados dentro do D.O. como, por exemplo, a busca automatizada por atos administrativos específicos. 46 | 47 | Esta funcionalidade carece de implementação, contudo já há uma implementação do *parser* da árvore de tópicos do diário. 48 | -------------------------------------------------------------------------------- /domrj/constants.py: -------------------------------------------------------------------------------- 1 | EMPIRIC_ENCODING = 'ISO-8859-1' 2 | EMPIRIC_DPI = 600 3 | TMPDIR = 'tmp_domrj_pdf' 4 | -------------------------------------------------------------------------------- /domrj/datastructures.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | class Node: 4 | """Basic Node data structure for use in the tree of topics """ 5 | def __init__(self, data, children=None, order=0): 6 | self.data = data 7 | if children is None: 8 | self.children = [] 9 | else: 10 | self.children = children 11 | self.order = order 12 | 13 | def __repr__(self): 14 | return str(self.data) 15 | 16 | def add_child(self, child): 17 | self.children.append(child) 18 | 19 | def isleaf(self): 20 | if self.children: 21 | return False 22 | return True 23 | -------------------------------------------------------------------------------- /domrj/dom_tokens.py: -------------------------------------------------------------------------------- 1 | LEAF_INDICATOR = 'addChild(' 2 | RELATIONSHIP_INDICATOR = 'addChildren(' 3 | INTERNALNODE_INDICATOR = 'gFld(' 4 | ROOT_ID = 'foldersTree' 5 | ID = 'edi_id' 6 | -------------------------------------------------------------------------------- /domrj/dom_urls.py: -------------------------------------------------------------------------------- 1 | base_domain = 'doweb.rio.rj.gov.br' 2 | prefix = 'http://doweb.rio.rj.gov.br/do/navegadorhtml/' 3 | printprefix = 'http://doweb.rio.rj.gov.br/imprimir.htm?' 4 | menu_url = 'http://doweb.rio.rj.gov.br/menu_pdf.php?edi_id={}&page=1' 5 | page = 'http://doweb.rio.rj.gov.br/ler_pdf.php?edi_id={}&page={}' 6 | download = 'http://doweb.rio.rj.gov.br/ler_pdf.php?page=0&download=ok&edi_id={}' 7 | -------------------------------------------------------------------------------- /domrj/domhtml/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/domhtml/__init__.py -------------------------------------------------------------------------------- /domrj/domhtml/domrj_html.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Gabinete do Vereador Leandro Lyra 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | import constants 16 | test_filename = 'data/Diário Oficial_files/load_tree.html' 17 | 18 | 19 | def assemble_from_html(): 20 | root = treeparser.parse_tree(test_filename) 21 | #DEBUG 22 | #treeparser.traverse(root) 23 | options = { 24 | 'dpi': constants.EMPIRIC_DPI 25 | } 26 | list_links = [] 27 | treeparser.traverse(root.children[0]) 28 | for top in root.children: 29 | links = treeparser.select_links(top) 30 | links = [printprefix + l.split('?')[-1] for l in links] 31 | # print(links) 32 | folder = os.path.join(results_dir, str(top)) 33 | # print(folder) 34 | if not os.path.isdir(folder): 35 | os.mkdir(folder) 36 | pdfkit.from_url(links, os.path.join(folder, 'dom_rio_{}.pdf'.format(folder.split('/')[-1])), options=options) 37 | -------------------------------------------------------------------------------- /domrj/domhtml/treeparser.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Gabinete do Vereador Leandro Lyra 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from datastructures import Node 16 | import dom_tokens 17 | 18 | 19 | treeids = {} 20 | 21 | def parse_internalnode(line, codetable=treeids): 22 | #c2811 = gFld("DECRETOS N", "javascript:parent.op()"); 23 | segments = line.split('=') 24 | #['c2811 ', ' gFld("DECRETOS N", "javascript:parent.op()");'] 25 | code = segments[0].strip() 26 | name = segments[1].split(',')[0].split('"')[1] 27 | node = Node(name) 28 | codetable[code] = node 29 | 30 | def parse_leaf(line, codetable=treeids): 31 | #c2811.addChild(["DECRETO RIO N� 42952", "mostrar.htm?id=405397&edi_id=3383"]); 32 | segments = line.split('",') 33 | #['c2811.addChild(["DECRETO RIO N� 42952', '"mostrar.htm?id=405397&edi_id=3383"]);'] 34 | left = segments[0] 35 | #'c2811.addChild(["DECRETO RIO N� 42952' 36 | parent_code = left.split('.')[0] 37 | name = left.split('"')[1] 38 | #'"mostrar.htm?id=405397&edi_id=3383"]);' 39 | sufix_url = segments[1].split('"')[1] 40 | child_node = Node((name, sufix_url)) 41 | parent = codetable[parent_code] 42 | #print(parent, child_node, codetable) 43 | parent.add_child(child_node) 44 | #print(parent, child_node, codetable) 45 | #print(parent, parent.children) 46 | 47 | def add_children(line, codetable=treeids): 48 | #c6512.addChildren([c6552,c6553,c6554,c6825,c5383]); 49 | segments = line.split('.') 50 | #['c6512', 'addChildren([c6552,c6553,c6554,c6825,c5383]);'] 51 | parent_code = segments[0] 52 | codes_str = segments[1].split('[')[1] 53 | #['c6552,c6553,c6554,c6825,c5383', ']);'] 54 | codes_str = codes_str.split(']')[0] 55 | #'c6552,c6553,c6554,c6825,c5383' 56 | children_codes = codes_str.split(',') 57 | #['c6552','c6553','c6554','c6825','c5383'] 58 | # print(parent_code, children_codes) 59 | try: 60 | parent = codetable[parent_code] 61 | 62 | for child in children_codes: 63 | parent.add_child(codetable[child]) 64 | 65 | except Exception as e: 66 | print(e) 67 | print('One or more codes are missing in the lookup table:\n', codetable) 68 | 69 | def parse_tree(filename): 70 | print(filename) 71 | with open(filename, encoding=EMPIRIC_ENCODING) as treefile: 72 | line = treefile.readline() 73 | while line != '': 74 | if dom_tokens.INTERNALNODE_INDICATOR in line: 75 | parse_internalnode(line, treeids) 76 | elif dom_tokens.LEAF_INDICATOR in line: 77 | parse_leaf(line, treeids) 78 | elif dom_tokens.RELATIONSHIP_INDICATOR in line: 79 | add_children(line, treeids) 80 | #print(treeids) 81 | line = treefile.readline() 82 | root = treeids[dom_tokens.ROOT_ID] 83 | 84 | return root 85 | 86 | def traverse(root, level=0): 87 | indent = ' '*4*level 88 | print('{}{}'.format(indent, root)) 89 | for child in root.children: 90 | traverse(child, level + 1) 91 | 92 | def select_links(root, links=None): 93 | if links is None: 94 | links = [] 95 | for child in root.children: 96 | if child.isleaf(): 97 | links.append(child.data[1]) 98 | else: 99 | select_links(child, links) 100 | return links 101 | -------------------------------------------------------------------------------- /domrj/dompdf/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/dompdf/__init__.py -------------------------------------------------------------------------------- /domrj/dompdf/content.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Gabinete do Vereador Leandro Lyra 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Sumpário do Diário Oficial 16 | # Leis Promulgadas 17 | # Leis Sancionadas e Vetos 18 | # Atos do Poder Executivo 19 | # Atos do Prefeito 20 | # Despachos do Prefeito 21 | # Gabinete do Prefeito 22 | # Secretaria Municipal da Casa Civil 23 | # Resolução Conjunta, 24 | # Secretaria Municipal de Fazenda 25 | # Secretaria Municipal de Saúde 26 | # Secretaria Municipal de Educação, Esportes e Lazer 27 | # Secretaria Municipal de Ordem Pública 28 | # Secretaria Municipal de Desenvolvimento, Emprego e Inovação 29 | # Secretaria Municipal de Transportes 30 | # Secretaria Municipal de Conservação e Meio Ambiente 31 | # Secretaria Municipal de Urbanismo, Infraestrutura e Habitação 32 | # Secretaria Municipal de Assistência Social e Direitos Humanos 33 | # Secretaria Municipal de Cultura 34 | # Secretaria Especial de Relações Institucionais 35 | # Procuradoria Geral do Município do Rio de Janeiro 36 | # Controladoria Geral do Município do Rio de Janeiro 37 | # Tribunal de Contas do Município 38 | # Avisos, Editais e Termos de Contratos 39 | # Publicações a Pedido 40 | 41 | box_titles = [ 42 | 'COMPLETO', 43 | 'LEIS PROMULGADAS', 44 | 'LEIS SANCIONADAS E VETOS', 45 | 'ATOS DO PODER EXECUTIVO', 46 | 'ATOS DO PREFEITO', 47 | 'DESPACHOS DO PREFEITO', 48 | 'GABINETE DO PREFEITO', 49 | 'SECRETARIA DA CASA CIVIL', 50 | 'RESOLUÇÃO CONJUNTA', 51 | 'SECRETARIA DE FAZENDA', 52 | 'SECRETARIA DE SAÚDE ', 53 | 'SECRETARIA DE EDUCAÇÃO, ESPORTES E LAZER', 54 | 'SECRETARIA DE ORDEM PÚBLICA', 55 | 'SECRETARIA DE DESENVOLVIMENTO, EMPREGO E INOVAÇÃO', 56 | 'SECRETARIA DE TRANSPORTES', 57 | 'SECRETARIA DE CONSERVAÇÃO E MEIO AMBIENTE', 58 | 'SECRETARIA DE URBANISMO, INFRAESTRUTURA E HABITAÇÃO', 59 | 'SECRETARIA DE ASSISTÊNCIA SOCIAL E DIREITOS HUMANOS', 60 | 'SECRETARIA DE CULTURA', 61 | 'SECRETARIA DE RELAÇÕES INSTITUCIONAIS', 62 | 'PROCURADORIA GERAL', 63 | 'CONTROLADORIA GERAL', 64 | 'TRIBUNAL DE CONTAS', 65 | 'AVISOS, EDITAIS E TERMOS DE CONTRATOS', 66 | 'PUBLICAÇÕES A PEDIDO' 67 | ] 68 | -------------------------------------------------------------------------------- /domrj/dompdf/domrj_pdf.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Gabinete do Vereador Leandro Lyra 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | import os 16 | import requests 17 | import shutil 18 | from domrj import constants, dom_urls, utils 19 | from PyPDF2 import PdfFileMerger, PdfFileReader, PdfFileWriter 20 | from PyPDF2.generic import Destination 21 | from .content import box_titles 22 | from .models import DOSection 23 | 24 | 25 | SAMPLE_FOLDER = 'sample_data' 26 | RESULTS_FOLDER = 'results' 27 | DO_FOR_TEST = 'do_sample.pdf' 28 | 29 | def download_pages_from_id(edi_id, work_dir, begin=1, end=None): 30 | totalpages = utils.get_numpages_from_id(edi_id) 31 | if (end is None) or (totalpages < end) or (end < begin): 32 | # get the total number of pages of this edition 33 | end = totalpages 34 | if begin < 1: 35 | begin = 1 36 | for n in range(begin, end+1): 37 | # get the pdf file 38 | response = requests.get(dom_urls.page.format(edi_id, n)) 39 | with open(os.path.join(work_dir, '{}.pdf'.format(n)), 'wb') as output: 40 | output.write(response.content) 41 | print('Page', n) 42 | 43 | def download_pages_from_raw_url(raw_url, work_dir): 44 | download_pages_from_id(utils.get_id_from_url(raw_url), work_dir) 45 | 46 | def assemble_pages_from_list(filename, pages_list, work_dir): 47 | merger = PdfFileMerger() 48 | for page in pages_list: 49 | with open(os.path.join(work_dir, page), 'rb') as pfile: 50 | merger.append(PdfFileReader(pfile)) 51 | if not filename.endswith('.pdf'): 52 | filename = filename + '.pdf' 53 | # writes pdf file to disk 54 | merger.write(filename) 55 | print('Document written to {}'.format(filename)) 56 | 57 | def assemble_from_pages(raw_url, filename, tmpdir=None, begin=1, end=None)->str: 58 | # get the id of the required edition 59 | edi_id = utils.get_id_from_url(raw_url) 60 | 61 | if tmpdir is None: 62 | tmpdir = constants.TMPDIR 63 | work_dir = os.path.join(os.path.dirname(filename), tmpdir) 64 | 65 | try: 66 | os.mkdir(work_dir) 67 | except FileExistsError as e: 68 | print('There exists a file or directory named {}. Please, remove it or rename it to continue.'.format(tmpdir)) 69 | exit() 70 | 71 | #download pages to tmp dir 72 | download_pages_from_id(edi_id, work_dir, begin, end) 73 | page_files = [f for f in os.listdir(work_dir) if f.endswith('.pdf')] 74 | # sort by integer order of the names (not lexicographic) 75 | page_files.sort(key=lambda f: int(f[0:f.index('.')])) 76 | # assembles pages into a whole pdf file 77 | assemble_pages_from_list(filename, page_files, work_dir) 78 | # removes tmp files 79 | shutil.rmtree(work_dir) 80 | 81 | def download_url_from_id(edi_id): 82 | return dom_urls.download.format(edi_id) 83 | 84 | def download_url_from_raw_url(raw_url): 85 | edi_id = utils.get_id_from_url(raw_url) 86 | return download_url_from_id(edi_id) 87 | 88 | def download_from_id(edi_id, filename): 89 | download_url = download_url_from_id(edi_id) 90 | response = requests.get(download_url) 91 | with open(filename, 'wb') as output: 92 | output.write(response.content) 93 | print('Document written to {}'.format(filename)) 94 | 95 | def download_from_raw_url(raw_url, filename): 96 | download_from_id(utils.get_id_from_url(raw_url), filename) 97 | 98 | def get_sections(pdf_reader): 99 | outlines = [section for section in pdf_reader.getOutlines() if isinstance(section, Destination)] 100 | offsets = [pdf_reader.getDestinationPageNumber(section) for section in outlines] 101 | offsets.append(pdf_reader.getNumPages()-1) #pages enumeration starts at 0 102 | sections = [DOSection(outlines[i].title.strip(), offsets[i], offsets[i+1]) for i in range(len(offsets)-1)] 103 | return sections 104 | 105 | def write_section(pdf_reader, section, output=None): 106 | if output is None: 107 | output = '{}.pdf'.format(str(section)) 108 | pdf_writer = PdfFileWriter() 109 | for i in range(section.begin, section.end+1): 110 | pdf_writer.addPage(pdf_reader.getPage(i)) 111 | 112 | work_dir = os.path.dirname(output) 113 | if work_dir and (not os.path.isdir(work_dir)): 114 | os.mkdir(work_dir) 115 | 116 | with open(output, 'wb') as outfile: 117 | pdf_writer.write(outfile) 118 | 119 | def split_domrj_sections(filepath, workdir): 120 | with open(filepath, 'rb') as dofile: 121 | pdf_reader = PdfFileReader(dofile) 122 | sections = get_sections(pdf_reader) 123 | for section in sections: 124 | outname = '{}.pdf'.format(str(section)).replace('\n', ' ') 125 | write_section(pdf_reader, section, os.path.join(workdir, outname)) 126 | 127 | def main(): 128 | split_domrj_sections(os.path.join(SAMPLE_FOLDER, DO_FOR_TEST), RESULTS_FOLDER) 129 | 130 | 131 | if __name__ == '__main__': 132 | main() 133 | -------------------------------------------------------------------------------- /domrj/dompdf/models.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Gabinete do Vereador Leandro Lyra 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | class DOSection: 16 | def __init__(self, title, begin, end, date=None): 17 | self.title = title 18 | self.begin = begin 19 | self.end = end 20 | self.date = date 21 | 22 | def __repr__(self): 23 | if self.date: 24 | return '{} Pages {} - {} ({})'.format(self.title, self.begin, self.end, self.date) 25 | return '{} Pages {} - {}'.format(self.title, self.begin, self.end) 26 | -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial.htm -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/back-round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/back-round.png -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftiens4.js: -------------------------------------------------------------------------------- 1 | //**************************************************************** 2 | // Keep this copyright notice: 3 | // This copy of the script is the property of the owner of the 4 | // particular web site you were visiting. 5 | // Do not download the script's files from there. 6 | // For a free download and full instructions go to: 7 | // http://www.treeview.net 8 | //**************************************************************** 9 | 10 | 11 | // Log of changes: 12 | // 13 | // 08 Jun 04 - Very small change to one error message 14 | // 21 Mar 04 - Support for folder.addChildren allows for much bigger trees 15 | // 12 May 03 - Support for Safari Beta 3 16 | // 01 Mar 03 - VERSION 4.3 - Support for checkboxes 17 | // 21 Feb 03 - Added support for Opera 7 18 | // 22 Sep 02 - Added maySelect member for node-by-node control 19 | // of selection and highlight 20 | // 21 Sep 02 - Cookie values are now separated by cookieCutter 21 | // 12 Sep 02 - VERSION 4.2 - Can highlight Selected Nodes and 22 | // can preserve state through external (DB) IDs 23 | // 29 Aug 02 - Fine tune 'supportDeferral' for IE4 and IE Mac 24 | // 25 Aug 02 - Fixes: STARTALLOPEN, and multi-page frameless 25 | // 09 Aug 02 - Fix repeated folder on Mozilla 1.x 26 | // 31 Jul 02 - VERSION 4.1 - Dramatic speed increase for trees 27 | // with hundreds or thousands of nodes; changes to the control 28 | // flags of the gLnk function 29 | // 18 Jul 02 - Changes in pre-load images function 30 | // 13 Jun 02 - Add ICONPATH var to allow for gif subdir 31 | // 20 Apr 02 - Improve support for frame-less layout 32 | // 07 Apr 02 - Minor changes to support server-side dynamic feeding 33 | // (example: FavoritesManagerASP) 34 | 35 | 36 | // Definition of class Folder 37 | // ***************************************************************** 38 | function Folder(folderDescription, hreference) //constructor 39 | { 40 | //constant data 41 | this.desc = folderDescription; 42 | this.hreference = hreference; 43 | this.id = -1; 44 | this.navObj = 0; 45 | this.iconImg = 0; 46 | this.nodeImg = 0; 47 | this.isLastNode = 0; 48 | this.iconSrc = ICONPATH + "ftv2folderopen.gif"; 49 | this.iconSrcClosed = ICONPATH + "ftv2folderclosed.gif"; 50 | this.children = new Array; 51 | this.nChildren = 0; 52 | this.level = 0; 53 | this.leftSideCoded = ""; 54 | this.isLastNode=false; 55 | this.parentObj = null; 56 | this.maySelect=true; 57 | this.prependHTML = "" 58 | 59 | //dynamic data 60 | this.isOpen = false 61 | this.isLastOpenedFolder = false 62 | this.isRendered = 0 63 | 64 | //methods 65 | this.initialize = initializeFolder 66 | this.setState = setStateFolder 67 | this.addChild = addChild 68 | this.addChildren = addChildren 69 | this.createIndex = createEntryIndex 70 | this.escondeBlock = escondeBlock 71 | this.esconde = escondeFolder 72 | this.folderMstr = folderMstr 73 | this.renderOb = drawFolder 74 | this.totalHeight = totalHeight 75 | this.subEntries = folderSubEntries 76 | this.linkHTML = linkFolderHTML 77 | this.blockStartHTML = blockStartHTML 78 | this.blockEndHTML = blockEndHTML 79 | this.nodeImageSrc = nodeImageSrc 80 | this.iconImageSrc = iconImageSrc 81 | this.getID = getID 82 | this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders 83 | } 84 | 85 | function initializeFolder(level, lastNode, leftSide) 86 | { 87 | var j=0 88 | var i=0 89 | nc = this.nChildren 90 | 91 | this.createIndex() 92 | this.level = level 93 | this.leftSideCoded = leftSide 94 | 95 | if (browserVersion == 0 || STARTALLOPEN==1) 96 | this.isOpen=true; 97 | 98 | if (level>0) 99 | if (lastNode) //the last child in the children array 100 | leftSide = leftSide + "0" 101 | else 102 | leftSide = leftSide + "1" 103 | 104 | this.isLastNode = lastNode 105 | 106 | if (nc > 0) 107 | { 108 | level = level + 1 109 | for (i=0 ; i < this.nChildren; i++) 110 | { 111 | if (typeof this.children[i].initialize == 'undefined') //document node was specified using the addChildren function 112 | { 113 | if (typeof this.children[i][0] == 'undefined' || typeof this.children[i] == 'string') 114 | { 115 | this.children[i] = ["item incorrectly defined", ""]; 116 | } 117 | 118 | //Basic initialization of the Item object 119 | //These members or methods are needed even before the Item is rendered 120 | this.children[i].initialize=initializeItem; 121 | this.children[i].createIndex=createEntryIndex; 122 | if (typeof this.children[i].maySelect == 'undefined') 123 | this.children[i].maySelect=true 124 | this.children[i].forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders 125 | } 126 | if (i == this.nChildren-1) 127 | this.children[i].initialize(level, 1, leftSide) 128 | else 129 | this.children[i].initialize(level, 0, leftSide) 130 | } 131 | } 132 | } 133 | 134 | function drawFolder(insertAtObj) 135 | { 136 | var nodeName = "" 137 | var auxEv = "" 138 | var docW = "" 139 | var i=0 140 | 141 | finalizeCreationOfChildDocs(this) 142 | 143 | var leftSide = leftSideHTML(this.leftSideCoded) 144 | 145 | if (browserVersion > 0) 146 | auxEv = "" 147 | else 148 | auxEv = "" 149 | 150 | nodeName = this.nodeImageSrc() 151 | 152 | if (this.level>0) 153 | if (this.isLastNode) //the last child in the children array 154 | leftSide = leftSide + "" + auxEv + "" 155 | else 156 | leftSide = leftSide + "" + auxEv + "" 157 | 158 | this.isRendered = 1 159 | 160 | if (browserVersion == 2) { 161 | if (!doc.yPos) 162 | doc.yPos=20 163 | } 164 | 165 | docW = this.blockStartHTML("folder"); 166 | 167 | docW = docW + "" + leftSide + ""; 168 | if (USEICONS) 169 | { 170 | docW = docW + this.linkHTML(false) 171 | docW = docW + "" 172 | } 173 | else 174 | { 175 | if (this.prependHTML == "") 176 | docW = docW + "" 177 | } 178 | if (WRAPTEXT) 179 | docW = docW + ""+this.prependHTML+"" 180 | else 181 | docW = docW + ""+this.prependHTML+"" 182 | if (USETEXTLINKS) 183 | { 184 | docW = docW + this.linkHTML(true) 185 | docW = docW + this.desc + "" 186 | } 187 | else 188 | docW = docW + this.desc 189 | docW = docW + "" 190 | 191 | docW = docW + this.blockEndHTML() 192 | 193 | if (insertAtObj == null) 194 | { 195 | if (supportsDeferral) { 196 | doc.write("
") //transition between regular flow HTML, and node-insert DOM DHTML 197 | insertAtObj = getElById("domRoot") 198 | insertAtObj.insertAdjacentHTML("beforeEnd", docW) 199 | } 200 | else 201 | doc.write(docW) 202 | } 203 | else 204 | { 205 | insertAtObj.insertAdjacentHTML("afterEnd", docW) 206 | } 207 | 208 | if (browserVersion == 2) 209 | { 210 | this.navObj = doc.layers["folder"+this.id] 211 | if (USEICONS) 212 | this.iconImg = this.navObj.document.images["folderIcon"+this.id] 213 | this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] 214 | doc.yPos=doc.yPos+this.navObj.clip.height 215 | } 216 | else if (browserVersion != 0) 217 | { 218 | this.navObj = getElById("folder"+this.id) 219 | if (USEICONS) 220 | this.iconImg = getElById("folderIcon"+this.id) 221 | this.nodeImg = getElById("nodeIcon"+this.id) 222 | } 223 | } 224 | 225 | function setStateFolder(isOpen) 226 | { 227 | var subEntries 228 | var totalHeight 229 | var fIt = 0 230 | var i=0 231 | var currentOpen 232 | 233 | if (isOpen == this.isOpen) 234 | return 235 | 236 | if (browserVersion == 2) 237 | { 238 | totalHeight = 0 239 | for (i=0; i < this.nChildren; i++) 240 | totalHeight = totalHeight + this.children[i].navObj.clip.height 241 | subEntries = this.subEntries() 242 | if (this.isOpen) 243 | totalHeight = 0 - totalHeight 244 | for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) 245 | indexOfEntries[fIt].navObj.moveBy(0, totalHeight) 246 | } 247 | this.isOpen = isOpen; 248 | 249 | if (this.getID()!=foldersTree.getID() && PRESERVESTATE && !this.isOpen) //closing 250 | { 251 | currentOpen = GetCookie("clickedFolder") 252 | if (currentOpen != null) { 253 | currentOpen = currentOpen.replace(this.getID()+cookieCutter, "") 254 | SetCookie("clickedFolder", currentOpen) 255 | } 256 | } 257 | 258 | if (!this.isOpen && this.isLastOpenedfolder) 259 | { 260 | lastOpenedFolder = null; 261 | this.isLastOpenedfolder = false; 262 | } 263 | propagateChangesInState(this) 264 | } 265 | 266 | function propagateChangesInState(folder) 267 | { 268 | var i=0 269 | 270 | //Change icon 271 | if (folder.nChildren > 0 && folder.level>0) //otherwise the one given at render stays 272 | folder.nodeImg.src = folder.nodeImageSrc() 273 | 274 | //Change node 275 | if (USEICONS) 276 | folder.iconImg.src = folder.iconImageSrc() 277 | 278 | //Propagate changes 279 | for (i=folder.nChildren-1; i>=0; i--) { 280 | if (folder.isOpen) 281 | folder.children[i].folderMstr(folder.navObj) 282 | else 283 | folder.children[i].esconde() 284 | } 285 | } 286 | 287 | function escondeFolder() 288 | { 289 | this.escondeBlock() 290 | 291 | this.setState(0) 292 | } 293 | 294 | function linkFolderHTML(isTextLink) 295 | { 296 | var docW = ""; 297 | 298 | if (this.hreference) 299 | { 300 | if (USEFRAMES) 301 | docW = docW + " 0) 310 | docW = docW + "onClick='javascript:clickOnFolder(\""+this.getID()+"\")'" 311 | 312 | docW = docW + ">" 313 | } 314 | else 315 | docW = docW + "" 316 | 317 | return docW; 318 | } 319 | 320 | function addChild(childNode) 321 | { 322 | this.children[this.nChildren] = childNode 323 | childNode.parentObj = this 324 | this.nChildren++ 325 | return childNode 326 | } 327 | 328 | //The list can contain either a Folder object or a sub list with the arguments for Item 329 | function addChildren(listOfChildren) 330 | { 331 | this.children = listOfChildren 332 | this.nChildren = listOfChildren.length 333 | for (i=0; i0) 445 | if (this.isLastNode) //the last 'brother' in the children array 446 | { 447 | leftSide = leftSide + "" 448 | } 449 | else 450 | { 451 | leftSide = leftSide + "" 452 | } 453 | 454 | docW = docW + this.blockStartHTML("item") 455 | 456 | docW = docW + "" + leftSide + "" 457 | if (USEICONS) 458 | docW = docW + "" + "" + "" 459 | else 460 | if (this.prependHTML == "") 461 | docW = docW + "" 462 | 463 | if (WRAPTEXT) 464 | docW = docW + ""+this.prependHTML+"" 465 | else 466 | docW = docW + ""+this.prependHTML+"" 467 | 468 | if (USETEXTLINKS) 469 | docW = docW + "" + this.desc + "" 470 | else 471 | docW = docW + this.desc 472 | 473 | docW = docW + "" 474 | 475 | docW = docW + this.blockEndHTML() 476 | 477 | if (insertAtObj == null) 478 | { 479 | doc.write(docW) 480 | } 481 | else 482 | { 483 | insertAtObj.insertAdjacentHTML("afterEnd", docW) 484 | } 485 | 486 | if (browserVersion == 2) { 487 | this.navObj = doc.layers["item"+this.id] 488 | if (USEICONS) 489 | this.iconImg = this.navObj.document.images["itemIcon"+this.id] 490 | doc.yPos=doc.yPos+this.navObj.clip.height 491 | } else if (browserVersion != 0) { 492 | this.navObj = getElById("item"+this.id) 493 | if (USEICONS) 494 | this.iconImg = getElById("itemIcon"+this.id) 495 | } 496 | } 497 | 498 | 499 | // Methods common to both objects (pseudo-inheritance) 500 | // ******************************************************** 501 | 502 | function forceOpeningOfAncestorFolders() { 503 | if (this.parentObj == null || this.parentObj.isOpen) 504 | return 505 | else { 506 | this.parentObj.forceOpeningOfAncestorFolders() 507 | clickOnNodeObj(this.parentObj) 508 | } 509 | } 510 | 511 | function escondeBlock() 512 | { 513 | if (browserVersion == 1 || browserVersion == 3) { 514 | if (this.navObj.style.display == "none") 515 | return 516 | this.navObj.style.display = "none" 517 | } else { 518 | if (this.navObj.visibility == "hidden") 519 | return 520 | this.navObj.visibility = "hidden" 521 | } 522 | } 523 | 524 | function folderMstr(domObj) 525 | { 526 | if (browserVersion == 1 || browserVersion == 3) { 527 | if (t==-1) 528 | return 529 | var str = new String(doc.links[t]) 530 | if (str.slice(14,16) != "em") 531 | return 532 | } 533 | 534 | if (!this.isRendered) 535 | this.renderOb(domObj) 536 | else 537 | if (browserVersion == 1 || browserVersion == 3) 538 | this.navObj.style.display = "block" 539 | else 540 | this.navObj.visibility = "show" 541 | } 542 | 543 | function blockStartHTML(idprefix) { 544 | var idParam = "id='" + idprefix + this.id + "'" 545 | var docW = "" 546 | 547 | if (browserVersion == 2) 548 | docW = "" 549 | else if (browserVersion != 0) 550 | docW = "
" 551 | 552 | docW = docW + "" 553 | 554 | return docW 555 | } 556 | 557 | function blockEndHTML() { 558 | var docW = "" 559 | 560 | docW = "
" 561 | 562 | if (browserVersion == 2) 563 | docW = docW + "" 564 | else if (browserVersion != 0) 565 | docW = docW + "
" 566 | 567 | return docW 568 | } 569 | 570 | function createEntryIndex() 571 | { 572 | this.id = nEntries 573 | indexOfEntries[nEntries] = this 574 | nEntries++ 575 | } 576 | 577 | // total height of subEntries open 578 | function totalHeight() //used with browserVersion == 2 579 | { 580 | var h = this.navObj.clip.height 581 | var i = 0 582 | 583 | if (this.isOpen) //is a folder and _is_ open 584 | for (i=0 ; i < this.nChildren; i++) 585 | h = h + this.children[i].totalHeight() 586 | 587 | return h 588 | } 589 | 590 | 591 | function leftSideHTML(leftSideCoded) { 592 | var i; 593 | var retStr = ""; 594 | 595 | for (i=0; i" 600 | } 601 | if (leftSideCoded.charAt(i) == "0") 602 | { 603 | retStr = retStr + "" 604 | } 605 | } 606 | return retStr 607 | } 608 | 609 | function getID() 610 | { 611 | //define a .xID in all nodes (folders and items) if you want to PERVESTATE that 612 | //work when the tree changes. The value eXternal value must be unique for each 613 | //node and must node change when other nodes are added or removed 614 | //The value may be numeric or string, but cannot have the same char used in cookieCutter 615 | if (typeof this.xID != "undefined") 616 | return this.xID 617 | else 618 | return this.id 619 | } 620 | 621 | 622 | // Events 623 | // ********************************************************* 624 | 625 | function clickOnFolder(folderId) 626 | { 627 | var clicked = findObj(folderId) 628 | 629 | if (typeof clicked=='undefined' || clicked==null) 630 | { 631 | alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID values, it must set them for ALL nodes, including the foldersTree root.") 632 | return; 633 | } 634 | 635 | if (!clicked.isOpen) { 636 | clickOnNodeObj(clicked) 637 | } 638 | 639 | if (lastOpenedFolder != null && lastOpenedFolder != folderId) 640 | clickOnNode(lastOpenedFolder); //sets lastOpenedFolder to null 641 | 642 | if (clicked.nChildren==0) { 643 | lastOpenedFolder = folderId; 644 | clicked.isLastOpenedfolder = true 645 | } 646 | 647 | if (isLinked(clicked.hreference)) { 648 | highlightObjLink(clicked); 649 | } 650 | } 651 | 652 | function clickOnNode(folderId) 653 | { 654 | fOb = findObj(folderId); 655 | if (typeof fOb=='undefined' || fOb==null) 656 | { 657 | alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID, it must set foldersTree.xID as well.") 658 | return; 659 | } 660 | 661 | clickOnNodeObj(fOb); 662 | } 663 | 664 | function clickOnNodeObj(folderObj) 665 | { 666 | var state = 0 667 | var currentOpen 668 | 669 | state = folderObj.isOpen 670 | folderObj.setState(!state) //open<->close 671 | 672 | if (folderObj.id!=foldersTree.id && PRESERVESTATE) 673 | { 674 | currentOpen = GetCookie("clickedFolder") 675 | if (currentOpen == null) 676 | currentOpen = "" 677 | 678 | if (!folderObj.isOpen) //closing 679 | { 680 | currentOpen = currentOpen.replace(folderObj.getID()+cookieCutter, "") 681 | SetCookie("clickedFolder", currentOpen) 682 | } 683 | else 684 | SetCookie("clickedFolder", currentOpen+folderObj.getID()+cookieCutter) 685 | } 686 | } 687 | 688 | function clickOnLink(clickedId, target, windowName) { 689 | highlightObjLink(findObj(clickedId)); 690 | if (isLinked(target)) { 691 | window.open(target,windowName); 692 | } 693 | } 694 | 695 | function ld () 696 | { 697 | return document.links.length-1 698 | } 699 | 700 | 701 | // Auxiliary Functions 702 | // ******************* 703 | 704 | function finalizeCreationOfChildDocs(folderObj) { 705 | for(i=0; i < folderObj.nChildren; i++) { 706 | child = folderObj.children[i] 707 | if (typeof child[0] != 'undefined') 708 | { 709 | // Amazingly, arrays can have members, so a = ["a", "b"]; a.desc="asdas" works 710 | // If a doc was inserted as an array, we can transform it into an itemObj by adding 711 | // the missing members and functions 712 | child.desc = child[0] 713 | setItemLink(child, GLOBALTARGET, child[1]) 714 | finalizeCreationOfItem(child) 715 | } 716 | } 717 | } 718 | 719 | function findObj(id) 720 | { 721 | var i=0; 722 | var nodeObj; 723 | 724 | if (typeof foldersTree.xID != "undefined") { 725 | nodeObj = indexOfEntries[i]; 726 | for(i=0;i= nEntries) 731 | return null; //example: node removed in DB 732 | else 733 | return indexOfEntries[id]; 734 | } 735 | 736 | function isLinked(hrefText) { 737 | var result = true; 738 | result = (result && hrefText !=null); 739 | result = (result && hrefText != ''); 740 | result = (result && hrefText.indexOf('undefined') < 0); 741 | result = (result && hrefText.indexOf('parent.op') < 0); 742 | return result; 743 | } 744 | 745 | // Do highlighting by changing background and foreg. colors of folder or doc text 746 | function highlightObjLink(nodeObj) { 747 | if (!HIGHLIGHT || nodeObj==null || nodeObj.maySelect==false) {//node deleted in DB 748 | return; 749 | } 750 | 751 | if (browserVersion == 1 || browserVersion == 3) { 752 | var clickedDOMObj = getElById('itemTextLink'+nodeObj.id); 753 | if (clickedDOMObj != null) { 754 | if (lastClicked != null) { 755 | var prevClickedDOMObj = getElById('itemTextLink'+lastClicked.id); 756 | prevClickedDOMObj.style.color=lastClickedColor; 757 | prevClickedDOMObj.style.backgroundColor=lastClickedBgColor; 758 | } 759 | 760 | lastClickedColor = clickedDOMObj.style.color; 761 | lastClickedBgColor = clickedDOMObj.style.backgroundColor; 762 | clickedDOMObj.style.color=HIGHLIGHT_COLOR; 763 | clickedDOMObj.style.backgroundColor=HIGHLIGHT_BG; 764 | } 765 | } 766 | lastClicked = nodeObj; 767 | if (PRESERVESTATE) 768 | SetCookie('highlightedTreeviewLink', nodeObj.getID()); 769 | } 770 | 771 | function insFld(parentFolder, childFolder) 772 | { 773 | return parentFolder.addChild(childFolder) 774 | } 775 | 776 | function insDoc(parentFolder, document) 777 | { 778 | return parentFolder.addChild(document) 779 | } 780 | 781 | function gFld(description, hreference) 782 | { 783 | folder = new Folder(description, hreference); 784 | return folder; 785 | } 786 | 787 | function gLnk(optionFlags, description, linkData) 788 | { 789 | if (optionFlags>=0) { //is numeric (old style) or empty (error) 790 | //Target changed from numeric to string in Aug 2002, and support for numeric style was entirely dropped in Mar 2004 791 | alert("Change your Treeview configuration file to use the new style of target argument in gLnk"); 792 | return; 793 | } 794 | 795 | newItem = new Item(description); 796 | setItemLink(newItem, optionFlags, linkData); 797 | return newItem; 798 | } 799 | 800 | function setItemLink(item, optionFlags, linkData) { 801 | var targetFlag = ""; 802 | var target = ""; 803 | var protocolFlag = ""; 804 | var protocol = ""; 805 | 806 | targetFlag = optionFlags.charAt(0) 807 | if (targetFlag=="B") 808 | target = "_blank" 809 | if (targetFlag=="P") 810 | target = "_parent" 811 | if (targetFlag=="R") 812 | target = "basefrm" 813 | if (targetFlag=="S") 814 | target = "_self" 815 | if (targetFlag=="T") 816 | target = "_top" 817 | 818 | if (optionFlags.length > 1) { 819 | protocolFlag = optionFlags.charAt(1) 820 | if (protocolFlag=="h") 821 | protocol = "http://" 822 | if (protocolFlag=="s") 823 | protocol = "https://" 824 | if (protocolFlag=="f") 825 | protocol = "ftp://" 826 | if (protocolFlag=="m") 827 | protocol = "mailto:" 828 | } 829 | 830 | item.link = protocol+linkData; 831 | item.target = target 832 | } 833 | 834 | //Function created for backwards compatibility purposes 835 | //Function contents voided in March 2004 836 | function oldGLnk(target, description, linkData) 837 | { 838 | } 839 | 840 | function preLoadIcons() { 841 | var auxImg 842 | auxImg = new Image(); 843 | auxImg.src = ICONPATH + "ftv2vertline.gif"; 844 | auxImg.src = ICONPATH + "ftv2mlastnode.gif"; 845 | auxImg.src = ICONPATH + "ftv2mnode.gif"; 846 | auxImg.src = ICONPATH + "ftv2plastnode.gif"; 847 | auxImg.src = ICONPATH + "ftv2pnode.gif"; 848 | auxImg.src = ICONPATH + "ftv2blank.gif"; 849 | auxImg.src = ICONPATH + "ftv2lastnode.gif"; 850 | auxImg.src = ICONPATH + "ftv2node.gif"; 851 | auxImg.src = ICONPATH + "ftv2folderclosed.gif"; 852 | auxImg.src = ICONPATH + "ftv2folderopen.gif"; 853 | auxImg.src = ICONPATH + "ftv2doc.gif"; 854 | } 855 | 856 | //Open some folders for initial layout, if necessary 857 | function setInitialLayout() { 858 | if (browserVersion > 0 && !STARTALLOPEN) 859 | clickOnNodeObj(foldersTree); 860 | 861 | if (!STARTALLOPEN && (browserVersion > 0) && PRESERVESTATE) 862 | PersistentFolderOpening(); 863 | } 864 | 865 | //Used with NS4 and STARTALLOPEN 866 | function renderAllTree(nodeObj, parent) { 867 | var i=0; 868 | nodeObj.renderOb(parent) 869 | if (supportsDeferral) 870 | for (i=nodeObj.nChildren-1; i>=0; i--) 871 | renderAllTree(nodeObj.children[i], nodeObj.navObj) 872 | else 873 | for (i=0 ; i < nodeObj.nChildren; i++) 874 | renderAllTree(nodeObj.children[i], null) 875 | } 876 | 877 | function hideWholeTree(nodeObj, hideThisOne, nodeObjMove) { 878 | var i=0; 879 | var heightContained=0; 880 | var childrenMove=nodeObjMove; 881 | 882 | if (hideThisOne) 883 | nodeObj.escondeBlock() 884 | 885 | if (browserVersion == 2) 886 | nodeObj.navObj.moveBy(0, 0-nodeObjMove) 887 | 888 | for (i=0 ; i < nodeObj.nChildren; i++) { 889 | heightContainedInChild = hideWholeTree(nodeObj.children[i], true, childrenMove) 890 | if (browserVersion == 2) { 891 | heightContained = heightContained + heightContainedInChild + nodeObj.children[i].navObj.clip.height 892 | childrenMove = childrenMove + heightContainedInChild 893 | } 894 | } 895 | 896 | return heightContained; 897 | } 898 | 899 | 900 | // Simulating inserAdjacentHTML on NS6 901 | // Code by thor@jscript.dk 902 | // ****************************************** 903 | 904 | if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){ 905 | HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode) 906 | { 907 | switch (where){ 908 | case 'beforeBegin': 909 | this.parentNode.insertBefore(parsedNode,this) 910 | break; 911 | case 'afterBegin': 912 | this.insertBefore(parsedNode,this.firstChild); 913 | break; 914 | case 'beforeEnd': 915 | this.appendChild(parsedNode); 916 | break; 917 | case 'afterEnd': 918 | if (this.nextSibling) 919 | this.parentNode.insertBefore(parsedNode,this.nextSibling); 920 | else this.parentNode.appendChild(parsedNode); 921 | break; 922 | } 923 | } 924 | 925 | HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) 926 | { 927 | var r = this.ownerDocument.createRange(); 928 | r.setStartBefore(this); 929 | var parsedHTML = r.createContextualFragment(htmlStr); 930 | this.insertAdjacentElement(where,parsedHTML) 931 | } 932 | } 933 | 934 | function getElById(idVal) { 935 | if (document.getElementById != null) 936 | return document.getElementById(idVal) 937 | if (document.all != null) 938 | return document.all[idVal] 939 | 940 | alert("Problem getting element by id") 941 | return null 942 | } 943 | 944 | 945 | // Functions for cookies 946 | // Note: THESE FUNCTIONS ARE OPTIONAL. No cookies are used unless 947 | // the PRESERVESTATE variable is set to 1 (default 0) 948 | // The separator currently in use is ^ (chr 94) 949 | // *********************************************************** 950 | 951 | function PersistentFolderOpening() 952 | { 953 | var stateInCookie; 954 | var fldStr="" 955 | var fldArr 956 | var fldPos=0 957 | var id 958 | var nodeObj 959 | stateInCookie = GetCookie("clickedFolder"); 960 | SetCookie('clickedFolder', "") //at the end of function it will be back, minus null cases 961 | 962 | if(stateInCookie!=null) 963 | { 964 | fldArr = stateInCookie.split(cookieCutter) 965 | for (fldPos=0; fldPos 2) ? argv[2] : null; 1042 | //var path = (argc > 3) ? argv[3] : null; 1043 | var domain = (argc > 4) ? argv[4] : null; 1044 | var secure = (argc > 5) ? argv[5] : false; 1045 | var path = "/"; //allows the tree to remain open across pages with diff names & paths 1046 | 1047 | name = CookieBranding(name) 1048 | 1049 | document.cookie = name + "=" + escape (value) + 1050 | ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 1051 | ((path == null) ? "" : ("; path=" + path)) + 1052 | ((domain == null) ? "" : ("; domain=" + domain)) + 1053 | ((secure == true) ? "; secure" : ""); 1054 | } 1055 | 1056 | function ExpireCookie (name) 1057 | { 1058 | var exp = new Date(); 1059 | exp.setTime (exp.getTime() - 1); 1060 | var cval = GetCookie (name); 1061 | name = CookieBranding(name) 1062 | document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); 1063 | } 1064 | 1065 | 1066 | //To customize the tree, overwrite these variables in the configuration file (demoFramesetNode.js, etc.) 1067 | var USETEXTLINKS = 0; 1068 | var STARTALLOPEN = 0; 1069 | var USEFRAMES = 1; 1070 | var USEICONS = 1; 1071 | var WRAPTEXT = 0; 1072 | var PERSERVESTATE = 0; //backward compatibility 1073 | var PRESERVESTATE = 0; 1074 | var ICONPATH = ''; 1075 | var HIGHLIGHT = 0; 1076 | var HIGHLIGHT_COLOR = 'white'; 1077 | var HIGHLIGHT_BG = 'blue'; 1078 | var BUILDALL = 0; 1079 | var GLOBALTARGET = "R"; // variable only applicable for addChildren uses 1080 | 1081 | 1082 | //Other variables 1083 | var lastClicked = null; 1084 | var lastClickedColor; 1085 | var lastClickedBgColor; 1086 | var indexOfEntries = new Array 1087 | var nEntries = 0 1088 | var browserVersion = 0 1089 | var selectedFolder=0 1090 | var lastOpenedFolder=null 1091 | var t=5 1092 | var doc = document 1093 | var supportsDeferral = false 1094 | var cookieCutter = '^' //You can change this if you need to use ^ in your xID or treeID values 1095 | 1096 | doc.yPos = 0 1097 | 1098 | // Main function 1099 | // ************* 1100 | 1101 | // This function uses an object (navigator) defined in 1102 | // ua.js, imported in the main html page (left frame). 1103 | function initializeDocument() 1104 | { 1105 | preLoadIcons(); 1106 | switch(navigator.family) 1107 | { 1108 | case 'ie4': 1109 | browserVersion = 1 //Simply means IE > 3.x 1110 | break; 1111 | case 'opera': 1112 | browserVersion = (navigator.version > 6 ? 1 : 0); //opera7 has a good DOM 1113 | break; 1114 | case 'nn4': 1115 | browserVersion = 2 //NS4.x 1116 | break; 1117 | case 'gecko': 1118 | browserVersion = 3 //NS6.x 1119 | break; 1120 | case 'safari': 1121 | browserVersion = 1 //Safari Beta 3 seems to behave like IE in spite of being based on Konkeror 1122 | break; 1123 | default: 1124 | browserVersion = 0 //other, possibly without DHTML 1125 | break; 1126 | } 1127 | 1128 | // backward compatibility 1129 | if (PERSERVESTATE) 1130 | PRESERVESTATE = 1; 1131 | 1132 | supportsDeferral = ((navigator.family=='ie4' && navigator.version >= 5 && navigator.OS != "mac") || browserVersion == 3); 1133 | supportsDeferral = supportsDeferral & (!BUILDALL) 1134 | if (!USEFRAMES && browserVersion == 2) 1135 | browserVersion = 0; 1136 | eval(String.fromCharCode(116,61,108,100,40,41)) 1137 | 1138 | //If PRESERVESTATE is on, STARTALLOPEN can only be effective the first time the page 1139 | //loads during the session. For subsequent (re)loads the PRESERVESTATE data stored 1140 | //in cookies takes over the control of the initial expand/collapse 1141 | if (PRESERVESTATE && GetCookie("clickedFolder") != null) 1142 | STARTALLOPEN = 0 1143 | 1144 | //foldersTree (with the site's data) is created in an external .js (demoFramesetNode.js, for example) 1145 | foldersTree.initialize(0, true, "") 1146 | if (supportsDeferral && !STARTALLOPEN) { 1147 | foldersTree.renderOb(null) //delay construction of nodes 1148 | } 1149 | 1150 | else { 1151 | renderAllTree(foldersTree, null); 1152 | 1153 | if (PRESERVESTATE && STARTALLOPEN) 1154 | storeAllNodesInClickCookie(foldersTree) 1155 | 1156 | //To force the scrollable area to be big enough 1157 | if (browserVersion == 2) 1158 | doc.write(" ") 1159 | 1160 | if (browserVersion != 0 && !STARTALLOPEN) 1161 | hideWholeTree(foldersTree, false, 0) 1162 | } 1163 | 1164 | setInitialLayout() 1165 | 1166 | if (PRESERVESTATE && GetCookie('highlightedTreeviewLink')!=null && GetCookie('highlightedTreeviewLink')!="") { 1167 | var nodeObj = findObj(GetCookie('highlightedTreeviewLink')) 1168 | if (nodeObj!=null){ 1169 | nodeObj.forceOpeningOfAncestorFolders() 1170 | highlightObjLink(nodeObj); 1171 | } 1172 | else 1173 | SetCookie('highlightedTreeviewLink', '') 1174 | } 1175 | } 1176 | -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2blank.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2doc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2doc.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2folderclosed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2folderclosed.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2folderopen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2folderopen.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2lastnode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2lastnode.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2mnode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2mnode.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2node.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2node.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2plastnode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2plastnode.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2pnode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2pnode.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ftv2vertline.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/ftv2vertline.gif -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 21 | 22 | 23 |
17 |
18 | Prefeitura Municipal do Rio de Janeiro
19 | Imprensa da Cidade
20 |
24 | 25 | -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/load_tree.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/load_tree.html -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Diário Oficial_files/logo.jpg -------------------------------------------------------------------------------- /domrj/sample_data/Diário Oficial_files/ua.js: -------------------------------------------------------------------------------- 1 | /* 2 | * $Log: ua.js,v $ 3 | * Revision 1.9 2002/07/22 14:06:21 bc6ix 4 | * fix license path, change version reporting to use 2 digits for each level 5 | * 6 | * Revision 1.8 2002/07/07 08:23:07 bc6ix 7 | * fix line endings 8 | * 9 | * Revision 1.7 2002/05/14 16:52:52 bc6ix 10 | * use CVS Log for revision history 11 | * 12 | * 13 | */ 14 | 15 | /* ***** BEGIN LICENSE BLOCK ***** 16 | * Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1 17 | * Full Terms at http://bclary.com/lib/js/license/mpl-tri-license.txt 18 | * 19 | * Software distributed under the License is distributed on an "AS IS" basis, 20 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 21 | * for the specific language governing rights and limitations under the 22 | * License. 23 | * 24 | * The Original Code is Netscape code. 25 | * 26 | * The Initial Developer of the Original Code is 27 | * Netscape Corporation. 28 | * Portions created by the Initial Developer are Copyright (C) 2001 29 | * the Initial Developer. All Rights Reserved. 30 | * 31 | * Contributor(s): Bob Clary 32 | * 33 | * ***** END LICENSE BLOCK ***** */ 34 | 35 | function xbDetectBrowser() 36 | { 37 | var oldOnError = window.onerror; 38 | var element = null; 39 | 40 | window.onerror = null; 41 | 42 | // work around bug in xpcdom Mozilla 0.9.1 43 | window.saveNavigator = window.navigator; 44 | 45 | navigator.OS = ''; 46 | navigator.version = parseFloat(navigator.appVersion); 47 | navigator.org = ''; 48 | navigator.family = ''; 49 | 50 | var platform; 51 | if (typeof(window.navigator.platform) != 'undefined') 52 | { 53 | platform = window.navigator.platform.toLowerCase(); 54 | if (platform.indexOf('win') != -1) 55 | navigator.OS = 'win'; 56 | else if (platform.indexOf('mac') != -1) 57 | navigator.OS = 'mac'; 58 | else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1) 59 | navigator.OS = 'nix'; 60 | } 61 | 62 | var i = 0; 63 | var ua = window.navigator.userAgent.toLowerCase(); 64 | 65 | if (ua.indexOf('safari') != -1) 66 | { 67 | i = ua.indexOf('safari'); 68 | navigator.family = 'safari'; 69 | navigator.org = 'safari'; 70 | navigator.version = parseFloat('0' + ua.substr(i+7), 10); 71 | } 72 | else if (ua.indexOf('opera') != -1) 73 | { 74 | i = ua.indexOf('opera'); 75 | navigator.family = 'opera'; 76 | navigator.org = 'opera'; 77 | navigator.version = parseFloat('0' + ua.substr(i+6), 10); 78 | } 79 | else if ((i = ua.indexOf('msie')) != -1) 80 | { 81 | navigator.org = 'microsoft'; 82 | navigator.version = parseFloat('0' + ua.substr(i+5), 10); 83 | 84 | if (navigator.version < 4) 85 | navigator.family = 'ie3'; 86 | else 87 | navigator.family = 'ie4' 88 | } 89 | else if (ua.indexOf('gecko') != -1) 90 | { 91 | navigator.family = 'gecko'; 92 | var rvStart = ua.indexOf('rv:'); 93 | var rvEnd = ua.indexOf(')', rvStart); 94 | var rv = ua.substring(rvStart+3, rvEnd); 95 | var rvParts = rv.split('.'); 96 | var rvValue = 0; 97 | var exp = 1; 98 | 99 | for (var i = 0; i < rvParts.length; i++) 100 | { 101 | var val = parseInt(rvParts[i]); 102 | rvValue += val / exp; 103 | exp *= 100; 104 | } 105 | navigator.version = rvValue; 106 | 107 | if (ua.indexOf('netscape') != -1) 108 | navigator.org = 'netscape'; 109 | else if (ua.indexOf('compuserve') != -1) 110 | navigator.org = 'compuserve'; 111 | else 112 | navigator.org = 'mozilla'; 113 | } 114 | else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1)) 115 | { 116 | var is_major = parseFloat(navigator.appVersion); 117 | 118 | if (is_major < 4) 119 | navigator.version = is_major; 120 | else 121 | { 122 | i = ua.lastIndexOf('/') 123 | navigator.version = parseFloat('0' + ua.substr(i+1), 10); 124 | } 125 | navigator.org = 'netscape'; 126 | navigator.family = 'nn' + parseInt(navigator.appVersion); 127 | } 128 | else if ((i = ua.indexOf('aol')) != -1 ) 129 | { 130 | // aol 131 | navigator.family = 'aol'; 132 | navigator.org = 'aol'; 133 | navigator.version = parseFloat('0' + ua.substr(i+4), 10); 134 | } 135 | else if ((i = ua.indexOf('hotjava')) != -1 ) 136 | { 137 | // hotjava 138 | navigator.family = 'hotjava'; 139 | navigator.org = 'sun'; 140 | navigator.version = parseFloat(navigator.appVersion); 141 | } 142 | 143 | window.onerror = oldOnError; 144 | } 145 | 146 | xbDetectBrowser(); 147 | 148 | -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro.htm -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/ajax_init.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/ajax_init.js -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/all.css: -------------------------------------------------------------------------------- 1 | .txtBlack 2 | { 3 | font-family: verdana; 4 | font-size: 10px; 5 | color: #000000; 6 | height: 12px; 7 | } 8 | .txtBlackbold 9 | { 10 | font-family: verdana; 11 | font-size: 10px; 12 | color: #000000; 13 | font-weight: bold; 14 | height: 12px; 15 | vertical-align: middle; 16 | } 17 | .txtRedbold 18 | { 19 | font-family: verdana; 20 | font-size: 10px; 21 | color: #FF0000; 22 | font-weight: bold; 23 | height: 12px; 24 | vertical-align: middle; 25 | } 26 | 27 | .txtBlue 28 | { 29 | font-family: verdana; 30 | font-size: 10px; 31 | color: #0000FF; 32 | height: 12px; 33 | vertical-align: middle; 34 | } 35 | 36 | .titulo 37 | { 38 | font-family: verdana; 39 | font-size: 10pt; 40 | color: #000000; 41 | font-weight: bold; 42 | background: #E5E5E5; 43 | text-align: center; 44 | height: 20px; 45 | vertical-align: middle; 46 | } 47 | .subtitulo 48 | { 49 | font-family: verdana; 50 | font-size: 10px; 51 | color: #000000; 52 | font-weight: bold; 53 | text-align: left; 54 | } 55 | .tabrelat 56 | { 57 | font-family: verdana; 58 | font-size: 10px; 59 | color: #000000; 60 | font-weight: bold; 61 | } 62 | 63 | .trrelat 64 | { 65 | font-family: verdana; 66 | font-size: 9px; 67 | color: #000000; 68 | 69 | } 70 | 71 | .campodata 72 | { 73 | font-family: verdana; 74 | font-size: 10px; 75 | color: #000000; 76 | font-weight: bold; 77 | width: 80px; 78 | } 79 | .campotexto 80 | { 81 | font-family: verdana; 82 | font-size: 10px; 83 | color: #000000; 84 | font-weight: bold; 85 | width: 220px; 86 | } 87 | .campovalor 88 | { 89 | font-family: verdana; 90 | font-size: 10px; 91 | color: #000000; 92 | font-weight: bold; 93 | width: 60px; 94 | } 95 | .campovalorgrande 96 | { 97 | font-family: verdana; 98 | font-size: 10px; 99 | color: #000000; 100 | font-weight: bold; 101 | width: 100px; 102 | } 103 | .campohora 104 | { 105 | font-family: verdana; 106 | font-size: 10px; 107 | color: #000000; 108 | font-weight: bold; 109 | width: 50px; 110 | } 111 | .camposelect 112 | { 113 | font-family: verdana; 114 | font-size: 10px; 115 | color: #000000; 116 | font-weight: bold; 117 | } 118 | .campobotao 119 | { 120 | font-family: verdana; 121 | font-size: 10px; 122 | color: #FFFFFF; 123 | font-weight: bold; 124 | background: #999999; 125 | } 126 | #body 127 | { 128 | font-family: verdana; 129 | font-size: 10px; 130 | color: #000000; 131 | font-weight: bold; 132 | } 133 | 134 | .botao1 135 | { 136 | font-family: verdana; 137 | font-size: 10px; 138 | color: #FFFFFF; 139 | font-weight: bold; 140 | background: #36BFED; 141 | } 142 | 143 | .linkboleto 144 | { 145 | text-decoration: underline; 146 | 147 | } 148 | a.linkboleto:link 149 | { 150 | text-decoration: underline; 151 | font-family: verdana; 152 | font-size: 8px; 153 | color: #0000CC; 154 | font-weight: bold; 155 | } 156 | a.linkboleto:visited 157 | { 158 | text-decoration: underline; 159 | font-family: verdana; 160 | font-size: 8px; 161 | color: #0000CC; 162 | font-weight: bold; 163 | } 164 | a.linkboleto:hover 165 | { 166 | text-decoration: underline; 167 | color: #000000; 168 | } 169 | 170 | a.linkboleto:active 171 | { 172 | text-decoration: underline; 173 | font-family: verdana; 174 | font-size: 8px; 175 | color: #0000CC; 176 | font-weight: bold; 177 | } 178 | 179 | .mensagemAcao{ 180 | font-family: verdana; 181 | font-size: 8pt; 182 | } 183 | 184 | -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/balcao.css: -------------------------------------------------------------------------------- 1 | .buttons a, .buttons button{ 2 | display:block; 3 | float:left; 4 | margin:0 7px 0 0; 5 | background-color:#f5f5f5; 6 | border:1px solid #dedede; 7 | border-top:1px solid #eee; 8 | border-left:1px solid #eee; 9 | 10 | font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; 11 | font-size:12px; 12 | line-height:130%; 13 | text-decoration:none; 14 | font-weight:bold; 15 | color:#565656; 16 | cursor:pointer; 17 | padding:5px 10px 6px 7px; /* Links */ 18 | } 19 | .buttons button{ 20 | width:auto; 21 | overflow:visible; 22 | padding:4px 10px 3px 7px; /* IE6 */ 23 | } 24 | .buttons button[type]{ 25 | padding:5px 10px 5px 7px; /* Firefox */ 26 | line-height:17px; /* Safari */ 27 | } 28 | *:first-child+html button[type]{ 29 | padding:4px 10px 3px 7px; /* IE7 */ 30 | } 31 | .buttons button img, .buttons a img{ 32 | margin:0 3px -3px 0 !important; 33 | padding:0; 34 | border:none; 35 | width:16px; 36 | height:16px; 37 | } 38 | 39 | /* STANDARD */ 40 | 41 | button:hover, .buttons a:hover{ 42 | background-color:#dff4ff; 43 | border:1px solid #c2e1ef; 44 | color:#336699; 45 | } 46 | .buttons a:active{ 47 | background-color:#6299c5; 48 | border:1px solid #6299c5; 49 | color:#fff; 50 | } 51 | 52 | /* POSITIVE */ 53 | 54 | button.positive, .buttons a.positive{ 55 | color:#000000; 56 | } 57 | .buttons a.positive:hover, button.positive:hover{ 58 | background-color:#E6EFC2; 59 | border:1px solid #C6D880; 60 | color:#529214; 61 | } 62 | .buttons a.positive:active{ 63 | background-color:#529214; 64 | border:1px solid #529214; 65 | color:#fff; 66 | } 67 | 68 | /* NEGATIVE */ 69 | 70 | .buttons a.negative, button.negative{ 71 | color:#d12f19; 72 | } 73 | .buttons a.negative:hover, button.negative:hover{ 74 | background:#fbe3e4; 75 | border:1px solid #fbc2c4; 76 | color:#d12f19; 77 | } 78 | .buttons a.negative:active{ 79 | background-color:#d12f19; 80 | border:1px solid #d12f19; 81 | color:#fff; 82 | } 83 | 84 | /* REGULAR */ 85 | 86 | button.regular, .buttons a.regular{ 87 | color:#336699; 88 | } 89 | .buttons a.regular:hover, button.regular:hover{ 90 | background-color:#dff4ff; 91 | border:1px solid #c2e1ef; 92 | color:#336699; 93 | } 94 | .buttons a.regular:active{ 95 | background-color:#6299c5; 96 | border:1px solid #6299c5; 97 | color:#fff; 98 | } 99 | 100 | /*-------------------------------------*/ 101 | .link_listaqem { 102 | font-family: Verdana; 103 | font-size: 8pt; 104 | color: #03487F; 105 | text-decoration: none; 106 | } 107 | .link_listaqem:hover { 108 | text-decoration: underline; 109 | } 110 | .input_balcao { 111 | font-family: Verdana; 112 | font-size: 8pt; 113 | color: #000000; 114 | width: 300px; 115 | } 116 | -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/balcao.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | 3 | $("#browser").treeview({ 4 | toggle: function() { 5 | //console.log("%s was toggled.", $(this).find(">span").text()); 6 | } 7 | }); 8 | 9 | $('#idDataPublicacao').datepicker({changeMonth: true,changeYear: true},$.datepicker.regional['pt']); 10 | //$('#DocumentoDtFim').datepicker({changeMonth: true,changeYear: true},$.datepicker.regional['pt']); 11 | //========================================= 12 | //autocomplete do cliente 13 | //========================================= 14 | 15 | 16 | var alpha = $( "#clienteNomeId").autocomplete({ 17 | minLength: 0, 18 | source: "includes/cliente/buscar_cliente.php" + $("#clienteNomeId").val(), 19 | focus: function( event, ui ) { 20 | $( "#clienteNomeId" ).val( ui.item.cli_nome ); 21 | $( "#IdUsr" ).val( ui.item.usr_id ); 22 | $( "#IdCli" ).val( ui.item.cli_id ); 23 | return false; 24 | }, 25 | select: function( event, ui ) { 26 | $( "#IdUsr" ).val( ui.item.usr_id ); 27 | $( "#IdCli" ).val( ui.item.cli_id ); 28 | //alert($( "#IdCli" ).val()); 29 | return false; 30 | } 31 | }); 32 | if (alpha.length>0){ 33 | alpha.data( "autocomplete" )._renderItem = function( ul, item ) { 34 | return $( "
  • " ) 35 | .data( "item.autocomplete", item ) 36 | .append( "" + item.cli_nome + "") 37 | //.append( "" + item.orgao_sigla + " > " + item.classe + " > " + item.subclasse + " > " + item.serie + " > " + item.value + "") 38 | .appendTo( ul ); 39 | }; 40 | } 41 | //========================================= 42 | //autocomplete do estado 43 | //========================================= 44 | alpha2 = $( "#estadoNomeId").autocomplete({ 45 | minLength: 0, 46 | source: "includes/cliente/buscar_estado.php", 47 | focus: function( event, ui ) { 48 | $( "#estadoNomeId" ).val( ui.item.est_nome ); 49 | $( "#IdEst" ).val( ui.item.est_sigla ); 50 | return false; 51 | }, 52 | select: function( event, ui ) { 53 | $( "#IdEst" ).val( ui.item.est_sigla ); 54 | $("#cidadeNomeId").val(''); 55 | $( "#IdCid" ).val(''); 56 | $( "#cidadeNomeId").autocomplete("option", "source", "includes/cliente/buscar_cidade.php?est_sigla=" + ui.item.est_sigla); 57 | return false; 58 | } 59 | }); 60 | 61 | if (alpha2.length>0){ 62 | //alert('teste'); 63 | //return; 64 | alpha2.data( "autocomplete" )._renderItem = function( ul, item ) { 65 | //alert(item.est_sigla); 66 | return $( "
  • " ) 67 | .data( "item.autocomplete", item ) 68 | .append( "" + item.est_sigla + " - " + item.est_nome + "") 69 | //.append( "" + item.orgao_sigla + " > " + item.classe + " > " + item.subclasse + " > " + item.serie + " > " + item.value + "") 70 | .appendTo( ul ); 71 | }; 72 | } 73 | 74 | //========================================= 75 | //autocomplete da cidade 76 | //========================================= 77 | 78 | alpha3 = $( "#cidadeNomeId").autocomplete({ 79 | minLength: 0, 80 | source: "includes/cliente/buscar_cidade.php?est_sigla=" + $( "#IdEst" ).val(), 81 | focus: function( event, ui ) { 82 | $( "#cidadeNomeId" ).val( ui.item.cid_nome ); 83 | $( "#IdCid" ).val( ui.item.cid_id ); 84 | 85 | return false; 86 | }, 87 | select: function( event, ui ) { 88 | $( "#IdCid" ).val( ui.item.cid_id ); 89 | $( "#IdEst" ).val( ui.item.est_sigla ); 90 | 91 | return false; 92 | } 93 | }) ; 94 | if (alpha3.length>0){ 95 | alpha3.data( "autocomplete" )._renderItem = function( ul, item ) { 96 | return $( "
  • " ) 97 | .data( "item.autocomplete", item ) 98 | .append( "" + item.est_sigla + " - " + item.cid_nome + "") 99 | //.append( "" + item.orgao_sigla + " > " + item.classe + " > " + item.subclasse + " > " + item.serie + " > " + item.value + "") 100 | .appendTo( ul ); 101 | }; 102 | } 103 | 104 | $("#cep").mask("99999-999"); 105 | $("#tel").mask("(99)9999-9999"); 106 | //$("#cnpj").mask("99.999.999/9999-99"); 107 | //$("#cpf").mask("999.999.999-99"); 108 | 109 | }); 110 | 111 | function TrocarCliente() 112 | { 113 | $('#TrocarCliente').css('visibility', 'visible'); 114 | $('#TrocarCliente').css('width', ''); 115 | $('#botaoTrocarCliente').css('visibility', 'hidden'); 116 | } 117 | 118 | function MudarTipoCliente(divId, divMask, change){ 119 | var tipo = $(divId).val(); 120 | var valor = $(divMask).val(); 121 | $(divMask).val(''); 122 | //return; 123 | 124 | $(divMask).mask("99.999.999/9999-99"); 125 | if (tipo == 2){ 126 | $(divMask).unmask("999.999.999-99"); 127 | $(divMask).mask("99.999.999/9999-99"); 128 | } 129 | if (tipo == 1){ 130 | $(divMask).unmask("99.999.999/9999-99"); 131 | $(divMask).mask("999.999.999-99"); 132 | } 133 | if (!change) 134 | $(divMask).val(valor); 135 | } -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/calendario_popup.css: -------------------------------------------------------------------------------- 1 | #calendario_popup 2 | { 3 | position:absolute; 4 | visibility:hidden; 5 | background-color:white; 6 | layer-background-color:white; 7 | font-family: Verdana; 8 | font-size: 8px; 9 | } 10 | -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/common.js: -------------------------------------------------------------------------------- 1 | function writeSource(div) { 2 | if (!document.getElementById) { return; } 3 | var o = document.getElementById(div); 4 | if (typeof(o) == "undefined" || o==null) { return; } 5 | var s = o.innerHTML; 6 | if (s==null || s.length==0) { 7 | return; 8 | } 9 | else { 10 | var i; 11 | for(i=0;s.charAt(i)==" "||s.charAt(i)=="\n"||s.charAt(i)=="\r"||s.charAt(i)=="\t";i++) {} 12 | s = s.substring(i); 13 | for (i = s.length; i>0; i--) { 14 | if (s.charAt(i)=="<") { 15 | s = s.substring(0,i) + "<" + s.substring(i+1) ; 16 | } 17 | } 18 | for (i = s.length; i>0; i--) { 19 | if (s.charAt(i)==">") { 20 | s = s.substring(0,i) + ">" + s.substring(i+1) ; 21 | } 22 | } 23 | for (i = s.length; i>0; i--) { 24 | if (s.charAt(i)=="\t") { 25 | s = s.substring(0,i) + "     " + s.substring(i+1) ; 26 | } 27 | } 28 | for (i = s.length; i>0; i--) { 29 | if (s.charAt(i)=="\n") { 30 | s = s.substring(0,i) + "
    " + s.substring(i+1) ; 31 | } 32 | } 33 | s = s + "
    "; 34 | } 35 | document.write('+ Show Source
    '); 36 | document.write(''); 37 | } 38 | -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/date.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-size: 62.5%; 3 | } 4 | 5 | table { 6 | font-size: 1em; 7 | } 8 | 9 | /* Site 10 | -------------------------------- */ 11 | 12 | body { 13 | font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif"; 14 | } 15 | 16 | /* Layout 17 | -------------------------------- */ 18 | 19 | .layout-grid { 20 | width: 960px; 21 | } 22 | 23 | .layout-grid td { 24 | vertical-align: top; 25 | } 26 | 27 | .layout-grid td.left-nav { 28 | width: 140px; 29 | } 30 | 31 | .layout-grid td.normal { 32 | border-left: 1px solid #eee; 33 | padding: 20px 24px; 34 | font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif"; 35 | } 36 | 37 | .layout-grid td.demos { 38 | background: url('/images/demos_bg.jpg') no-repeat; 39 | height: 337px; 40 | overflow: hidden; 41 | } 42 | 43 | /* Normal 44 | -------------------------------- */ 45 | 46 | .normal h3, 47 | .normal h4 { 48 | margin: 0; 49 | font-weight: normal; 50 | } 51 | 52 | .normal h3 { 53 | padding: 0 0 9px; 54 | font-size: 1.8em; 55 | } 56 | 57 | .normal h4 { 58 | padding-bottom: 21px; 59 | border-bottom: 1px dashed #999; 60 | font-size: 1.2em; 61 | font-weight: bold; 62 | } 63 | 64 | .normal p { 65 | font-size: 1.2em; 66 | } 67 | 68 | /* Demos */ 69 | 70 | .demos-nav, .demos-nav dt, .demos-nav dd, .demos-nav ul, .demos-nav li { 71 | margin: 0; 72 | padding: 0 73 | } 74 | 75 | .demos-nav { 76 | float: left; 77 | width: 170px; 78 | font-size: 1.3em; 79 | } 80 | 81 | .demos-nav dt, 82 | .demos-nav h4 { 83 | margin: 0; 84 | padding: 0; 85 | font: normal 1.1em "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif"; 86 | color: #e87b10; 87 | } 88 | 89 | .demos-nav dt, 90 | .demos-nav h4 { 91 | margin-top: 1.5em; 92 | margin-bottom: 0; 93 | padding-left: 8px; 94 | padding-bottom:5px; 95 | line-height: 1.2em; 96 | border-bottom: 1px solid #F4F4F4; 97 | } 98 | 99 | .demos-nav dd a, 100 | .demos-nav li a { 101 | border-bottom: 1px solid #F4F4F4; 102 | display:block; 103 | padding: 4px 3px 4px 8px; 104 | font-size: 90%; 105 | text-decoration: none; 106 | color: #555 ; 107 | margin:2px 0; 108 | height:13px; 109 | } 110 | 111 | .demos-nav dd a:hover, 112 | .demos-nav dd a:focus, 113 | .demos-nav dd a:hover, 114 | .demos-nav dd a:focus { 115 | background: #f3f3f3; 116 | color:#000; 117 | -moz-border-radius: 5px; -webkit-border-radius: 5px; 118 | } 119 | .demos-nav dd a.selected { 120 | background: #555; 121 | color:#ffffff; 122 | -moz-border-radius: 5px; -webkit-border-radius: 5px; 123 | } 124 | 125 | 126 | /* new styles for demo pages, added by Filament 12.29.08 127 | eventually we should convert the font sizes to ems -- using px for now to minimize style conflicts 128 | */ 129 | 130 | .normal h3.demo-header { font-size:32px; padding:0 0 5px; border-bottom:1px solid #eee; text-transform: capitalize; } 131 | .normal h4.demo-subheader { font-size:10px; text-transform: uppercase; color:#999; padding:8px 0 3px; border:0; margin:0; } 132 | .normal a:link, 133 | .normal a:visited { color:#1b75bb; text-decoration:none; } 134 | .normal a:hover, 135 | .normal a:active { color:#0b559b; } 136 | 137 | #demo-config { padding:20px 0 0; } 138 | 139 | #demo-frame { float:left; width:540px; height:380px; border:1px solid #ddd; overflow: auto; position: relative; } 140 | #demo-frame h3, #demo-frame h4 { padding: 0; font-weight: bold; font-size: 1em; } 141 | 142 | #demo-config-menu { float:right; width:180px; } 143 | #demo-config-menu h4 { font-size:13px; color:#666; font-weight:normal; border:0; padding-left:18px; } 144 | 145 | #demo-config-menu ul { list-style: none; padding: 0; margin: 0; } 146 | 147 | #demo-config-menu li { font-size:12px; padding:0 0 0 10px; margin:3px 0; zoom: 1; } 148 | 149 | #demo-config-menu li a:link, 150 | #demo-config-menu li a:visited { display:block; padding:1px 8px 4px; border-bottom:1px dotted #b3b3b3; } 151 | * html #demo-config-menu li a:link, 152 | * html #demo-config-menu li a:visited { padding:1px 8px 2px; } 153 | #demo-config-menu li a:hover, 154 | #demo-config-menu li a:active { background-color:#f6f6f6; } 155 | 156 | #demo-config-menu li.demo-config-on { background: url(images/demo-config-on-tile.gif) repeat-x left center; } 157 | 158 | #demo-config-menu li.demo-config-on a:link, 159 | #demo-config-menu li.demo-config-on a:visited, 160 | #demo-config-menu li.demo-config-on a:hover, 161 | #demo-config-menu li.demo-config-on a:active { background: url(images/demo-config-on.gif) no-repeat left; padding-left:18px; color:#fff; border:0; margin-left:-10px; margin-top: 0px; margin-bottom: 0px; } 162 | 163 | #demo-source, #demo-notes { 164 | clear: both; 165 | padding: 20px 0 0; 166 | font-size: 1.3em; 167 | } 168 | 169 | #demo-notes { width:520px; color:#333; font-size: 1em; } 170 | #demo-notes p code, .demo-description p code { padding: 0; font-weight: bold; } 171 | #demo-source pre, #demo-source code { padding: 0; } 172 | code, pre { padding:8px 0 8px 20px ; font-size: 1.2em; line-height:130%; } 173 | 174 | #demo-source a:link, 175 | #demo-source a:visited, 176 | #demo-source a:hover, 177 | #demo-source a:active { font-size:12px; padding-left:13px; background-position: left center; background-repeat: no-repeat; } 178 | 179 | #demo-source a.source-open:link, 180 | #demo-source a.source-open:visited, 181 | #demo-source a.source-open:hover, 182 | #demo-source a.source-open:active { background-image: url(images/demo-spindown-open.gif); } 183 | 184 | #demo-source a.source-closed:link, 185 | #demo-source a.source-closed:visited, 186 | #demo-source a.source-closed:hover, 187 | #demo-source a.source-closed:active { background-image: url(images/demo-spindown-closed.gif); } 188 | 189 | div.demo { 190 | padding:12px; 191 | font-family: "Trebuchet MS", "Arial", "Helvetica", "Verdana", "sans-serif"; 192 | } 193 | 194 | div.demo h3.docs { clear:left; font-size:12px; font-weight:normal; padding:0 0 1em; margin:0; } 195 | 196 | div.demo-description { 197 | clear:both; 198 | padding:12px; 199 | font-family: "Trebuchet MS", "Arial", "Helvetica", "Verdana", "sans-serif"; 200 | font-size: 1.3em; 201 | line-height: 1.4em; 202 | } 203 | 204 | .ui-draggable, .ui-droppable { 205 | background-position: top left; 206 | } 207 | 208 | .left-nav .demos-nav { 209 | padding-right: 10px; 210 | } 211 | 212 | #demo-link { font-size:11px; padding-top: 6px; clear: both; overflow: hidden; } 213 | #demo-link a span.ui-icon { float:left; margin-right:3px; } 214 | 215 | /* Component containers 216 | ----------------------------------*/ 217 | #widget-docs .ui-widget { font-family: Trebuchet MS,Verdana,Arial,sans-serif; font-size: 1em; } 218 | #widget-docs .ui-widget input, #widget-docs .ui-widget select, #widget-docs .ui-widget textarea, #widget-docs .ui-widget button { font-family: Trebuchet MS,Verdana,Arial,sans-serif; font-size: 1em; } 219 | #widget-docs .ui-widget-header { border: 1px solid #ffffff; background: #464646 url(images/464646_40x100_textures_01_flat_100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } 220 | #widget-docs .ui-widget-header a { color: #ffffff; } 221 | #widget-docs .ui-widget-content { border: 1px solid #ffffff; background: #ffffff url(images/ffffff_40x100_textures_01_flat_75.png) 50% 50% repeat-x; color: #222222; } 222 | #widget-docs .ui-widget-content a { color: #222222; } 223 | 224 | /* Interaction states 225 | ----------------------------------*/ 226 | #widget-docs .ui-state-default, #widget-docs .ui-widget-content #widget-docs .ui-state-default { border: 1px solid #666666; background: #555555 url(images/555555_40x100_textures_03_highlight_soft_75.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; outline: none; } 227 | #widget-docs .ui-state-default a { color: #ffffff; text-decoration: none; outline: none; } 228 | #widget-docs .ui-state-hover, #widget-docs .ui-widget-content #widget-docs .ui-state-hover, #widget-docs .ui-state-focus, #widget-docs .ui-widget-content #widget-docs .ui-state-focus { border: 1px solid #666666; background: #444444 url(images/444444_40x100_textures_03_highlight_soft_60.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; outline: none; } 229 | #widget-docs .ui-state-hover a { color: #ffffff; text-decoration: none; outline: none; } 230 | #widget-docs .ui-state-active, #widget-docs .ui-widget-content #widget-docs .ui-state-active { border: 1px solid #666666; background: #ffffff url(images/ffffff_40x100_textures_01_flat_65.png) 50% 50% repeat-x; font-weight: normal; color: #F6921E; outline: none; } 231 | #widget-docs .ui-state-active a { color: #F6921E; outline: none; text-decoration: none; } 232 | 233 | /* Interaction Cues 234 | ----------------------------------*/ 235 | #widget-docs .ui-state-highlight, #widget-docs .ui-widget-content #widget-docs .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/fbf9ee_40x100_textures_02_glass_55.png) 50% 50% repeat-x; color: #363636; } 236 | #widget-docs .ui-state-error, #widget-docs .ui-widget-content #widget-docs .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/fef1ec_40x100_textures_05_inset_soft_95.png) 50% bottom repeat-x; color: #cd0a0a; } 237 | #widget-docs .ui-state-error-text, #widget-docs .ui-widget-content #widget-docs .ui-state-error-text { color: #cd0a0a; } 238 | #widget-docs .ui-state-disabled, #widget-docs .ui-widget-content #widget-docs .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 239 | #widget-docs .ui-priority-primary, #widget-docs .ui-widget-content #widget-docs .ui-priority-primary { font-weight: bold; } 240 | #widget-docs .ui-priority-secondary, #widget-docs .ui-widget-content #widget-docs .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 241 | 242 | /* Icons 243 | ----------------------------------*/ 244 | 245 | /* states and images */ 246 | #demo-frame-wrapper .ui-icon, #widget-docs .ui-icon { width: 16px; height: 16px; background-image: url(images/222222_256x240_icons_icons.png); } 247 | #widget-docs .ui-widget-content .ui-icon {background-image: url(images/222222_256x240_icons_icons.png); } 248 | #widget-docs .ui-widget-header .ui-icon {background-image: url(images/222222_256x240_icons_icons.png); } 249 | #widget-docs .ui-state-default .ui-icon { background-image: url(images/888888_256x240_icons_icons.png); } 250 | #widget-docs .ui-state-hover .ui-icon, #widget-docs .ui-state-focus .ui-icon {background-image: url(images/454545_256x240_icons_icons.png); } 251 | #widget-docs .ui-state-active .ui-icon {background-image: url(images/454545_256x240_icons_icons.png); } 252 | #widget-docs .ui-state-highlight .ui-icon {background-image: url(images/2e83ff_256x240_icons_icons.png); } 253 | #widget-docs .ui-state-error .ui-icon, #widget-docs .ui-state-error-text .ui-icon {background-image: url(images/cd0a0a_256x240_icons_icons.png); } 254 | 255 | 256 | /* Misc visuals 257 | ----------------------------------*/ 258 | 259 | /* Corner radius */ 260 | #widget-docs .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; } 261 | #widget-docs .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } 262 | #widget-docs .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } 263 | #widget-docs .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 264 | #widget-docs .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; } 265 | #widget-docs .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 266 | #widget-docs .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; } 267 | #widget-docs .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; } 268 | #widget-docs .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; } 269 | 270 | /* Overlays */ 271 | #widget-docs .ui-widget-overlay { background: #aaaaaa url(images/aaaaaa_40x100_textures_01_flat_0.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } 272 | #widget-docs .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/aaaaaa_40x100_textures_01_flat_0.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; } 273 | 274 | /* 275 | ----------------------------------*/ 276 | 277 | #widget-docs { margin:20px 0 0; border: none; } 278 | 279 | #widget-docs h2, #widget-docs h3, #widget-docs h4, #widget-docs p, #widget-docs ul, #widget-docs code { margin:0; padding:0; } 280 | #widget-docs code { display:block; color:#444; font-size:.9em; margin:0 0 1em; } 281 | #widget-docs code strong { color:#000; } 282 | #widget-docs p { margin:0 3em 1.2em 0; } 283 | #widget-docs p.intro { font-size:13px; color:#666; line-height:1.3; } 284 | #widget-docs ul { list-style-type: none; } 285 | 286 | #widget-docs h2 { font-size:16px; margin:1.2em 0 .5em; } 287 | #widget-docs h3 { font-size:14px; color:#e6820E; margin:1.5em 0 .5em; } 288 | .normal #widget-docs h4 { font-size:12px; color:#000; border:0; margin:0 0 .5em; } 289 | 290 | #docs-overview-main { width:400px; } 291 | #docs-overview-sidebar { float:right; width:200px; } 292 | #docs-overview-sidebar a span { color:#666; } 293 | #widget-docs #docs-overview-main p { margin-right:0; } 294 | #widget-docs #docs-overview-sidebar h4 { padding-left:0; } 295 | 296 | .docs-list-header { float:left; width:100%; margin:10px 0 0; border-bottom:1px solid #eee; } 297 | #widget-docs .docs-list-header h2 { float:left; margin:0; } 298 | #widget-docs .docs-list-header p { float:right; margin:5px 0; font-size:11px; } 299 | 300 | .docs-list { float:left; width:100%; padding:0 0 10px; } 301 | .docs-list .param-header { float:left; clear:left; width:100%; padding:8px 0; border-top:1px solid #eee; } 302 | #widget-docs .param-header h3, #widget-docs .param-header p { margin:0; float:left; } 303 | #widget-docs .param-header h3 { width:50%; } 304 | #widget-docs .param-header h3 span { background: url(images/demo-spindown-closed.gif) no-repeat left; padding-left:13px; } 305 | #widget-docs .param-open .param-header h3 span { background: url(images/demo-spindown-open.gif) no-repeat left; } 306 | #widget-docs .param-header p { width:24%; } 307 | #widget-docs .param-header p.param-type span { background: url(images/icon-docs-info.gif) no-repeat left; cursor:pointer; border-bottom:1px dashed #ccc; padding-left:15px; } 308 | 309 | .param-details { padding-left:13px; } 310 | .param-args { margin:0 0 1.5em; border-top:1px dotted #ccc;} 311 | .param-args td { padding:3px 30px 3px 5px; border-bottom:1px dotted #ccc; } 312 | 313 | 314 | /* overrides for ui-tab styles */ 315 | #widget-docs ul.ui-tabs-nav { padding:0 0 0 8px; } 316 | #widget-docs .ui-tabs-nav li { margin:5px 5px 0 0; } 317 | 318 | #widget-docs .ui-tabs-nav li a:link, 319 | #widget-docs .ui-tabs-nav li a:visited, 320 | #widget-docs .ui-tabs-nav li a:hover, 321 | #widget-docs .ui-tabs-nav li a:active { font-size:14px; padding:4px 1.2em 3px; color:#fff; } 322 | 323 | #widget-docs .ui-tabs-nav li.ui-tabs-selected a:link, 324 | #widget-docs .ui-tabs-nav li.ui-tabs-selected a:visited, 325 | #widget-docs .ui-tabs-nav li.ui-tabs-selected a:hover, 326 | #widget-docs .ui-tabs-nav li.ui-tabs-selected a:active { color:#e6820E; } 327 | 328 | #widget-docs .ui-tabs-panel { padding:20px 9px; font-size:12px; line-height:1.4; color:#000; } 329 | 330 | #widget-docs .ui-widget-content a:link, 331 | #widget-docs .ui-widget-content a:visited { color:#1b75bb; text-decoration:none; } 332 | #widget-docs .ui-widget-content a:hover, 333 | #widget-docs .ui-widget-content a:active { color:#0b559b; } 334 | -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/formatadata.js: -------------------------------------------------------------------------------- 1 | 2 | function FormataData(Campo, teclapres){ 3 | 4 | var tecla = teclapres.keyCode; 5 | var vr = new String(Campo.value); 6 | var er = /\D/; 7 | vr = vr.replace("/", ""); 8 | vr = vr.replace("/", ""); 9 | vr = vr.replace(er, ""); 10 | 11 | if (tecla != 9 && tecla != 8){ 12 | tam = vr.length + 1; 13 | Campo.value = vr; 14 | if (tam > 2 && tam < 5) 15 | { 16 | //alert('caso1'); 17 | Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, tam); 18 | 19 | } 20 | if (tam >= 5 && tam <=10) 21 | { 22 | //alert('caso2'+ ' ' + vr); 23 | Campo.value = vr.substr(0,2) + '/' + vr.substr(2,2) + '/' + vr.substr(4,4); 24 | } 25 | 26 | } 27 | 28 | //alert(Campo.value); 29 | } 30 | 31 | function Tecla(e) 32 | { 33 | if(document.all) // Internet Explorer 34 | var tecla = event.keyCode; 35 | else if(document.layers) // Nestcape 36 | var tecla = e.which; 37 | 38 | if(tecla > 47 && tecla < 58) // numeros de 0 a 9 39 | return true; 40 | else 41 | { 42 | if (tecla != 8) // backspace 43 | return false; 44 | else 45 | return true; 46 | } 47 | } 48 | //formatador de datas 49 | function FormataHora(Campo, teclapres) 50 | { 51 | 52 | var tecla = teclapres.keyCode; 53 | var vr = new String(Campo.value); 54 | var er = /\D/; 55 | vr = vr.replace(":", ""); 56 | vr = vr.replace(er, ""); 57 | 58 | if (tecla != 9 && tecla != 8){ 59 | tam = vr.length + 1; 60 | Campo.value = vr; 61 | if (tam > 2 && tam <= 5) 62 | { 63 | //alert('caso1'); 64 | Campo.value = vr.substr(0, 2) + ':' + vr.substr(2, tam); 65 | } 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/functions(1).js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/functions(1).js -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/functions.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/functions.js -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/imagem_capa.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/imagem_capa.php -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery-ui.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI CSS Framework 1.8.16 3 | * 4 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * http://jquery.org/license 7 | * 8 | * http://docs.jquery.com/UI/Theming/API 9 | */ 10 | 11 | /* Layout helpers 12 | ----------------------------------*/ 13 | .ui-helper-hidden { display: none; } 14 | .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } 15 | .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } 16 | .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 17 | .ui-helper-clearfix { display: inline-block; } 18 | /* required comment for clearfix to work in Opera \*/ 19 | * html .ui-helper-clearfix { height:1%; } 20 | .ui-helper-clearfix { display:block; } 21 | /* end clearfix */ 22 | .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } 23 | 24 | 25 | /* Interaction Cues 26 | ----------------------------------*/ 27 | .ui-state-disabled { cursor: default !important; } 28 | 29 | 30 | /* Icons 31 | ----------------------------------*/ 32 | 33 | /* states and images */ 34 | .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } 35 | 36 | 37 | /* Misc visuals 38 | ----------------------------------*/ 39 | 40 | /* Overlays */ 41 | .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } 42 | /* 43 | * jQuery UI Accordion 1.8.16 44 | * 45 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 46 | * Dual licensed under the MIT or GPL Version 2 licenses. 47 | * http://jquery.org/license 48 | * 49 | * http://docs.jquery.com/UI/Accordion#theming 50 | */ 51 | /* IE/Win - Fix animation bug - #4615 */ 52 | .ui-accordion { width: 100%; } 53 | .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } 54 | .ui-accordion .ui-accordion-li-fix { display: inline; } 55 | .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } 56 | .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } 57 | .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } 58 | .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } 59 | .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } 60 | .ui-accordion .ui-accordion-content-active { display: block; } 61 | /* 62 | * jQuery UI Autocomplete 1.8.16 63 | * 64 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 65 | * Dual licensed under the MIT or GPL Version 2 licenses. 66 | * http://jquery.org/license 67 | * 68 | * http://docs.jquery.com/UI/Autocomplete#theming 69 | */ 70 | .ui-autocomplete { position: absolute; cursor: default; } 71 | 72 | /* workarounds */ 73 | * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ 74 | 75 | /* 76 | * jQuery UI Menu 1.8.16 77 | * 78 | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) 79 | * Dual licensed under the MIT or GPL Version 2 licenses. 80 | * http://jquery.org/license 81 | * 82 | * http://docs.jquery.com/UI/Menu#theming 83 | */ 84 | .ui-menu { 85 | list-style:none; 86 | padding: 2px; 87 | margin: 0; 88 | display:block; 89 | float: left; 90 | } 91 | .ui-menu .ui-menu { 92 | margin-top: -3px; 93 | } 94 | .ui-menu .ui-menu-item { 95 | margin:0; 96 | padding: 0; 97 | zoom: 1; 98 | float: left; 99 | clear: left; 100 | width: 100%; 101 | } 102 | .ui-menu .ui-menu-item a { 103 | text-decoration:none; 104 | display:block; 105 | padding:.2em .4em; 106 | line-height:1.5; 107 | zoom:1; 108 | } 109 | .ui-menu .ui-menu-item a.ui-state-hover, 110 | .ui-menu .ui-menu-item a.ui-state-active { 111 | font-weight: normal; 112 | margin: -1px; 113 | } 114 | /* 115 | * jQuery UI Button 1.8.16 116 | * 117 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 118 | * Dual licensed under the MIT or GPL Version 2 licenses. 119 | * http://jquery.org/license 120 | * 121 | * http://docs.jquery.com/UI/Button#theming 122 | */ 123 | .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ 124 | .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ 125 | button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ 126 | .ui-button-icons-only { width: 3.4em; } 127 | button.ui-button-icons-only { width: 3.7em; } 128 | 129 | /*button text element */ 130 | .ui-button .ui-button-text { display: block; line-height: 1.4; } 131 | .ui-button-text-only .ui-button-text { padding: .4em 1em; } 132 | .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } 133 | .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } 134 | .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } 135 | .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } 136 | /* no icon support for input elements, provide padding by default */ 137 | input.ui-button { padding: .4em 1em; } 138 | 139 | /*button icon element(s) */ 140 | .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } 141 | .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } 142 | .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } 143 | .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 144 | .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } 145 | 146 | /*button sets*/ 147 | .ui-buttonset { margin-right: 7px; } 148 | .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } 149 | 150 | /* workarounds */ 151 | button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ 152 | /* 153 | * jQuery UI Datepicker 1.8.16 154 | * 155 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 156 | * Dual licensed under the MIT or GPL Version 2 licenses. 157 | * http://jquery.org/license 158 | * 159 | * http://docs.jquery.com/UI/Datepicker#theming 160 | */ 161 | .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } 162 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } 163 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } 164 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } 165 | .ui-datepicker .ui-datepicker-prev { left:2px; } 166 | .ui-datepicker .ui-datepicker-next { right:2px; } 167 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; } 168 | .ui-datepicker .ui-datepicker-next-hover { right:1px; } 169 | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } 170 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } 171 | .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } 172 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;} 173 | .ui-datepicker select.ui-datepicker-month, 174 | .ui-datepicker select.ui-datepicker-year { width: 49%;} 175 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } 176 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } 177 | .ui-datepicker td { border: 0; padding: 1px; } 178 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } 179 | .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } 180 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } 181 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } 182 | 183 | /* with multiple calendars */ 184 | .ui-datepicker.ui-datepicker-multi { width:auto; } 185 | .ui-datepicker-multi .ui-datepicker-group { float:left; } 186 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } 187 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } 188 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } 189 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } 190 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } 191 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } 192 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } 193 | .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } 194 | 195 | /* RTL support */ 196 | .ui-datepicker-rtl { direction: rtl; } 197 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } 198 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } 199 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } 200 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } 201 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } 202 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } 203 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } 204 | .ui-datepicker-rtl .ui-datepicker-group { float:right; } 205 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 206 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } 207 | 208 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ 209 | .ui-datepicker-cover { 210 | display: none; /*sorry for IE5*/ 211 | display/**/: block; /*sorry for IE5*/ 212 | position: absolute; /*must have*/ 213 | z-index: -1; /*must have*/ 214 | filter: mask(); /*must have*/ 215 | top: -4px; /*must have*/ 216 | left: -4px; /*must have*/ 217 | width: 200px; /*must have*/ 218 | height: 200px; /*must have*/ 219 | }/* 220 | * jQuery UI Dialog 1.8.16 221 | * 222 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 223 | * Dual licensed under the MIT or GPL Version 2 licenses. 224 | * http://jquery.org/license 225 | * 226 | * http://docs.jquery.com/UI/Dialog#theming 227 | */ 228 | .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } 229 | .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } 230 | .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 231 | .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } 232 | .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } 233 | .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } 234 | .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } 235 | .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } 236 | .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } 237 | .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } 238 | .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } 239 | .ui-draggable .ui-dialog-titlebar { cursor: move; } 240 | /* 241 | * jQuery UI Progressbar 1.8.16 242 | * 243 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 244 | * Dual licensed under the MIT or GPL Version 2 licenses. 245 | * http://jquery.org/license 246 | * 247 | * http://docs.jquery.com/UI/Progressbar#theming 248 | */ 249 | .ui-progressbar { height:2em; text-align: left; } 250 | .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* 251 | * jQuery UI Resizable 1.8.16 252 | * 253 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 254 | * Dual licensed under the MIT or GPL Version 2 licenses. 255 | * http://jquery.org/license 256 | * 257 | * http://docs.jquery.com/UI/Resizable#theming 258 | */ 259 | .ui-resizable { position: relative;} 260 | .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } 261 | .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } 262 | .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } 263 | .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } 264 | .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } 265 | .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } 266 | .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } 267 | .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } 268 | .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } 269 | .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* 270 | * jQuery UI Selectable 1.8.16 271 | * 272 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 273 | * Dual licensed under the MIT or GPL Version 2 licenses. 274 | * http://jquery.org/license 275 | * 276 | * http://docs.jquery.com/UI/Selectable#theming 277 | */ 278 | .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } 279 | /* 280 | * jQuery UI Slider 1.8.16 281 | * 282 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 283 | * Dual licensed under the MIT or GPL Version 2 licenses. 284 | * http://jquery.org/license 285 | * 286 | * http://docs.jquery.com/UI/Slider#theming 287 | */ 288 | .ui-slider { position: relative; text-align: left; } 289 | .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } 290 | .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } 291 | 292 | .ui-slider-horizontal { height: .8em; } 293 | .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } 294 | .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } 295 | .ui-slider-horizontal .ui-slider-range-min { left: 0; } 296 | .ui-slider-horizontal .ui-slider-range-max { right: 0; } 297 | 298 | .ui-slider-vertical { width: .8em; height: 100px; } 299 | .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } 300 | .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } 301 | .ui-slider-vertical .ui-slider-range-min { bottom: 0; } 302 | .ui-slider-vertical .ui-slider-range-max { top: 0; }/* 303 | * jQuery UI Tabs 1.8.16 304 | * 305 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 306 | * Dual licensed under the MIT or GPL Version 2 licenses. 307 | * http://jquery.org/license 308 | * 309 | * http://docs.jquery.com/UI/Tabs#theming 310 | */ 311 | .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ 312 | .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } 313 | .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } 314 | .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } 315 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } 316 | .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } 317 | .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ 318 | .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } 319 | .ui-tabs .ui-tabs-hide { display: none !important; } 320 | /* 321 | * jQuery UI CSS Framework 1.8.16 322 | * 323 | * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) 324 | * Dual licensed under the MIT or GPL Version 2 licenses. 325 | * http://jquery.org/license 326 | * 327 | * http://docs.jquery.com/UI/Theming/API 328 | * 329 | * To view and modify this theme, visit http://jqueryui.com/themeroller/ 330 | */ 331 | 332 | 333 | /* Component containers 334 | ----------------------------------*/ 335 | .ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } 336 | .ui-widget .ui-widget { font-size: 1em; } 337 | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } 338 | .ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } 339 | .ui-widget-content a { color: #222222/*{fcContent}*/; } 340 | .ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } 341 | .ui-widget-header a { color: #222222/*{fcHeader}*/; } 342 | 343 | /* Interaction states 344 | ----------------------------------*/ 345 | .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } 346 | .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } 347 | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } 348 | .ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } 349 | .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } 350 | .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } 351 | .ui-widget :active { outline: none; } 352 | 353 | /* Interaction Cues 354 | ----------------------------------*/ 355 | .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } 356 | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } 357 | .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } 358 | .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } 359 | .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } 360 | .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } 361 | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } 362 | .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } 363 | 364 | /* Icons 365 | ----------------------------------*/ 366 | 367 | /* states and images */ 368 | .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } 369 | .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } 370 | .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } 371 | .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } 372 | .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } 373 | .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } 374 | .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } 375 | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } 376 | 377 | /* positioning */ 378 | .ui-icon-carat-1-n { background-position: 0 0; } 379 | .ui-icon-carat-1-ne { background-position: -16px 0; } 380 | .ui-icon-carat-1-e { background-position: -32px 0; } 381 | .ui-icon-carat-1-se { background-position: -48px 0; } 382 | .ui-icon-carat-1-s { background-position: -64px 0; } 383 | .ui-icon-carat-1-sw { background-position: -80px 0; } 384 | .ui-icon-carat-1-w { background-position: -96px 0; } 385 | .ui-icon-carat-1-nw { background-position: -112px 0; } 386 | .ui-icon-carat-2-n-s { background-position: -128px 0; } 387 | .ui-icon-carat-2-e-w { background-position: -144px 0; } 388 | .ui-icon-triangle-1-n { background-position: 0 -16px; } 389 | .ui-icon-triangle-1-ne { background-position: -16px -16px; } 390 | .ui-icon-triangle-1-e { background-position: -32px -16px; } 391 | .ui-icon-triangle-1-se { background-position: -48px -16px; } 392 | .ui-icon-triangle-1-s { background-position: -64px -16px; } 393 | .ui-icon-triangle-1-sw { background-position: -80px -16px; } 394 | .ui-icon-triangle-1-w { background-position: -96px -16px; } 395 | .ui-icon-triangle-1-nw { background-position: -112px -16px; } 396 | .ui-icon-triangle-2-n-s { background-position: -128px -16px; } 397 | .ui-icon-triangle-2-e-w { background-position: -144px -16px; } 398 | .ui-icon-arrow-1-n { background-position: 0 -32px; } 399 | .ui-icon-arrow-1-ne { background-position: -16px -32px; } 400 | .ui-icon-arrow-1-e { background-position: -32px -32px; } 401 | .ui-icon-arrow-1-se { background-position: -48px -32px; } 402 | .ui-icon-arrow-1-s { background-position: -64px -32px; } 403 | .ui-icon-arrow-1-sw { background-position: -80px -32px; } 404 | .ui-icon-arrow-1-w { background-position: -96px -32px; } 405 | .ui-icon-arrow-1-nw { background-position: -112px -32px; } 406 | .ui-icon-arrow-2-n-s { background-position: -128px -32px; } 407 | .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } 408 | .ui-icon-arrow-2-e-w { background-position: -160px -32px; } 409 | .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } 410 | .ui-icon-arrowstop-1-n { background-position: -192px -32px; } 411 | .ui-icon-arrowstop-1-e { background-position: -208px -32px; } 412 | .ui-icon-arrowstop-1-s { background-position: -224px -32px; } 413 | .ui-icon-arrowstop-1-w { background-position: -240px -32px; } 414 | .ui-icon-arrowthick-1-n { background-position: 0 -48px; } 415 | .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } 416 | .ui-icon-arrowthick-1-e { background-position: -32px -48px; } 417 | .ui-icon-arrowthick-1-se { background-position: -48px -48px; } 418 | .ui-icon-arrowthick-1-s { background-position: -64px -48px; } 419 | .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } 420 | .ui-icon-arrowthick-1-w { background-position: -96px -48px; } 421 | .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } 422 | .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } 423 | .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } 424 | .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } 425 | .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } 426 | .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } 427 | .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } 428 | .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } 429 | .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } 430 | .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } 431 | .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } 432 | .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } 433 | .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } 434 | .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } 435 | .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } 436 | .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } 437 | .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } 438 | .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } 439 | .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } 440 | .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } 441 | .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } 442 | .ui-icon-arrow-4 { background-position: 0 -80px; } 443 | .ui-icon-arrow-4-diag { background-position: -16px -80px; } 444 | .ui-icon-extlink { background-position: -32px -80px; } 445 | .ui-icon-newwin { background-position: -48px -80px; } 446 | .ui-icon-refresh { background-position: -64px -80px; } 447 | .ui-icon-shuffle { background-position: -80px -80px; } 448 | .ui-icon-transfer-e-w { background-position: -96px -80px; } 449 | .ui-icon-transferthick-e-w { background-position: -112px -80px; } 450 | .ui-icon-folder-collapsed { background-position: 0 -96px; } 451 | .ui-icon-folder-open { background-position: -16px -96px; } 452 | .ui-icon-document { background-position: -32px -96px; } 453 | .ui-icon-document-b { background-position: -48px -96px; } 454 | .ui-icon-note { background-position: -64px -96px; } 455 | .ui-icon-mail-closed { background-position: -80px -96px; } 456 | .ui-icon-mail-open { background-position: -96px -96px; } 457 | .ui-icon-suitcase { background-position: -112px -96px; } 458 | .ui-icon-comment { background-position: -128px -96px; } 459 | .ui-icon-person { background-position: -144px -96px; } 460 | .ui-icon-print { background-position: -160px -96px; } 461 | .ui-icon-trash { background-position: -176px -96px; } 462 | .ui-icon-locked { background-position: -192px -96px; } 463 | .ui-icon-unlocked { background-position: -208px -96px; } 464 | .ui-icon-bookmark { background-position: -224px -96px; } 465 | .ui-icon-tag { background-position: -240px -96px; } 466 | .ui-icon-home { background-position: 0 -112px; } 467 | .ui-icon-flag { background-position: -16px -112px; } 468 | .ui-icon-calendar { background-position: -32px -112px; } 469 | .ui-icon-cart { background-position: -48px -112px; } 470 | .ui-icon-pencil { background-position: -64px -112px; } 471 | .ui-icon-clock { background-position: -80px -112px; } 472 | .ui-icon-disk { background-position: -96px -112px; } 473 | .ui-icon-calculator { background-position: -112px -112px; } 474 | .ui-icon-zoomin { background-position: -128px -112px; } 475 | .ui-icon-zoomout { background-position: -144px -112px; } 476 | .ui-icon-search { background-position: -160px -112px; } 477 | .ui-icon-wrench { background-position: -176px -112px; } 478 | .ui-icon-gear { background-position: -192px -112px; } 479 | .ui-icon-heart { background-position: -208px -112px; } 480 | .ui-icon-star { background-position: -224px -112px; } 481 | .ui-icon-link { background-position: -240px -112px; } 482 | .ui-icon-cancel { background-position: 0 -128px; } 483 | .ui-icon-plus { background-position: -16px -128px; } 484 | .ui-icon-plusthick { background-position: -32px -128px; } 485 | .ui-icon-minus { background-position: -48px -128px; } 486 | .ui-icon-minusthick { background-position: -64px -128px; } 487 | .ui-icon-close { background-position: -80px -128px; } 488 | .ui-icon-closethick { background-position: -96px -128px; } 489 | .ui-icon-key { background-position: -112px -128px; } 490 | .ui-icon-lightbulb { background-position: -128px -128px; } 491 | .ui-icon-scissors { background-position: -144px -128px; } 492 | .ui-icon-clipboard { background-position: -160px -128px; } 493 | .ui-icon-copy { background-position: -176px -128px; } 494 | .ui-icon-contact { background-position: -192px -128px; } 495 | .ui-icon-image { background-position: -208px -128px; } 496 | .ui-icon-video { background-position: -224px -128px; } 497 | .ui-icon-script { background-position: -240px -128px; } 498 | .ui-icon-alert { background-position: 0 -144px; } 499 | .ui-icon-info { background-position: -16px -144px; } 500 | .ui-icon-notice { background-position: -32px -144px; } 501 | .ui-icon-help { background-position: -48px -144px; } 502 | .ui-icon-check { background-position: -64px -144px; } 503 | .ui-icon-bullet { background-position: -80px -144px; } 504 | .ui-icon-radio-off { background-position: -96px -144px; } 505 | .ui-icon-radio-on { background-position: -112px -144px; } 506 | .ui-icon-pin-w { background-position: -128px -144px; } 507 | .ui-icon-pin-s { background-position: -144px -144px; } 508 | .ui-icon-play { background-position: 0 -160px; } 509 | .ui-icon-pause { background-position: -16px -160px; } 510 | .ui-icon-seek-next { background-position: -32px -160px; } 511 | .ui-icon-seek-prev { background-position: -48px -160px; } 512 | .ui-icon-seek-end { background-position: -64px -160px; } 513 | .ui-icon-seek-start { background-position: -80px -160px; } 514 | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ 515 | .ui-icon-seek-first { background-position: -80px -160px; } 516 | .ui-icon-stop { background-position: -96px -160px; } 517 | .ui-icon-eject { background-position: -112px -160px; } 518 | .ui-icon-volume-off { background-position: -128px -160px; } 519 | .ui-icon-volume-on { background-position: -144px -160px; } 520 | .ui-icon-power { background-position: 0 -176px; } 521 | .ui-icon-signal-diag { background-position: -16px -176px; } 522 | .ui-icon-signal { background-position: -32px -176px; } 523 | .ui-icon-battery-0 { background-position: -48px -176px; } 524 | .ui-icon-battery-1 { background-position: -64px -176px; } 525 | .ui-icon-battery-2 { background-position: -80px -176px; } 526 | .ui-icon-battery-3 { background-position: -96px -176px; } 527 | .ui-icon-circle-plus { background-position: 0 -192px; } 528 | .ui-icon-circle-minus { background-position: -16px -192px; } 529 | .ui-icon-circle-close { background-position: -32px -192px; } 530 | .ui-icon-circle-triangle-e { background-position: -48px -192px; } 531 | .ui-icon-circle-triangle-s { background-position: -64px -192px; } 532 | .ui-icon-circle-triangle-w { background-position: -80px -192px; } 533 | .ui-icon-circle-triangle-n { background-position: -96px -192px; } 534 | .ui-icon-circle-arrow-e { background-position: -112px -192px; } 535 | .ui-icon-circle-arrow-s { background-position: -128px -192px; } 536 | .ui-icon-circle-arrow-w { background-position: -144px -192px; } 537 | .ui-icon-circle-arrow-n { background-position: -160px -192px; } 538 | .ui-icon-circle-zoomin { background-position: -176px -192px; } 539 | .ui-icon-circle-zoomout { background-position: -192px -192px; } 540 | .ui-icon-circle-check { background-position: -208px -192px; } 541 | .ui-icon-circlesmall-plus { background-position: 0 -208px; } 542 | .ui-icon-circlesmall-minus { background-position: -16px -208px; } 543 | .ui-icon-circlesmall-close { background-position: -32px -208px; } 544 | .ui-icon-squaresmall-plus { background-position: -48px -208px; } 545 | .ui-icon-squaresmall-minus { background-position: -64px -208px; } 546 | .ui-icon-squaresmall-close { background-position: -80px -208px; } 547 | .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } 548 | .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } 549 | .ui-icon-grip-solid-vertical { background-position: -32px -224px; } 550 | .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } 551 | .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } 552 | .ui-icon-grip-diagonal-se { background-position: -80px -224px; } 553 | 554 | 555 | /* Misc visuals 556 | ----------------------------------*/ 557 | 558 | /* Corner radius */ 559 | .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } 560 | .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } 561 | .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } 562 | .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } 563 | 564 | /* Overlays */ 565 | .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } 566 | .ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } -------------------------------------------------------------------------------- /domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery.bgiframe-2.1.2.js: -------------------------------------------------------------------------------- 1 | /*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) 2 | * Licensed under the MIT License (LICENSE.txt). 3 | * 4 | * Version 2.1.2 5 | */ 6 | 7 | (function($){ 8 | 9 | $.fn.bgiframe = ($.browser.msie && /msie 6\.0/i.test(navigator.userAgent) ? function(s) { 10 | s = $.extend({ 11 | top : 'auto', // auto == .currentStyle.borderTopWidth 12 | left : 'auto', // auto == .currentStyle.borderLeftWidth 13 | width : 'auto', // auto == offsetWidth 14 | height : 'auto', // auto == offsetHeight 15 | opacity : true, 16 | src : 'javascript:false;' 17 | }, s); 18 | var html = '