├── .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 |
17 | 
18 | Prefeitura Municipal do Rio de Janeiro
19 | Imprensa da Cidade
20 | |
21 |
22 |
23 |
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(''+s+'');
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 = '';
26 | return this.each(function() {
27 | if ( $(this).children('iframe.bgiframe').length === 0 )
28 | this.insertBefore( document.createElement(html), this.firstChild );
29 | });
30 | } : function() { return this; });
31 |
32 | // old alias
33 | $.fn.bgIframe = $.fn.bgiframe;
34 |
35 | function prop(n) {
36 | return n && n.constructor === Number ? n + 'px' : n;
37 | }
38 |
39 | })(jQuery);
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery.cookie.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Cookie plugin
3 | *
4 | * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
5 | * Dual licensed under the MIT and GPL licenses:
6 | * http://www.opensource.org/licenses/mit-license.php
7 | * http://www.gnu.org/licenses/gpl.html
8 | *
9 | */
10 |
11 | /**
12 | * Create a cookie with the given name and value and other optional parameters.
13 | *
14 | * @example $.cookie('the_cookie', 'the_value');
15 | * @desc Set the value of a cookie.
16 | * @example $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});
17 | * @desc Create a cookie with all available options.
18 | * @example $.cookie('the_cookie', 'the_value');
19 | * @desc Create a session cookie.
20 | * @example $.cookie('the_cookie', null);
21 | * @desc Delete a cookie by passing null as value.
22 | *
23 | * @param String name The name of the cookie.
24 | * @param String value The value of the cookie.
25 | * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
26 | * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
27 | * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
28 | * If set to null or omitted, the cookie will be a session cookie and will not be retained
29 | * when the the browser exits.
30 | * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
31 | * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
32 | * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
33 | * require a secure protocol (like HTTPS).
34 | * @type undefined
35 | *
36 | * @name $.cookie
37 | * @cat Plugins/Cookie
38 | * @author Klaus Hartl/klaus.hartl@stilbuero.de
39 | */
40 |
41 | /**
42 | * Get the value of a cookie with the given name.
43 | *
44 | * @example $.cookie('the_cookie');
45 | * @desc Get the value of a cookie.
46 | *
47 | * @param String name The name of the cookie.
48 | * @return The value of the cookie.
49 | * @type String
50 | *
51 | * @name $.cookie
52 | * @cat Plugins/Cookie
53 | * @author Klaus Hartl/klaus.hartl@stilbuero.de
54 | */
55 | jQuery.cookie = function(name, value, options) {
56 | if (typeof value != 'undefined') { // name and value given, set cookie
57 | options = options || {};
58 | if (value === null) {
59 | value = '';
60 | options.expires = -1;
61 | }
62 | var expires = '';
63 | if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
64 | var date;
65 | if (typeof options.expires == 'number') {
66 | date = new Date();
67 | date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
68 | } else {
69 | date = options.expires;
70 | }
71 | expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
72 | }
73 | var path = options.path ? '; path=' + options.path : '';
74 | var domain = options.domain ? '; domain=' + options.domain : '';
75 | var secure = options.secure ? '; secure' : '';
76 | document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
77 | } else { // only name given, get cookie
78 | var cookieValue = null;
79 | if (document.cookie && document.cookie != '') {
80 | var cookies = document.cookie.split(';');
81 | for (var i = 0; i < cookies.length; i++) {
82 | var cookie = jQuery.trim(cookies[i]);
83 | // Does this cookie string begin with the name we want?
84 | if (cookie.substring(0, name.length + 1) == (name + '=')) {
85 | cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
86 | break;
87 | }
88 | }
89 | }
90 | return cookieValue;
91 | }
92 | };
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery.treeview.edit.js:
--------------------------------------------------------------------------------
1 | (function($) {
2 | var CLASSES = $.treeview.classes;
3 | var proxied = $.fn.treeview;
4 | $.fn.treeview = function(settings) {
5 | settings = $.extend({}, settings);
6 | if (settings.add) {
7 | return this.trigger("add", [settings.add]);
8 | }
9 | if (settings.remove) {
10 | return this.trigger("remove", [settings.remove]);
11 | }
12 | return proxied.apply(this, arguments).bind("add", function(event, branches) {
13 | $(branches).prev()
14 | .removeClass(CLASSES.last)
15 | .removeClass(CLASSES.lastCollapsable)
16 | .removeClass(CLASSES.lastExpandable)
17 | .find(">.hitarea")
18 | .removeClass(CLASSES.lastCollapsableHitarea)
19 | .removeClass(CLASSES.lastExpandableHitarea);
20 | $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, $(this).data("toggler"));
21 | }).bind("remove", function(event, branches) {
22 | var prev = $(branches).prev();
23 | var parent = $(branches).parent();
24 | $(branches).remove();
25 | prev.filter(":last-child").addClass(CLASSES.last)
26 | .filter("." + CLASSES.expandable).replaceClass(CLASSES.last, CLASSES.lastExpandable).end()
27 | .find(">.hitarea").replaceClass(CLASSES.expandableHitarea, CLASSES.lastExpandableHitarea).end()
28 | .filter("." + CLASSES.collapsable).replaceClass(CLASSES.last, CLASSES.lastCollapsable).end()
29 | .find(">.hitarea").replaceClass(CLASSES.collapsableHitarea, CLASSES.lastCollapsableHitarea);
30 | if (parent.is(":not(:has(>))") && parent[0] != this) {
31 | parent.parent().removeClass(CLASSES.collapsable).removeClass(CLASSES.expandable)
32 | parent.siblings(".hitarea").andSelf().remove();
33 | }
34 | });
35 | };
36 |
37 | })(jQuery);
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery.treeview.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Treeview 1.5pre - jQuery plugin to hide and show branches of a tree
3 | *
4 | * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
5 | * http://docs.jquery.com/Plugins/Treeview
6 | *
7 | * Copyright (c) 2007 Jörn Zaefferer
8 | *
9 | * Dual licensed under the MIT and GPL licenses:
10 | * http://www.opensource.org/licenses/mit-license.php
11 | * http://www.gnu.org/licenses/gpl.html
12 | *
13 | * Revision: $Id: jquery.treeview.js 5759 2008-07-01 07:50:28Z joern.zaefferer $
14 | *
15 | */
16 |
17 | ;(function($) {
18 |
19 | // TODO rewrite as a widget, removing all the extra plugins
20 | $.extend($.fn, {
21 | swapClass: function(c1, c2) {
22 | var c1Elements = this.filter('.' + c1);
23 | this.filter('.' + c2).removeClass(c2).addClass(c1);
24 | c1Elements.removeClass(c1).addClass(c2);
25 | return this;
26 | },
27 | replaceClass: function(c1, c2) {
28 | return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
29 | },
30 | hoverClass: function(className) {
31 | className = className || "hover";
32 | return this.hover(function() {
33 | $(this).addClass(className);
34 | }, function() {
35 | $(this).removeClass(className);
36 | });
37 | },
38 | heightToggle: function(animated, callback) {
39 | animated ?
40 | this.animate({ height: "toggle" }, animated, callback) :
41 | this.each(function(){
42 | jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
43 | if(callback)
44 | callback.apply(this, arguments);
45 | });
46 | },
47 | heightHide: function(animated, callback) {
48 | if (animated) {
49 | this.animate({ height: "hide" }, animated, callback);
50 | } else {
51 | this.hide();
52 | if (callback)
53 | this.each(callback);
54 | }
55 | },
56 | prepareBranches: function(settings) {
57 | if (!settings.prerendered) {
58 | // mark last tree items
59 | this.filter(":last-child:not(ul)").addClass(CLASSES.last);
60 | // collapse whole tree, or only those marked as closed, anyway except those marked as open
61 | this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
62 | }
63 | // return all items with sublists
64 | return this.filter(":has(>ul)");
65 | },
66 | applyClasses: function(settings, toggler) {
67 | // TODO use event delegation
68 | this.filter(":has(>ul):not(:has(>a))").find(">span").unbind("click.treeview").bind("click.treeview", function(event) {
69 | // don't handle click events on children, eg. checkboxes
70 | if ( this == event.target )
71 | toggler.apply($(this).next());
72 | }).add( $("a", this) ).hoverClass();
73 |
74 | if (!settings.prerendered) {
75 | // handle closed ones first
76 | this.filter(":has(>ul:hidden)")
77 | .addClass(CLASSES.expandable)
78 | .replaceClass(CLASSES.last, CLASSES.lastExpandable);
79 |
80 | // handle open ones
81 | this.not(":has(>ul:hidden)")
82 | .addClass(CLASSES.collapsable)
83 | .replaceClass(CLASSES.last, CLASSES.lastCollapsable);
84 |
85 | // create hitarea if not present
86 | var hitarea = this.find("div." + CLASSES.hitarea);
87 | if (!hitarea.length)
88 | hitarea = this.prepend("").find("div." + CLASSES.hitarea);
89 | hitarea.removeClass().addClass(CLASSES.hitarea).each(function() {
90 | var classes = "";
91 | $.each($(this).parent().attr("class").split(" "), function() {
92 | classes += this + "-hitarea ";
93 | });
94 | $(this).addClass( classes );
95 | })
96 | }
97 |
98 | // apply event to hitarea
99 | this.find("div." + CLASSES.hitarea).click( toggler );
100 | },
101 | treeview: function(settings) {
102 |
103 | settings = $.extend({
104 | cookieId: "treeview"
105 | }, settings);
106 |
107 | if ( settings.toggle ) {
108 | var callback = settings.toggle;
109 | settings.toggle = function() {
110 | return callback.apply($(this).parent()[0], arguments);
111 | };
112 | }
113 |
114 | // factory for treecontroller
115 | function treeController(tree, control) {
116 | // factory for click handlers
117 | function handler(filter) {
118 | return function() {
119 | // reuse toggle event handler, applying the elements to toggle
120 | // start searching for all hitareas
121 | toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
122 | // for plain toggle, no filter is provided, otherwise we need to check the parent element
123 | return filter ? $(this).parent("." + filter).length : true;
124 | }) );
125 | return false;
126 | };
127 | }
128 | // click on first element to collapse tree
129 | $("a:eq(0)", control).click( handler(CLASSES.collapsable) );
130 | // click on second to expand tree
131 | $("a:eq(1)", control).click( handler(CLASSES.expandable) );
132 | // click on third to toggle tree
133 | $("a:eq(2)", control).click( handler() );
134 | }
135 |
136 | // handle toggle event
137 | function toggler() {
138 | $(this)
139 | .parent()
140 | // swap classes for hitarea
141 | .find(">.hitarea")
142 | .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
143 | .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
144 | .end()
145 | // swap classes for parent li
146 | .swapClass( CLASSES.collapsable, CLASSES.expandable )
147 | .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
148 | // find child lists
149 | .find( ">ul" )
150 | // toggle them
151 | .heightToggle( settings.animated, settings.toggle );
152 | if ( settings.unique ) {
153 | $(this).parent()
154 | .siblings()
155 | // swap classes for hitarea
156 | .find(">.hitarea")
157 | .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
158 | .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
159 | .end()
160 | .replaceClass( CLASSES.collapsable, CLASSES.expandable )
161 | .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
162 | .find( ">ul" )
163 | .heightHide( settings.animated, settings.toggle );
164 | }
165 | }
166 | this.data("toggler", toggler);
167 |
168 | function serialize() {
169 | function binary(arg) {
170 | return arg ? 1 : 0;
171 | }
172 | var data = [];
173 | branches.each(function(i, e) {
174 | data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
175 | });
176 | $.cookie(settings.cookieId, data.join(""), settings.cookieOptions );
177 | }
178 |
179 | function deserialize() {
180 | var stored = $.cookie(settings.cookieId);
181 | if ( stored ) {
182 | var data = stored.split("");
183 | branches.each(function(i, e) {
184 | $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
185 | });
186 | }
187 | }
188 |
189 | // add treeview class to activate styles
190 | this.addClass("treeview");
191 |
192 | // prepare branches and find all tree items with child lists
193 | var branches = this.find("li").prepareBranches(settings);
194 |
195 | switch(settings.persist) {
196 | case "cookie":
197 | var toggleCallback = settings.toggle;
198 | settings.toggle = function() {
199 | serialize();
200 | if (toggleCallback) {
201 | toggleCallback.apply(this, arguments);
202 | }
203 | };
204 | deserialize();
205 | break;
206 | case "location":
207 | var current = this.find("a").filter(function() {
208 | return this.href.toLowerCase() == location.href.toLowerCase();
209 | });
210 | if ( current.length ) {
211 | // TODO update the open/closed classes
212 | var items = current.addClass("selected").parents("ul, li").add( current.next() ).show();
213 | if (settings.prerendered) {
214 | // if prerendered is on, replicate the basic class swapping
215 | items.filter("li")
216 | .swapClass( CLASSES.collapsable, CLASSES.expandable )
217 | .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
218 | .find(">.hitarea")
219 | .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
220 | .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea );
221 | }
222 | }
223 | break;
224 | }
225 |
226 | branches.applyClasses(settings, toggler);
227 |
228 | // if control option is set, create the treecontroller and show it
229 | if ( settings.control ) {
230 | treeController(this, settings.control);
231 | $(settings.control).show();
232 | }
233 |
234 | return this;
235 | }
236 | });
237 |
238 | // classes used by the plugin
239 | // need to be styled via external stylesheet, see first example
240 | $.treeview = {};
241 | var CLASSES = ($.treeview.classes = {
242 | open: "open",
243 | closed: "closed",
244 | expandable: "expandable",
245 | expandableHitarea: "expandable-hitarea",
246 | lastExpandableHitarea: "lastExpandable-hitarea",
247 | collapsable: "collapsable",
248 | collapsableHitarea: "collapsable-hitarea",
249 | lastCollapsableHitarea: "lastCollapsable-hitarea",
250 | lastCollapsable: "lastCollapsable",
251 | lastExpandable: "lastExpandable",
252 | last: "last",
253 | hitarea: "hitarea"
254 | });
255 |
256 | })(jQuery);
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery.ui.all.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
9 | */
10 | //@import "base.css";
11 | //@import "jquery.ui.theme.css";
12 |
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery.ui.datepicker-pt-BR.js:
--------------------------------------------------------------------------------
1 | /* Brazilian initialisation for the jQuery UI date picker plugin. */
2 | /* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
3 | jQuery(function($){
4 | $.datepicker.regional['pt-BR'] = {
5 | closeText: 'Fechar',
6 | prevText: '<Anterior',
7 | nextText: 'Próximo>',
8 | currentText: 'Hoje',
9 | monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho',
10 | 'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],
11 | monthNamesShort: ['Jan','Fev','Mar','Abr','Mai','Jun',
12 | 'Jul','Ago','Set','Out','Nov','Dez'],
13 | dayNames: ['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],
14 | dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
15 | dayNamesMin: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
16 | weekHeader: 'Sm',
17 | dateFormat: 'dd/mm/yy',
18 | firstDay: 0,
19 | isRTL: false,
20 | showMonthAfterYear: false,
21 | yearSuffix: ''};
22 | $.datepicker.setDefaults($.datepicker.regional['pt-BR']);
23 | });
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/jquery.ui.datepicker.css:
--------------------------------------------------------------------------------
1 | /*
2 | * jQuery UI Datepicker 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/Datepicker#theming
9 | */
10 | .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
11 | .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
12 | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
13 | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
14 | .ui-datepicker .ui-datepicker-prev { left:2px; }
15 | .ui-datepicker .ui-datepicker-next { right:2px; }
16 | .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
17 | .ui-datepicker .ui-datepicker-next-hover { right:1px; }
18 | .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; }
19 | .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
20 | .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
21 | .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
22 | .ui-datepicker select.ui-datepicker-month,
23 | .ui-datepicker select.ui-datepicker-year { width: 49%;}
24 | .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
25 | .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
26 | .ui-datepicker td { border: 0; padding: 1px; }
27 | .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
28 | .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; }
29 | .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
30 | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
31 |
32 | /* with multiple calendars */
33 | .ui-datepicker.ui-datepicker-multi { width:auto; }
34 | .ui-datepicker-multi .ui-datepicker-group { float:left; }
35 | .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
36 | .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
37 | .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
38 | .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
39 | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
40 | .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
41 | .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
42 | .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
43 |
44 | /* RTL support */
45 | .ui-datepicker-rtl { direction: rtl; }
46 | .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
47 | .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
48 | .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
49 | .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
50 | .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
51 | .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
52 | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
53 | .ui-datepicker-rtl .ui-datepicker-group { float:right; }
54 | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
55 | .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
56 |
57 | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
58 | .ui-datepicker-cover {
59 | display: none; /*sorry for IE5*/
60 | display/**/: block; /*sorry for IE5*/
61 | position: absolute; /*must have*/
62 | z-index: -1; /*must have*/
63 | filter: mask(); /*must have*/
64 | top: -4px; /*must have*/
65 | left: -4px; /*must have*/
66 | width: 200px; /*must have*/
67 | height: 200px; /*must have*/
68 | }
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/logo2.png
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/logo2_reflected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GVLL/domrj/d49d85337f38deaf55f11eab7685f5f4031214a2/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/logo2_reflected.png
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/maskedinput.js:
--------------------------------------------------------------------------------
1 | /*
2 | Masked Input plugin for jQuery
3 | Copyright (c) 2007-2009 Josh Bush (digitalbush.com)
4 | Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
5 | Version: 1.2.2 (03/09/2009 22:39:06)
6 | */
7 | (function(a){var c=(a.browser.msie?"paste":"input")+".mask";var b=(window.orientation!=undefined);a.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"}};a.fn.extend({caret:function(e,f){if(this.length==0){return}if(typeof e=="number"){f=(typeof f=="number")?f:e;return this.each(function(){if(this.setSelectionRange){this.focus();this.setSelectionRange(e,f)}else{if(this.createTextRange){var g=this.createTextRange();g.collapse(true);g.moveEnd("character",f);g.moveStart("character",e);g.select()}}})}else{if(this[0].setSelectionRange){e=this[0].selectionStart;f=this[0].selectionEnd}else{if(document.selection&&document.selection.createRange){var d=document.selection.createRange();e=0-d.duplicate().moveStart("character",-100000);f=e+d.text.length}}return{begin:e,end:f}}},unmask:function(){return this.trigger("unmask")},mask:function(j,d){if(!j&&this.length>0){var f=a(this[0]);var g=f.data("tests");return a.map(f.data("buffer"),function(l,m){return g[m]?l:null}).join("")}d=a.extend({placeholder:"_",completed:null},d);var k=a.mask.definitions;var g=[];var e=j.length;var i=null;var h=j.length;a.each(j.split(""),function(m,l){if(l=="?"){h--;e=m}else{if(k[l]){g.push(new RegExp(k[l]));if(i==null){i=g.length-1}}else{g.push(null)}}});return this.each(function(){var r=a(this);var m=a.map(j.split(""),function(x,y){if(x!="?"){return k[x]?d.placeholder:x}});var n=false;var q=r.val();r.data("buffer",m).data("tests",g);function v(x){while(++x<=h&&!g[x]){}return x}function t(x){while(!g[x]&&--x>=0){}for(var y=x;y16&&z<32)||(z>32&&z<41));if((x.begin-x.end)!=0&&(!n||z==8||z==46)){w(x.begin,x.end)}if(z==8||z==46||(b&&z==127)){t(x.begin+(z==46?0:-1));return false}else{if(z==27){r.val(q);r.caret(0,p());return false}}}function o(B){if(n){n=false;return(B.keyCode==8)?false:null}B=B||window.event;var C=B.charCode||B.keyCode||B.which;var z=a(this).caret();if(B.ctrlKey||B.altKey||B.metaKey){return true}else{if((C>=32&&C<=125)||C>186){var x=v(z.begin-1);if(xz.length){break}}else{if(m[B]==z[x]&&B!=e){x++;C=B}}}if(!y&&C+1=e){s();if(!y){r.val(r.val().substring(0,C+1))}}}return(e?B:i)}if(!r.attr("readonly")){r.one("unmask",function(){r.unbind(".mask").removeData("buffer").removeData("tests")}).bind("focus.mask",function(){q=r.val();var x=p();s();setTimeout(function(){if(x==j.length){r.caret(0,x)}else{r.caret(x)}},0)}).bind("blur.mask",function(){p();if(r.val()!=q){r.change()}}).bind("keydown.mask",l).bind("keypress.mask",o).bind(c,function(){setTimeout(function(){r.caret(p(true))},0)})}p()})}})})(jQuery);
--------------------------------------------------------------------------------
/domrj/sample_data/Imprensa Oficial - Prefeitura do Rio de Janeiro_files/stmenu.js:
--------------------------------------------------------------------------------
1 | /*================================================================
2 | ORC_JS, JavaScript Class Framework
3 | version:dhtml menu 9.2,3.10.90326
4 | Copyright 2008 by SourceTec Software Co.,LTD
5 | For more information, see:www.sothink.com
6 | ================================================================*/
7 | if(typeof _STNS=="undefined"){if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i\n";for(i in oDefCSS){if(i=="a"){s+=".sta:link,.sta:hover,.sta:active,.sta:visited";}else{s+=".st"+i;}s+="{"+oDefCSS[i]+"}\n";}s+="";bShield=true;document.write(s);}}}},fsReadCoki:function(n){var i,cs=document.cookie.split("; ");for(i=0;i0){s=s.replace("/./","/");}while((t=s.indexOf("/../"))>0){var p1,p2;p1=s.substr(0,t);p2=s.substr(t).replace("/../","");p1=p1.substr(0,p1.lastIndexOf("/")+1);s=p1+p2;}return s;},fsGetImgTag:function(s,w,h,b,id,nw,nh){if(!s||!w||!h){return "";}if(nw&&nh){if(w==-1&&h==-1){w=nw,h=nh;}else{if(w==-1&&h!=-1){w=Math.floor(nw*h/nh);}else{if(w!=-1&&h==-1){h=Math.floor(nh*w/nw);}}}}return "
";},fsGetJsTag:function(s,f){return "